Política de chaves padrão - AWS Key Management Service

Política de chaves padrão

Ao criar uma chave do KMS, é possível especificar a política de chaves da nova chave do KMS. Se você não fornecer uma, o AWS KMS criará um para você. A política de chaves padrão que o AWS KMS usa difere, dependendo se você criar a chave no console do AWS KMS ou se usar a API do AWS KMS.

Política de chaves padrão ao criar uma chave do KMS de forma programática

Ao criar uma chave do KMS de forma programática com a API do AWS KMS (inclusive usando os SDKs da AWS, AWS Command Line Interface ou AWS Tools for PowerShell), e você não especifica uma política de chaves, o AWS KMS aplica uma política de chaves padrão muito simples. Esta política de chaves padrão tem uma instrução de política que concede à Conta da AWS que possui a permissão da chave do KMS para usar políticas do IAM para conceder acesso a todas as operações do AWS KMS na chave do KMS. Para obter mais informações sobre essa declaração de política, consulte Permitir acesso à Conta da AWS e habilita políticas do IAM.

Política de chaves padrão ao criar uma chave do KMS com o AWS Management Console

Quando você cria uma chave do KMS com o AWS Management Console, a política de chaves começa com a declaração de política que permite acesso à Conta da AWS e habilita políticas do IAM. Em seguida, o console adiciona uma declaração dos administradores da chave, uma declaração dos usuários da chave e (para a maioria dos tipos de chaves) uma instrução que permite que as entidades principais usem a chave do KMS com outros serviços da AWS. É possível usar os recursos do console do AWS KMS para especificar os usuários e funções do IAM e as Contas da AWS que são administradores da chave e aqueles que são usuários da chave (ou ambos).

Permissões

Permitir acesso à Conta da AWS e habilita políticas do IAM

A declaração de política de chave padrão a seguir é fundamental.

  • Ela concede à Conta da AWS que possui a chave do KMS acesso total à chave do KMS.

    Ao contrário de outras políticas de recursos da AWS, uma política de chaves do AWS KMS não dá permissão automaticamente à conta ou a nenhum de seus usuários. Para dar permissão aos administradores de conta, a política de chaves deve incluir uma declaração explícita que forneça essa permissão, como esta.

  • Ele permite que a conta use políticas do IAM para permitir acesso à chave do KMS, além da política de chaves.

    Sem essa permissão, as políticas do IAM que permitem o acesso à chave são ineficazes, embora as políticas do IAM que negam acesso à chave ainda sejam efetivas.

  • Ela reduz o risco de a chave se tornar não gerenciável, dando permissão de controle de acesso aos administradores da conta, incluindo o usuário raiz da conta, que não pode ser excluído.

A declaração de política de chaves a seguir é toda a política de chaves padrão para chaves do KMS criadas programaticamente. É a primeira declaração de política na política de chaves padrão para chaves do KMS criadas no console do AWS KMS.

