Como resolvo o erro “A nova política de chaves não permitirá que você atualize a política de chaves no futuro” quando tento criar uma chave do AWS KMS usando o AWS CloudFormation?

4 minuto de leitura
0

Quando eu crio uma chave do AWS KMS e defino uma política de chave do AWS Key Management Service (AWS KMS) usando o AWS CloudFormation, a criação da chave do AWS KMS falha. Em seguida, recebo a seguinte mensagem de erro: “A nova política de chaves não permitirá que você atualize a política de chaves no futuro.”

Breve descrição

O AWS KMS realiza verificações de segurança quando uma política importante é criada. Uma verificação de segurança confirma que o diretor na política de chaves tem as permissões necessárias para criar a API CreateKey e a API PutKeyPolicy. Essa verificação elimina a possibilidade de a chave do AWS KMS se tornar incontrolável, o que significa que você não pode alterar a política da chave nem excluir a chave.

Importante: Certifique-se de que a política de chaves que você criou permita que o usuário atual administre a chave do AWS KMS.

Resolução

Quando você cria uma pilha do AWS CloudFormation, um usuário ou perfil do AWS Identity and Access Management (IAM) é usado para fazer a chamada da API CreateStack. Esse usuário também é usado para criar recursos especificados no modelo do AWS CloudFormation.

1.    Ao criar uma chave do AWS KMS usando o AWS CloudFormation, escolha o mesmo usuário ou perfil do IAM que é o administrador principal da chave do AWS KMS.

No exemplo a seguir, a pilha do AWS CloudFormation é criada pelo usuário do IAM arn:aws:iam::123456789012:user/alice. O diretor é designado como administrador da chave. Agora, o usuário do IAM “Alice” pode modificar a política de chaves após a criação da política de chaves.

"Type" : "AWS::KMS::Key",
  "Properties" : {
      "Description" : "A sample key",
      "KeyPolicy" : {
          "Version": "2012-10-17",
          "Id": "key-default-1",
          "Statement": [
              {
                  "Sid": "Allow administration of the key",
                  "Effect": "Allow",
                  "Principal": { "AWS": "arn:aws:iam::123456789012:user/Alice" },
                  "Action": [
                      "kms:Create*",
                      "kms:Describe*",
                      "kms:Enable*",
                      "kms:List*",
                      "kms:Put*",
                      "kms:Update*",
                      "kms:Revoke*",
                      "kms:Disable*",
                      "kms:Get*",
                      "kms:Delete*",
                      "kms:ScheduleKeyDeletion",
                      "kms:CancelKeyDeletion"
                  ],
                  "Resource": "*"
              },
              {
                  "Sid": "Allow use of the key",
                  "Effect": "Allow",
                  "Principal": { "AWS": "arn:aws:iam::123456789012:user/Bob" },
                  "Action": [
                      "kms:Encrypt",
                      "kms:Decrypt",
                      "kms:ReEncrypt*",
                      "kms:GenerateDataKey*",
                      "kms:DescribeKey"
                  ],
                  "Resource": "*"
              }
          ]
      }
    }
  }

2.    Defina o administrador principal da chave ou defina o usuário raiz da conta da AWS como administrador principal da chave.

Para definir o administrador principal da chave, use o nome do recurso da Amazon (ARN):

Se sua pilha do AWS CloudFormation for criada por uma conta de usuário SAML ou federada pela web, defina o principal como o perfil assumido pelo usuário para o ARN. Por exemplo:

"Principal": { "AWS": "arn:aws:sts::123456789012:assumed-role/FederatedAccess/FederatedUsername" }

Observação: o nome do perfil do IAM é FederatedAccess e o nome do usuário federado é FederatedUsername.

Se o perfil de serviço do AWS CloudFormation for usado para criar a pilha, defina a entidade principal como o ARN do perfil de serviço. Por exemplo:

"Principal": { "AWS": "arn:aws:iam::123456789012:role/ServiceRoleName” }

Observação: o nome do perfil de serviço do AWS CloudFormation é ServiceRoleName.

Para definir o usuário raiz da conta da AWS como administrador principal da chave, veja o exemplo a seguir:

"Principal": { "AWS": "arn:aws:iam::123456789012:root" }

Observação: se o administrador principal da chave estiver configurado como o ARN raiz, verifique se você tem as permissões corretas. O usuário, perfil ou perfil de serviço do IAM que cria a pilha do AWS CloudFormation deve ter as permissões do IAM para fazer as chamadas de API CreateKey e PutKeyPolicy.


Informações relacionadas

Serviço de gerenciamento de chaves da AWS

Autenticação e controle de acesso para o AWS KMS

AWS OFICIAL
AWS OFICIALAtualizada há um ano