Menggunakan CMK yang dikelola pelanggan untuk mengenkripsi volume

GKE di AWS menggunakan AWS Key Management Service (KMS) untuk mengenkripsi volume EBS. GKE di AWS 1.7 dan yang lebih tinggi mendukung enkripsi volume dengan Customer Master Key (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

Komponen GKE di AWS berikut mendukung volume terenkripsi CMK yang dikelola pelanggan:

  • Volume root bastion host
  • 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 dalam konfigurasi layanan pengelolaan, cluster, dan node pool.

Prasyarat

Untuk menggunakan CMK yang dikelola pelanggan untuk volume root GKE di 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 diberikan 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-nya mencakup ID layanan pengelolaan Anda. Pada contoh di bawah, 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: ID cluster pengelolaan GKE di AWS Anda—misalnya gke-12345678.
    • AWS_USER: nama pengguna AWS Anda.
    • AWS_REGION: Region AWS tempat cluster GKE di AWS Anda berjalan—misalnya us-east1.

Mengonfigurasi resource untuk menggunakan CMK yang dikelola pelanggan

Bagian ini menjelaskan cara mengonfigurasi CMK yang dikelola pelanggan untuk komponen GKE di 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 mengonfigurasi CMK yang dikelola pelanggan untuk volume data etcd dan bidang kontrol cluster pengguna 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 Anda. 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 bastion host
  • 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 di Mengupgrade GKE di AWS. Saat Anda mengubah konfigurasi resource, ubah kolom berikut:

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

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

Langkah berikutnya