Ajudar a melhorar esta página
Quer contribuir para este guia do usuário? Role até o final desta página e selecione Editar esta página no GitHub. Suas contribuições ajudarão a tornar nosso guia do usuário melhor para todos.
Criptografar segredos do Kubernetes com o AWS KMS em clusters existentes
Se você habilitar a criptografia de segredos, os segredos do Kubernetes serão criptografados usando a AWS KMS key selecionada. A chave do KMS deve atender às seguintes condições:
-
Simétrica
-
Pode criptografar e descriptografar dados
-
Criação concluída na mesma Região da AWS do cluster
-
Se a chave do KMS tiver sido criada em uma conta diferente, a entidade principal do IAM deverá ter acesso à chave do KMS.
Para obter mais informações, consulte Permitir que entidades principais do IAM em outras contas usem uma chave do KMS no Guia do desenvolvedor do AWS Key Management Service.
Não é possível desativar a criptografia de segredos depois de habilitá-la. Essa ação é irreversível.
- eksctl
-
É possível ativar a criptografia de duas formas:
-
Adicione criptografia ao cluster com um único comando.
Para recriptografar seus segredos automaticamente, execute o comando a seguir.
eksctl utils enable-secrets-encryption \
--cluster my-cluster
\
--key-arn arn:aws:kms:region-code
:account
:key/key
Para optar por não recriptografar seus segredos automaticamente, execute o comando a seguir.
eksctl utils enable-secrets-encryption
--cluster my-cluster
\
--key-arn arn:aws:kms:region-code
:account
:key/key
\
--encrypt-existing-secrets=false
-
Adicione criptografia ao cluster com um arquivo kms-cluster.yaml
.
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: my-cluster
region: region-code
secretsEncryption:
keyARN: arn:aws:kms:region-code
:account
:key/key
Para que seus segredos sejam recriptografados automaticamente, execute o comando a seguir.
eksctl utils enable-secrets-encryption -f kms-cluster.yaml
Para optar por não recriptografar seus segredos automaticamente, execute o comando a seguir.
eksctl utils enable-secrets-encryption -f kms-cluster.yaml --encrypt-existing-secrets=false
- AWS Management Console
-
Abra o console do Amazon EKS em https://console.aws.amazon.com/eks/home#/clusters.
-
Escolha o cluster ao qual você deseja adicionar a criptografia do KMS.
-
Escolha a guia Overview (Visão geral) (selecionada por padrão).
-
Role para baixo até Secrets encryption (Criptografia de segredos) e escolha Enable (Habilitar).
-
Selecione uma chave na lista suspenso e escolha Enable (Habilitar). Se nenhuma chave estiver listada, primeiro você deve criar uma. Para obter mais informações, consulte Criar chaves
-
Escolha o botão Confirm (Confirmar) para usar a chave escolhida.
- AWS CLI
-
-
Associe a configuração da criptografia de segredos ao seu cluster usando o seguinte comando da AWS CLI: Substitua example values
pelos seus próprios valores.
aws eks associate-encryption-config \
--cluster-name my-cluster
\
--encryption-config '[{"resources":["secrets"],"provider":{"keyArn":"arn:aws:kms:region-code
:account
:key/key
"}}]'
Veja um exemplo de saída abaixo.
{
"update": {
"id": "3141b835-8103-423a-8e68-12c2521ffa4d
",
"status": "InProgress",
"type": "AssociateEncryptionConfig",
"params": [
{
"type": "EncryptionConfig",
"value": "[{\"resources\":[\"secrets\"],\"provider\":{\"keyArn\":\"arn:aws:kms:region-code
:account
:key/key
\"}}]"
}
],
"createdAt": 1613754188.734
,
"errors": []
}
}
-
Você pode monitorar o status da atualização da criptografia com o comando a seguir. Utilize o cluster name
e o update ID
específicos que foram retornados na saída anterior. Quando um status de Successful
for exibido, significa que a atualização está concluída.
aws eks describe-update \
--region region-code
\
--name my-cluster
\
--update-id 3141b835-8103-423a-8e68-12c2521ffa4d
Veja um exemplo de saída abaixo.
{
"update": {
"id": "3141b835-8103-423a-8e68-12c2521ffa4d
",
"status": "Successful",
"type": "AssociateEncryptionConfig",
"params": [
{
"type": "EncryptionConfig",
"value": "[{\"resources\":[\"secrets\"],\"provider\":{\"keyArn\":\"arn:aws:kms:region-code
:account
:key/key
\"}}]"
}
],
"createdAt": 1613754188.734>,
"errors": []
}
}
-
Para verificar se a criptografia está habilitada no cluster, execute comando describe-cluster
. A resposta contém uma string EncryptionConfig
.
aws eks describe-cluster --region region-code
--name my-cluster
Depois de habilitar a criptografia no cluster, você precisa criptografar todos os segredos existentes com a nova chave:
Se você utilizar eksctl
, apenas será necessário executar o seguinte comando se você optar por não recriptografar seus segredos automaticamente:
kubectl get secrets --all-namespaces -o json | kubectl annotate --overwrite -f - kms-encryption-timestamp="time value
"
Se você habilitar a criptografia de segredos para um cluster existente e se algum dia a chave do KMS usada for excluída, não haverá maneira de recuperar o cluster. Se você excluir a chave do KMS, colocará permanentemente o cluster em um estado degradado. Para informações, consulte Exclusão das chaves do AWS KMS.
Por padrão, o comando create-key
cria uma chave do KMS simétrica de criptografia com uma política de chave que dá acesso ao administrador raiz da conta às ações e recursos do AWS KMS. Se você quiser reduzir o escopo das permissões, certifique-se de que as ações kms:DescribeKey
e kms:CreateGrant
sejam permitidas na política para a entidade principal que chama a API create-cluster
.
Para clusters que usam criptografia envelopada do KMS, são necessárias permissões kms:CreateGrant
. A condição kms:GrantIsForAWSResource
não tem suporte para a ação CreateCluster e não deve ser utilizada nas políticas do KMS para controlar permissões kms:CreateGrant
de usuários que executam CreateCluster.