AWS KMS principais políticas e permissões para criptografar resultados de CloudFormation Hooks em repouso - CloudFormation

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

AWS KMS principais políticas e permissões para criptografar resultados de CloudFormation Hooks em repouso

Este tópico descreve como configurar a política de AWS KMS chaves e as permissões necessárias ao especificar uma chave gerenciada pelo cliente para criptografar dados de anotações do Hooks que estão disponíveis na API. GetHookResult

nota

CloudFormation O Hooks não precisa de autorização adicional para usar o padrão Chave pertencente à AWS para criptografar dados de anotações em sua conta.

Visão geral do

O seguinte AWS KMS keys pode ser usado para criptografar dados de anotações do Hook:

  • Chave pertencente à AWS— Por padrão, CloudFormation usa an Chave pertencente à AWS para criptografar dados. Você não pode visualizar, gerenciar Chaves pertencentes à AWS, usar ou auditar seu uso. No entanto, você não precisa realizar uma configuração explícita para proteger a chave usada para criptografar seus dados. Chaves pertencentes à AWS são fornecidos gratuitamente (sem taxas mensais ou taxas de uso). A menos que você precise auditar ou controlar a chave de criptografia que protege seus dados de anotações, uma Chave pertencente à AWS é uma boa escolha.

  • Chave gerenciada pelo cliente — CloudFormation suporta o uso de uma chave simétrica gerenciada pelo cliente que você cria, possui e gerencia para adicionar uma segunda camada de criptografia sobre a existente Chave pertencente à AWS. AWS KMS cobranças se aplicam. Para obter mais informações, consulte Criação de chaves Guia do desenvolvedor do AWS Key Management Service . Para gerenciar sua chave, use o AWS Key Management Service (AWS KMS) no AWS KMS console AWS CLI, no ou na AWS KMS API. Para obter mais informações, consulte o Guia do desenvolvedor do AWS Key Management Service.

Você pode configurar chaves gerenciadas pelo cliente ao criar e atualizar Hooks. Quando você fornece sua chave gerenciada pelo cliente, CloudFormation usa essa chave para criptografar os dados das anotações antes de armazená-los. Quando os dados das anotações são acessados posteriormente durante a operação da GetHookResult API, eles CloudFormation são automaticamente descriptografados. Para obter informações sobre como configurar sua chave de criptografia para Hooks, consulte. Referência de sintaxe de esquema de configuração de hook

Importante

Observe que a KmsKeyId opção de especificar uma chave gerenciada pelo cliente atualmente só está disponível quando você usa o AWS CLI para configurar seu Hook.

Usar o contexto de criptografia para controlar o acesso à chave gerenciada pelo cliente

CloudFormation O Hooks inclui automaticamente o contexto de criptografia em cada operação de armazenamento e recuperação de anotações. Isso permite que você defina condições de contexto de criptografia em sua política de chaves para garantir que a chave só possa ser usada para ganchos específicos:

  • kms:EncryptionContext:aws:cloudformation:hooks:service— Garante que a chave seja usada apenas pelo serviço CloudFormation Hooks.

  • kms:EncryptionContext:aws:cloudformation:account-id— Impede o uso de chaves entre contas combinando seu Conta da AWS ID.

  • kms:EncryptionContext:aws:cloudformation:arn— Restrinja o uso a ganchos específicos usando padrões ARN.

Essas condições fornecem proteção adicional contra ataques confusos por meio da vinculação criptográfica dos dados criptografados ao contexto específico do Hook.

Política de chave do KMS gerenciada pelo cliente

