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:
- Permissões para criar ou usar uma política de chave do AWS KMS. Para obter mais informações, consulte Usar políticas de chave no AWS KMS .
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:
No seu diretório
anthos-aws
, useterraform
para obter o ID do seu serviço de gerenciamento. A saída inclui o ID do seu serviço de gerenciamento. No exemplo abaixo, o ID écd anthos-aws terraform output cluster_id
gke-12345abc
.terraform output cluster_id
gke-12345abcCrie 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.