Usando uma CMK gerenciada pelo cliente para criptografar volumes

O GKE na AWS usa o AWS Key Management Service (KMS) para criptografar volumes do EBS. O GKE na AWS 1.7 e versões superiores oferece suporte à criptografia de volumes com Chaves Mestras do Cliente (CMKs) gerenciadas pelo cliente. As versões 1.6.x e inferiores do GKE na AWS oferecem suporte apenas às Chaves Mestras do Cliente gerenciadas pela AWS .

Este tópico descreve como configurar a CMK gerenciada pelo cliente para criptografar volumes. Se você não configurar a CMK gerenciada pelo cliente, o GKE na AWS usará as CMKs gerenciadas pela AWS por padrão.

Visão geral

Os seguintes componentes do GKE na AWS oferecem suporte a volumes criptografados CMK gerenciados pelo cliente:

  • Volume raiz do host Bastion
  • Volumes raiz do serviço de gerenciamento
  • Volumes de dados do serviço de gerenciamento etcd
  • Volumes raiz do plano de controle do cluster de usuário
  • Volumes de dados etcd do plano de controle do cluster do usuário
  • Volumes raiz do nó do cluster do usuário

Você especifica chaves na configuração do seu serviço de gerenciamento, cluster e pool de nós.

Pré-requisitos

Para usar o CMK gerenciado pelo cliente para o GKE em volumes raiz da AWS, você precisa do seguinte:

Crie uma política de chave

Suas chaves do AWS KMS devem ter uma política de chaves que permita ao GKE na AWS criar e ler volumes criptografados com uma CMK gerenciada pelo cliente. Um exemplo de política é fornecido na seção a seguir. Para criar a política, siga estas etapas:

  1. No seu diretório anthos-aws , use terraform para obter o ID do seu serviço de gerenciamento.

    cd anthos-aws
    terraform output cluster_id
    A saída inclui o ID do seu serviço de gerenciamento. No exemplo abaixo, o ID é gke-12345abc .
    terraform output cluster_id
    gke-12345abc
    

  2. Crie uma política de chave do AWS KMS com o seguinte conteúdo:

    {
        "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"
                    }
                }
            }
        ]
    }
    

    Substitua o seguinte:

    • ACCOUNT_NUMBER : seu número de conta da AWS — por exemplo, 1234567890 .
    • CLUSTER_ID : seu ID de cluster de gerenciamento do GKE na AWS — por exemplo, gke-12345678 .
    • AWS_USER : seu nome de usuário da AWS.
    • AWS_REGION : a região da AWS onde seus clusters do GKE na AWS são executados — por exemplo, us-east1 .

Configurando recursos para usar um CMK gerenciado pelo cliente

Esta seção explica como configurar a CMK gerenciada pelo cliente para componentes do GKE na AWS. Antes de atualizar componentes existentes, consulte Usando a CMK com clusters existentes .

Serviço de hospedagem e gerenciamento Bastion

Configure uma CMK gerenciada pelo cliente para o volume raiz do seu bastion host, o volume raiz do serviço de gerenciamento e os volumes de dados etcd do serviço de gerenciamento no seu anthos-gke.yaml antes de configurar o serviço de gerenciamento. Para obter mais informações, consulte Integração da infraestrutura existente e a referência do AWSManagementService .

Volumes do plano de controle do cluster de usuário

Configure uma CMK gerenciada pelo cliente para o plano de controle do cluster de usuários e os volumes de dados do etcd na sua definição do AWSCluster . Para obter mais informações, consulte Criação de um cluster de usuários personalizado .

Volumes raiz do nó do cluster do usuário

Configure uma CMK gerenciada pelo cliente nos volumes raiz do nó do cluster de usuário na sua definição do AWSNodePool . Para obter mais informações, consulte Criação de um cluster de usuário personalizado .

Usando CMK com clusters existentes

Você pode adicionar a configuração do CMK gerenciada pelo cliente aos seguintes componentes existentes:

  • Volume raiz do host Bastion
  • Volumes raiz do serviço de gerenciamento
  • Volumes raiz do plano de controle do cluster de usuário
  • Volumes raiz do nó do cluster do usuário

O GKE na AWS recria esses volumes após uma atualização ou alteração de configuração. Para adicionar a configuração da CMK gerenciada pelo cliente aos componentes existentes, siga as instruções em Atualizando o GKE na AWS . Ao modificar a configuração do seu recurso, altere os seguintes campos:

Recurso Campo
Serviço de Gerenciamento AWS spec.rootVolume and spec.bastionHost.rootVolume
AWSCluster spec.controlPlane.rootVolume
Conjuntos de nós da AWS spec.rootVolume

Ao concluir a atualização, o GKE na AWS cria novos recursos com os volumes CMK gerenciados pelo cliente anexados.

O que vem a seguir