{ "Sid": "Enable IAM policies", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": "kms:*", "Resource": "*" }
Permite que políticas do IAM permitam o acesso à chave do KMS.

A declaração de política principal mostrada acima fornece a Conta da AWS que possui a permissão de chave para usar políticas do IAM, bem como políticas de chaves, para permitir todas as ações (kms:*) na chave do KMS.

A entidade principal nesta declaração de política de chave é a entidade principal da conta, que é representada por um ARN neste formato: arn:aws:iam::account-id:root. A entidade principal da conta representa a conta da AWS e seus administradores.

Quando a entidade principal em uma declaração de política de chave é a conta principal, a declaração de política não dá permissãopara uso da chave do KMS a nenhum usuário ou função do IAM. Em vez disso, ela permite que a conta use políticas do IAM para delegar as permissões especificadas na política de chaves. Essa declaração de política de chaves padrão permite que a conta use políticas do IAM para delegar permissão para todas as ações (kms:*) na chave do KMS.

Reduz o risco de a chave do KMS perder a capacidade de gerenciamento.

Ao contrário de outras políticas de recursos da AWS, uma política de chaves do AWS KMS não dá permissão automaticamente à conta ou a nenhum de seus usuários. Para dar permissão a qualquer entidade principal, incluindo a entidade principal da conta, você deve usar uma declaração de política chave que forneça a permissão explicitamente. Você não precisa dar à entidade principal da conta, ou a qualquer entidade principal, acesso à chave do KMS. No entanto, dar acesso à entidade principal da conta ajuda você a evitar que a chave se torne não gerenciável.

Por exemplo, suponha que você crie uma política de chaves que dê acesso a apenas um usuário à chave do KMS. Se você excluir esse usuário, a chave se tornará não gerenciável e você deverá contatar o suporte da AWS para recuperar o acesso à chave do KMS.

A declaração de política de chaves mostrada acima dá permissão para controlar a chave da entidade principal da conta, que representa a Conta da AWS e seus administradores, incluindo o usuário raiz de conta. O usuário raiz da conta é a única entidade principal que não pode ser excluída, a menos que você exclua a Conta da AWS. As práticas recomendadas do IAM desencorajam agir em nome do usuário raiz da conta, exceto em caso de emergência. No entanto, talvez seja necessário atuar como usuário raiz da conta se você excluir todos os outros usuários e funções com acesso à chave do KMS.

Permite que administradores de chaves administrem a chave do KMS

A política de chaves padrão criada pelo console permite que você escolha usuários e funções do IAM na conta e os torne administradores de chaves. Essa declaração é chamada de declaração de administradores de chaves. Os administradores de chaves têm permissões para gerenciar a chave do KMS, mas não têm permissões para usar essa chave em operações de criptografia. Você pode adicionar usuários e funções do IAM à lista de administradores de chaves ao criar a chave do KMS na visualização padrão ou na visualização de políticas.

Atenção

Como eles têm permissão para alterar a política de chaves e criar concessões, podem conceder a eles próprios e a outros permissões do AWS KMS não especificadas nessa política.

As entidades principais que têm permissão para gerenciar etiquetas e aliases também podem controlar o acesso a uma chave do KMS. Para obter mais detalhes, consulte ABAC para AWS KMS.

O exemplo a seguir mostra a declaração de administradores de chaves na visualização padrão do console do AWS KMS.


          Administradores de chaves na política de chaves padrão do console, visualização padrão

A seguir é apresentado um exemplo que mostra a declaração de administradores de chaves na visualização padrão do console do AWS KMS. Essa instrução de administradores de chaves serve para uma chave do KMS de criptografia simétrica e região única.

{ "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": "*" }

A instrução padrão de administradores de chaves para a chave mais comum do KMS, uma chave do KMS de criptografia simétrica de região única, possibilita as permissões a seguir. Para obter informações detalhadas sobre cada permissão, consulte a Permissões AWS KMS.

Quando você usa o console do AWS KMS para criar uma chave do KMS, o console adiciona os usuários e as funções especificados ao elemento Principal na declaração dos administradores de chaves.

Muitas dessas permissões contêm o caractere curinga (*), que permite todas as permissões que começam com o verbo especificado. Como resultado, quando o AWS KMS adiciona novas operações de API, os administradores de chaves recebem automaticamente permissão para usá-las. Não é necessário atualizar suas políticas de chaves para incluir as novas operações. Se você preferir limitar seus administradores de chaves a um conjunto fixo de operações de API, poderá alterar sua política de chaves.

kms:Create*

Permite kms:CreateAlias e kms:CreateGrant. (A permissão kms:CreateKey é válida somente em uma política do IAM.)

kms:Describe*

Permite kms:DescribeKey. A permissão kms:DescribeKey é necessária para visualizar a página de detalhes de chaves de uma chave do KMS no AWS Management Console.

kms:Enable*

Permite kms:EnableKey. Para chaves do KMS de criptografia simétrica, ela também permite kms:EnableKeyRotation.

kms:List*

Permite kms:ListGrants, kms:ListKeyPolicies e kms:ListResourceTags. (As permissões kms:ListAliases e kms:ListKeys, que são necessárias para exibir chaves do KMS no AWS Management Console, são válidas somente em políticas do IAM.)

kms:Put*

Permite kms:PutKeyPolicy. Essa permissão permite que os administradores de chaves alterem a política de chaves dessa chave do KMS.

kms:Update*

Permite kms:UpdateAlias e kms:UpdateKeyDescription. Para chaves de várias regiões, ele permite kms:UpdatePrimaryRegion nesta chave do KMS.

kms:Revoke*

Permite kms:RevokeGrant, o que permite que os administradores de chaves excluam uma concessão mesmo que eles não sejam uma entidade principal prestes a se retirar na concessão.

kms:Disable*

Permite kms:DisableKey. Para chaves do KMS de criptografia simétrica, ela também permite kms:DisableKeyRotation.

kms:Get*

Permite kms:GetKeyPolicy e kms:GetKeyRotationStatus. Para chaves do KMS com material de chave importado, ela permite kms:GetParametersForImport. Para chaves do KMS assimétricas, ela permite kms:GetPublicKey. A permissão kms:GetKeyPolicy é necessária para visualizar a política da chave de uma chave do KMS no AWS Management Console.

kms:Delete*

Permite kms:DeleteAlias. Para chaves com material de chave importado, ela permite kms:DeleteImportedKeyMaterial. A permissão kms:Delete* não permite que os administradores de chaves excluam a chave do KMS (ScheduleKeyDeletion).

kms:TagResource

Permite kms:TagResource, que, por sua vez, permite que os administradores de chaves adicionem tags à chave do KMS. Como as tags também podem ser usadas para controlar o acesso à chave do KMS, essa permissão pode permitir que os administradores concedam ou neguem acesso à chave do KMS. Para obter mais detalhes, consulte ABAC para AWS KMS.

kms:UntagResource

Permite kms:UntagResource, que, por sua vez, permite que os administradores de chaves excluam tags da chave do KMS. Como as tags podem ser usadas para controlar o acesso à chave, essa permissão pode permitir que os administradores concedam ou neguem acesso à chave do KMS. Para obter mais detalhes, consulte ABAC para AWS KMS.

kms:ScheduleKeyDeletion

Permite kms:ScheduleKeyDeletion, que, por sua vez, permite que os administradores de chaves excluam esta chave do KMS. Para excluir essa permissão, desmarque a opção Allow key administrators to delete this key(Permitir que os administradores de chaves excluam essa chave).

kms:CancelKeyDeletion

Permite kms:CancelKeyDeletion, que, por sua vez, permite que os administradores de chaves cancelem a exclusão desta chave do KMS. Para excluir essa permissão, desmarque a opção Allow key administrators to delete this key(Permitir que os administradores de chaves excluam essa chave).

 

O AWS KMS adiciona as seguintes permissões à declaração de administradores de chaves padrão quando chaves para fins especiais são criadas.

kms:ImportKeyMaterial

A permissão kms:ImportKeyMaterial permite que os administradores de chaves importem material de chave para a chave do KMS. Essa permissão está incluída na política de chaves somente quando você cria uma chave do KMS sem material de chave.

kms:ReplicateKey

A permissão kms:ReplicateKey permite que os administradores de chaves criem uma réplica de uma chave primária de várias regiões em uma região da AWS diferente. Essa permissão é incluída na política de chaves somente quando você cria uma chave primária ou de réplica de várias regiões.

kms:UpdatePrimaryRegion

A permissão kms:UpdatePrimaryRegion permite que os administradores de chaves alterem uma chave de réplica de várias regiões para uma chave primária de várias regiões. Essa permissão é incluída na política de chaves somente quando você cria uma chave primária ou de réplica de várias regiões.

Permite que os usuários de chaves usem a chave do KMS

A política padrão de chaves que o console cria para chaves do KMS permite que você escolha usuários e funções do IAM na conta, e em Contas da AWS externas, e os transforme em usuários de chaves.

O console adiciona duas instruções de política à política de chaves para usuários de chaves.

Você pode adicionar usuários do IAM, funções do IAM e outras Contas da AWS à lista de usuários de chaves ao criar a chave do KMS. Você também pode editar a lista com a visualização padrão do console para políticas de chaves, conforme mostrado na imagem a seguir. A visualização padrão para políticas de chaves está na página de detalhes de chaves. Para obter mais informações sobre como permitir que usuários em outras Contas da AWS usem a chave do KMS, consulte Permitir que usuários de outras contas usem uma chave do KMS.


          Usuários de chaves na política de chaves padrão do console, visualização padrão

As declarações de usuários de chaves padrão para uma chave simétrica de região única possibilita as permissões a seguir. Para obter informações detalhadas sobre cada permissão, consulte a Permissões AWS KMS.

Quando você usa o console do AWS KMS para criar uma chave do KMS, o console adiciona os usuários e as funções especificados ao elemento Principal na declaração de cada usuário da chave.

{ "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}} }

Permite que usuários de chaves usem uma chave do KMS para operações de criptografia

Os usuários de chaves têm permissão para usar a chave do KMS diretamente em todas as operações de criptografia com suporte na chave do KMS. Eles também podem usar a operação DescribeKey para obter informações detalhadas sobre a chave do KMS no console do AWS KMS ou usando as operações de API do AWS KMS.

Por padrão, o console do AWS KMS adiciona as instruções dos usuários de chaves como as dos exemplos a seguir a uma política de chaves padrão. Como elas são compatíveis com diferentes operações de API, as ações nas instruções de política para chaves do KMS de criptografia simétrica, chaves do KMS de Hash-based message authentication code (HMAC – Código de autenticação de mensagem por hash), chaves do KMS assimétricas para criptografia de chave pública e chaves do KMS assimétricas para assinatura e verificação são ligeiramente diferentes.

Chaves do KMS de criptografia simétrica

O console adiciona a seguinte instrução à política de chaves para chaves do KMS de criptografia simétrica.

{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/ExampleUser"}, "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:Encrypt", "kms:GenerateDataKey*", "kms:ReEncrypt*" ], "Resource": "*" }
Chaves do KMS de HMAC

O console adiciona a seguinte instrução à política de chaves para chaves do KMS de HMAC.

{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/ExampleUser"}, "Action": [ "kms:DescribeKey", "kms:GenerateMac", "kms:VerifyMac" ], "Resource": "*" }
Chaves do KMS assimétricas para criptografia de chave pública

O console adiciona a seguinte instrução à política de chaves para chaves do KMS assimétricas com um uso de chave de Encrypt and decrypt (Criptografar e descriptografar).

{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:DescribeKey", "kms:GetPublicKey" ], "Resource": "*" }
Chaves do KMS assimétricas para assinatura e verificação

O console adiciona a seguinte instrução à política de chaves para chaves do KMS assimétricas com um uso de chave de Sign and verify (Assinar e verificar).

{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/ExampleUser"}, "Action": [ "kms:DescribeKey", "kms:GetPublicKey", "kms:Sign", "kms:Verify" ], "Resource": "*" }

As ações nessas declarações concedem aos usuários de chaves as permissões a seguir.

kms:Encrypt

Permite que os usuários de chaves criptografem dados com essa chave do KMS.

kms:Decrypt

Permite que os usuários de chaves descriptografem dados com essa chave do KMS.

kms:DescribeKey

Permite que os usuários de chaves obtenham informações detalhadas sobre essa chave do KMS, incluindo seus identificadores, data de criação e estado de chave. Ela também permite que os usuários de chaves exibam detalhes sobre a chave do KMS no console do AWS KMS.

kms:GenerateDataKey*

Permite que os usuários de chaves solicitem uma chave de dados simétrica ou um par de chaves de dados assimétricas para operações criptográficas no lado do cliente. O console usa o caractere curinga * para representar permissão para as seguintes operações de API: GenerateDataKey, GenerateDataKeyWithoutPlaintext, GenerateDataKeyPair e GenerateDataKeyPairWithoutPlaintext. Essas permissões são válidas somente nas chaves do KMS simétricas que criptografam as chaves de dados.

kms:GenerateMac

Permite que os usuários de chaves usem uma chave do KMS de HMAC para gerar uma etiqueta de HMAC.

kms:GetPublicKey

Permite que os usuários de chaves baixem a chave pública da chave do KMS assimétrica. As partes com quem você compartilha essa chave pública podem criptografar dados fora do AWS KMS. No entanto, esses textos cifrados só podem ser descriptografados chamando a operação Decrypt no AWS KMS.

kms:ReEncrypt*

Permite que os usuários de chaves criptografem novamente os dados que foram originalmente criptografados com essa chave do KMS ou permite que eles usem essa chave do KMS para criptografar novamente dados já criptografados. A operação ReEncrypt exige acesso às chaves do KMS de origem e de destino. Para fazer isso, é possível conceder a permissão kms:ReEncryptFrom na chave do KMS de origem e a permissão kms:ReEncryptTo na chave do KMS de destino. No entanto, para simplificar, o console permite kms:ReEncrypt* (com o caractere curinga *) nas duas chaves do KMS.

kms:Sign

Permite que os usuários de chaves assinem mensagens com essa chave do KMS.

kms:Verify

Permite que os usuários de chaves verifiquem assinaturas com essa chave do KMS.

kms:VerifyMac

Permite que os usuários de chaves usem uma chave do KMS de HMAC para verificar uma etiqueta de HMAC.

Permite que os usuários de chaves usem a chave do KMS com serviços da AWS

A política de chaves padrão no console também concede aos usuários de chaves as permissões de concessão de que precisam para proteger seus dados nos serviços da AWS que usam subsídios. Os serviços da AWS geralmente usam concessões para obter permissão específica e limitada para usar uma chave do KMS.

Esta instrução de política do chave permite que o usuário da chave crie, exiba e revogue concessões na chave do KMS, mas somente quando a solicitação de operação de concessão for proveniente de um serviço da AWS integrado ao AWS KMS. A condição kms:GrantIsForAWSResource da política não permite que o usuário chame essas operações de concessão diretamente. Quando o usuário chave o permite, um serviço da AWS pode criar uma concessão em nome do usuário que permita que o serviço use a chave do KMS para proteger os dados do usuário.

Os usuários de chaves precisam dessas permissões de concessão para usar a chave do KMS com os serviços integrados, mas essas permissões não são suficientes. Os usuários de chaves também precisam de permissão para usar os serviços integrados. Para obter detalhes sobre como conceder acesso aos usuários para um serviço da AWS integrado ao AWS KMS, consulte a documentação do serviço integrado.

{ "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/ExampleUser"}, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": {"Bool": {"kms:GrantIsForAWSResource": true}} }

Por exemplo, os usuários de chaves podem usar essas permissões na chave do KMS das maneiras indicadas a seguir.

  • Use essa chave do KMS com o Amazon Elastic Block Store (Amazon EBS) e com o Amazon Elastic Compute Cloud (Amazon EC2) para anexar um volume do EBS criptografado a uma instância do EC2. O usuário de chaves concede implicitamente permissão ao Amazon EC2 para usar a chave do KMS com o objetivo de associar o volume criptografado à instância. Para mais informações, consulte Como o Amazon Elastic Block Store (Amazon EBS) usa o AWS KMS.

  • Use essa chave do KMS com o Amazon Redshift para executar um cluster criptografado. O usuário de chaves concede implicitamente permissão ao Amazon Redshift para usar a chave do KMS para executar o cluster criptografado e criar snapshots criptografados. Para mais informações, consulte Como o Amazon Redshift usa o AWS KMS.

  • Use essa chave do KMS com outros serviços da AWS integrados ao AWS KMS que usem concessões para criar, gerenciar ou usar recursos criptografados com esses serviços.

Apolítica de chaves padrão permite que os usuários de chaves deleguem suas permissões de concessão para todos os serviços integrados que usam concessões. No entanto, é possível criar uma política de chaves personalizada que restrinja a permissão a serviços específicos da AWS. Para obter mais informações, consulte a kms:ViaService chave de condição.