Criação de uma política de chave - AWS Key Management Service

Criação de uma política de chave

Você pode criar e gerenciar políticas de chaves no console do AWS KMS, usando operações de API do AWS KMS, como CreateKey, ReplicateKey e PutKeyPolicy, ou usando um modelo do AWS CloudFormation.

Ao criar uma chave do KMS no console do AWS KMS, o console conduz você pelas etapas de criação de uma política de chaves com base na política de chaves padrão do console. Ao usar as APIs CreateKey ou ReplicateKey, se você não especificar uma política de chaves, essas APIs aplicam a política de chaves padrão para chaves criadas programaticamente. Ao usar a API PutKeyPolicy ou criar uma chave do KMS usando um modelo do AWS CloudFormation, você precisa especificar uma política de chaves.

Cada documento de política pode ter uma ou mais declarações de política. O exemplo a seguir mostra um documento válido de política de chaves com uma instrução de política.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Describe the policy statement", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "StringEquals": { "kms:KeySpec": "SYMMETRIC_DEFAULT" } } } ] }

Formato de política de chaves

Um documento de política de chaves deve estar de acordo com as seguintes regras:

  • Até 32 kilobytes (32.768 bytes)

  • O elemento Sid em uma instrução de política de chaves pode incluir espaços. (É proibido usar espaços no elemento Sid de um documento de política do IAM.)

Um documento de política de chaves pode incluir apenas os seguintes caracteres:

  • Caracteres ASCII imprimíveis

  • Caracteres imprimíveis no conjunto de caracteres Basic Latin e Latin-1 Supplement

  • Os caracteres especiais de tabulação (\u0009), alimentação de linha (\u000A) e retorno de carro (\u000D)

Elementos em uma política de chaves

Um documento de política de chaves deve ter os elementos a seguir:

Versão

Especifica a versão do documento de política de chaves. Define a versão como 2012-10-17 (a versão mais recente).

Declaração

Inclui as instruções da política. Um documento de política de chaves deve ter pelo menos uma instrução.

Cada instrução de política de chaves pode consistir em até seis elementos. Os elementos Effect, Principal, Action e Resource são obrigatórios.

Sid

(Opcional) O identificador de instrução (Sid) é uma string arbitrária que você pode usar para descrever a instrução. O Sid em uma política de chaves pode incluir espaços. (Você não pode incluir espaços no elemento Sid de uma política do IAM.)

Efeito

(Obrigatório) Determina se as permissões devem ser permitidas ou negadas na instrução de política. Os valores válidos são Allow ou Deny. Se você não permitir explicitamente o acesso a uma chave do KMS, esse acesso será implicitamente negado. Também é possível negar explicitamente o acesso a uma chave do KMS. Você poderia fazer isso para garantir que um usuário não possa acessá-la, mesmo quando uma política diferente permite o acesso.

Entidade principal

(Obrigatório) A entidade principal é a identidade que recebe a especificação de permissões na instrução de política. Você pode especificar Contas da AWS, usuários do IAM, funções do IAM e alguns serviços da AWS como entidades principais em uma política de chaves. Grupos de usuários do IAM não são uma entidade principal válida em nenhum tipo de política.

Quando a entidade em uma declaração de política de chaves é uma entidade principal da Conta da AWS no formato arn:aws:iam::111122223333:root", a declaração da política não dá permissão a nenhuma entidade principal do IAM. Em vez disso, concede a permissão Conta da AWS para usar políticas do IAM para delegar as permissões especificadas na política de chaves. (Uma entidade principal no formato arn:aws:iam::111122223333:root" não representa o usuário raiz de conta da AWS, apesar do uso de “root” no identificador da conta. No entanto, a entidade principal da conta representa a conta e seus administradores, incluindo o usuário raiz da conta.)

Quando a entidade principal é outraConta da AWSou suas entidades principais, as permissões são efetivas somente quando a conta está habilitada na região com a chave do KMS e a política de chaves. Para informações sobre regiões não habilitadas por padrão (“regiões opt-in”), consulte Gerenciar Regiões da AWS, naReferência geral da AWS.

