Ativar criptografia de segredos em um cluster existente - Amazon EKS

Ativar criptografia de segredos em um cluster existente

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.

Atenção

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
  1. Abra o console do Amazon EKS em https://console.aws.amazon.com/eks/home#/clusters.

  2. Escolha o cluster ao qual você deseja adicionar a criptografia do KMS.

  3. Escolha a guia Overview (Visão geral) (selecionada por padrão).

  4. Role para baixo até Secrets encryption (Criptografia de segredos) e escolha Enable (Habilitar).

  5. 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

  6. Escolha o botão Confirm (Confirmar) para usar a chave escolhida.

AWS CLI
  1. 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": []   } }
  2. 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": []   } }
  3. 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:

nota

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"
Atenção

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.

nota

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.