Ao criar sua chave gerenciada pelo cliente, você deve definir sua política de chaves para permitir que o serviço CloudFormation Hooks realize AWS KMS operações. Para usar a política principal a seguir, substitua-a placeholder values por suas próprias informações.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnableIAMUserDescribeKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "cloudformation.us-east-1.amazonaws.com" } } }, { "Sid": "EnableIAMUserGenerateDataKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "cloudformation.us-east-1.amazonaws.com", "kms:EncryptionContext:aws:cloudformation:hooks:service": "hooks.cloudformation.amazonaws.com", "kms:EncryptionContext:aws:cloudformation:account-id": "111122223333" }, "StringLike": { "kms:EncryptionContext:aws:cloudformation:arn": "arn:aws:cloudformation:*:111122223333:hook/*" } } }, { "Sid": "EnableIAMUserDecrypt", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "cloudformation.us-east-1.amazonaws.com" } } }, { "Sid": "AllowHooksServiceDescribeKey", "Effect": "Allow", "Principal": { "Service": "hooks.cloudformation.amazonaws.com" }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "StringLike": { "aws:SourceArn": "arn:aws:cloudformation:*:111122223333:hook/*" } } }, { "Sid": "AllowHooksService", "Effect": "Allow", "Principal": { "Service": "hooks.cloudformation.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333", "kms:EncryptionContext:aws:cloudformation:hooks:service": "hooks.cloudformation.amazonaws.com", "kms:EncryptionContext:aws:cloudformation:account-id": "111122223333" }, "StringLike": { "aws:SourceArn": "arn:aws:cloudformation:*:111122223333:hook/*", "kms:EncryptionContext:aws:cloudformation:arn": "arn:aws:cloudformation:*:111122223333:hook/*" } } } ] }

Essa política concede permissões para as funções do IAM (as três primeiras instruções) e para o serviço CloudFormation Hooks (as duas últimas instruções). A chave de kms:ViaService condição garante que a chave KMS só possa ser usada CloudFormation, evitando chamadas diretas à API KMS. As principais operações são:

  • kms:DescribeKey— Valida as principais propriedades e metadados. Essa operação está em instruções separadas porque não pode ser usada com condições de contexto de criptografia.

  • kms:GenerateDataKey— Gera chaves de criptografia de dados para criptografar anotações antes do armazenamento. Essa operação inclui condições de contexto de criptografia para controle de acesso com escopo definido.

  • kms:Decrypt— Descriptografa dados de anotações previamente criptografados. Para funções do IAM, isso inclui a kms:ViaService condição. Para o responsável pelo serviço, isso inclui condições de contexto de criptografia.

As chaves de aws:SourceArn condição aws:SourceAccount e fornecem a proteção primária contra ataques confusos de deputados. As condições do contexto de criptografia fornecem camadas adicionais de validação. Para obter mais informações, consulte Uso aws:SourceArn ou chaves de aws:SourceAccount condição no Guia do AWS Key Management Service desenvolvedor.

Importante

As funções de execução do Hook não precisam de AWS KMS permissões. O diretor de serviço da CloudFormation Hooks realiza todas as AWS KMS operações.

Permissões KMS para API SetTypeConfiguration

Durante a chamada da SetTypeConfigurationAPI, CloudFormation valida as permissões do usuário para criptografar os dados das anotações com a chave especificada. AWS KMS Adicione a seguinte política do IAM ao usuário ou função que configurará a criptografia usando a SetTypeConfiguration API. arn:aws:kms:us-east-1:123456789012:key/abc-123Substitua pelo ARN da sua chave gerenciada pelo cliente.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cloudformation:SetTypeConfiguration", "Resource": "*" }, { "Effect": "Allow", "Action": "kms:DescribeKey", "Resource": "arn:aws:kms:us-east-1:123456789012:key/abc-123" }, { "Effect": "Allow", "Action": "kms:GenerateDataKey", "Resource": "arn:aws:kms:us-east-1:123456789012:key/abc-123", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:cloudformation:hooks:service": "hooks.cloudformation.amazonaws.com", "kms:EncryptionContext:aws:cloudformation:account-id": "123456789012" }, "StringLike": { "kms:EncryptionContext:aws:cloudformation:arn": "arn:aws:cloudformation:*:123456789012:hook/*" } } } ] }

Permissões KMS para API GetHookResult

GetHookResultPara solicitar Hooks que usem sua chave gerenciada pelo cliente, os usuários devem ter kms:Decrypt permissão para essa chave. Adicione a seguinte política do IAM ao usuário ou função que chamaráGetHookResult. arn:aws:kms:us-east-1:123456789012:key/abc-123Substitua pelo ARN da sua chave gerenciada pelo cliente.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cloudformation:GetHookResult", "Resource": "*" }, { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:us-east-1:123456789012:key/abc-123" } ] }