nota

Não defina a entidade principal como um asterisco (*) em qualquer instrução de política de chaves que permita permissões, a menos que você utilize condições para limitar a diretiva de chave. Um asterisco dá à cada identidade em cada permissão da Conta da AWS para usar a chave do KMS, a menos que outra instrução de política negue essa permissão explicitamente. Usuários em outras Contas da AWS apenas precisam de permissões correspondentes do IAM em suas próprias contas para usar a chave do KMS.

Para permitir que uma Conta da AWS diferente ou suas entidades principais usem uma chave do KMS, você deve fornecer permissão em uma política de chaves e em uma política do IAM na outra conta. Para obter mais detalhes, consulte Permitir que usuários de outras contas usem uma chave do KMS.

Ação

(Obrigatório) Especifica as operações de API que serão permitidas ou negadas. Por exemplo, a ação kms:Encrypt corresponde à operação Encrypt do AWS KMS. Você pode listar mais de uma ação em uma declaração de política. Para mais informações, consulte Referência de permissões.

Recurso

(Obrigatório) Em uma política de chaves, o valor do elemento Recurso é "*", o que significa “esta chave do KMS”. O asterisco ("*") identifica a chave do KMS à qual a política de chaves está associada.

nota

Se o elemento Resource necessário estiver ausente de uma declaração de política chave, as APIs CreateKey e PutKeyPolicy têm êxito, mas a declaração de política não tem efeito. Uma declaração de política de chaves sem um elemento Resource não se aplica a nenhuma chave do KMS.

Condição

(Opcional) As condições especificam os requisitos que devem ser atendidos para que a política de chaves entre em vigor. Com condições, a AWS pode avaliar o contexto de uma solicitação de API para determinar se a declaração de política se aplica ou não.

Para especificar condições, você usa chaves de condição predefinidas. O AWS KMS oferece suporte a chaves de condição globais da AWS e chaves de condição do AWS KMS. Para oferecer suporte ao controle de acesso baseado em atributos (ABAC), o AWS KMS fornece chaves de condição que controlam o acesso a uma chave do KMS com base em etiquetas e aliases. Para obter mais detalhes, consulte ABAC para AWS KMS.

O formato de uma condição é:

"Condition": {"condition operator": {"condition key": "condition value"}}

como:

"Condition": {"StringEquals": {"kms:CallerAccount": "111122223333"}}

Para obter mais informações sobre a sintaxe de políticas do AWS, consulte Referência de políticas do AWS IAM, no Manual do usuário do IAM.

Política de chaves de exemplo

O exemplo a seguir mostra uma política de chaves completa para uma chave do KMS de criptografia simétrica. Esta política de chaves combina as declarações da política de exemplo da seção anterior de política de chaves padrão em uma política de chaves única que faz o seguinte:

  • Permite a Conta da AWS de exemplo, 111122223333, acesso total à chave do KMS. Ele permite que a conta e seus administradores, incluindo o usuário raiz da conta, usem políticas do IAM na conta para conceder acesso à chave do KMS.

  • Permite que o usuário do IAM KMSAdminUser e a função do IAM KMSAdminRole administrem a chav do KMS.

  • Permite que o usuário do IAM ExampleUser, a função do IAM ExampleRole e a Conta da AWS 444455556666 usem a chave do KMS.

{ "Version": "2012-10-17", "Id": "key-consolepolicy-2", "Statement": [ { "Sid": "Enable IAM policies", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:root"}, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::111122223333:user/KMSAdminUser", "arn:aws:iam::111122223333:role/KMSAdminRole" ]}, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:TagResource", "kms:UntagResource", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*" }, { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::111122223333:user/ExampleUser", "arn:aws:iam::111122223333:role/ExampleRole", "arn:aws:iam::444455556666:root" ]}, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::111122223333:user/ExampleUser", "arn:aws:iam::111122223333:role/ExampleRole", "arn:aws:iam::444455556666:root" ]}, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": {"Bool": {"kms:GrantIsForAWSResource": "true"}} } ] }