Menggunakan CMK yang dikelola pelanggan untuk mengenkripsi volume

GKE di AWS menggunakan AWS Key Management Service (KMS) untuk mengenkripsi volume EBS. GKE pada AWS 1.7 dan yang lebih tinggi mendukung enkripsi volume dengan Customer Master Keys (CMK) yang dikelola pelanggan. GKE di AWS versi 1.6.x dan yang lebih rendah hanya mendukung AWS Managed Customer Master Keys.

Topik ini menjelaskan cara menyiapkan CMK yang dikelola pelanggan untuk mengenkripsi volume. Jika Anda tidak menyiapkan CMK yang dikelola pelanggan, GKE di AWS akan menggunakan CMK yang dikelola AWS secara default.

Ringkasan

GKE pada komponen AWS berikut mendukung volume yang dienkripsi CMK yang dikelola pelanggan:

  • Volume root host bastion
  • Volume root layanan pengelolaan
  • Volume data etcd layanan pengelolaan
  • Volume root bidang kontrol cluster pengguna
  • Volume data etcd bidang kontrol cluster pengguna
  • Volume root node cluster pengguna

Anda menentukan kunci di konfigurasi layanan pengelolaan, cluster, dan kumpulan node.

Prasyarat

Untuk menggunakan CMK yang dikelola pelanggan untuk GKE pada volume root AWS, Anda memerlukan hal berikut:

Membuat kebijakan kunci

Kunci AWS KMS Anda harus memiliki kebijakan kunci yang memungkinkan GKE di AWS membuat dan membaca volume yang dienkripsi dengan CMK yang dikelola pelanggan. Contoh kebijakan disediakan di bagian berikut. Untuk membuat kebijakan, lakukan langkah-langkah berikut:

  1. Dari direktori anthos-aws, gunakan terraform untuk mendapatkan ID layanan pengelolaan Anda.

    cd anthos-aws
    terraform output cluster_id
    Output mencakup ID layanan pengelolaan Anda. Dalam contoh di bawah ini, ID-nya adalah gke-12345abc.
    terraform output cluster_id
    gke-12345abc
    

  2. Buat kebijakan kunci AWS KMS dengan konten berikut:

    {
        "Version": "2012-10-17",
        "Id": "key-consolepolicy-3",
        "Statement": [
            {
                "Sid": "Enable IAM User Permissions",
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam::ACCOUNT_NUMBER:root"
                },
                "Action": "kms:*",
                "Resource": "*"
            },
            {
                "Sid": "Allow creating encrypted EBS volumes for EC2 use",
                "Effect": "Allow",
                "Principal": {
                    "AWS": [
                        "arn:aws:iam::ACCOUNT_NUMBER:role/gke-CLUSTER_ID-management",
                        "arn:aws:iam::ACCOUNT_NUMBER:user/AWS_USER",
                        "arn:aws:iam::ACCOUNT_NUMBER:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
                    ]
                },
                "Action": [
                    "kms:GenerateDataKeyWithoutPlaintext",
                    "kms:Decrypt"
                ],
                "Resource": "*",
                "Condition": {
                    "StringEquals": {
                        "kms:CallerAccount": "ACCOUNT_NUMBER",
                        "kms:ViaService": "ec2.AWS_REGION.amazonaws.com"
                    }
                }
            },
            {
                "Sid": "Allow attaching encrypted EBS volumes for EC2 Use",
                "Effect": "Allow",
                "Principal": {
                    "AWS": [
                        "arn:aws:iam::ACCOUNT_NUMBER:role/CLUSTER_ID-management",
                        "arn:aws:iam::ACCOUNT_NUMBER:role/CLUSTER_ID-controlplane",
                        "arn:aws:iam::ACCOUNT_NUMBER:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
                    ]
                },
                "Action": [
                    "kms:CreateGrant",
                    "kms:ListGrants",
                    "kms:RevokeGrant"
                ],
                "Resource": "*",
                "Condition": {
                    "StringEquals": {
                        "kms:CallerAccount": "ACCOUNT_NUMBER",
                        "kms:ViaService": "ec2.AWS_REGION.amazonaws.com"
                    }
                }
            }
        ]
    }
    

    Ganti kode berikut:

    • ACCOUNT_NUMBER: nomor akun AWS Anda—misalnya, 1234567890.
    • CLUSTER_ID: GKE Anda di ID cluster pengelolaan AWS— misalnya gke-12345678.
    • AWS_USER: nama pengguna AWS Anda.
    • AWS_REGION: Region AWS tempat GKE Anda pada cluster AWS berjalan—misalnya us-east1.

Mengonfigurasi resource untuk menggunakan CMK yang dikelola pelanggan

Bagian ini menjelaskan cara mengonfigurasi CMK yang dikelola pelanggan untuk GKE pada komponen AWS. Sebelum mengupgrade komponen yang ada, lihat Menggunakan CMK dengan cluster yang ada.

Bastion host dan layanan pengelolaan

Anda mengonfigurasi CMK yang dikelola pelanggan untuk volume root host bastion, volume root layanan pengelolaan, dan volume data etcd layanan pengelolaan di anthos-gke.yaml sebelum menyiapkan layanan pengelolaan. Untuk mengetahui informasi selengkapnya, lihat referensi Mengintegrasikan infrastruktur yang ada dan AWSManagementService.

Volume bidang kontrol cluster pengguna

Anda dapat mengonfigurasi CMK yang dikelola pelanggan untuk bidang kontrol cluster pengguna dan volume data dll. dalam definisi AWSCluster. Untuk mengetahui informasi selengkapnya, lihat Membuat cluster pengguna kustom.

Volume root node cluster pengguna

Anda mengonfigurasi CMK yang dikelola pelanggan pada volume root node cluster pengguna dalam definisi AWSNodePool. Untuk mengetahui informasi selengkapnya, lihat Membuat cluster pengguna kustom.

Menggunakan CMK dengan cluster yang ada

Anda dapat menambahkan konfigurasi CMK yang dikelola pelanggan ke komponen yang ada berikut:

  • Volume root host bastion
  • Volume root layanan pengelolaan
  • Volume root bidang kontrol cluster pengguna
  • Volume root node cluster pengguna

GKE di AWS membuat ulang volume ini setelah upgrade atau perubahan konfigurasi. Untuk menambahkan konfigurasi CMK yang dikelola pelanggan ke komponen yang ada, ikuti petunjuk dalam artikel Mengupgrade GKE di AWS. Saat mengubah konfigurasi resource, ubah kolom berikut:

Resource Kolom
AWSManagementService spec.rootVolume and spec.bastionHost.rootVolume
AWSCluster spec.controlPlane.rootVolume
AWSNodePools spec.rootVolume

Setelah Anda menyelesaikan upgrade, GKE di AWS akan membuat resource baru dengan volume CMK yang dikelola pelanggan terlampir.

Langkah selanjutnya