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
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 do IAM, os perfis do IAM e as Contas da AWS que são administradores de chaves e aqueles que são usuários de chaves (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 concede permissões automaticamente a nenhuma conta ou suas identidades. 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 User Permissions", "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::
. A entidade principal da conta representa a conta da AWS e seus administradores.account-id
:rootQuando a entidade principal em uma instrução de política de chave é a entidade principal da conta, a instrução de política não concede permissões para o uso da chave do KMS a nenhuma entidade principal 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 concede permissões automaticamente para a conta ou para qualquer uma de suas entidades principais. 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 detalhes, consulte ABAC para AWS KMS.
nota
As práticas recomendadas do IAM não encorajam o uso de usuários do IAM com credenciais de longo prazo. Sempre que possível, use os perfis do IAM, por fornecerem credenciais temporárias. Para obter detalhes, consulte Práticas recomendadas de segurança no IAM no Guia do usuário do IAM.
O exemplo a seguir mostra a declaração de administradores de chaves na visualização padrão do console do AWS KMS.
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
:role/ExampleAdminRole
"}, "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", "kms:RotateKeyOnDemand" ], "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õeskms:ListAliases
ekms: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 permitekms:GetPublicKey
. A permissãokms: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 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 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). kms:RotateKeyOnDemand
-
Permite
kms:RotateKeyOnDemand
, que permite que os administradores de chaves realizem a alternância sob demanda do material de chave nessa chave do KMS.
O AWS KMS adiciona as seguintes permissões à declaração de administradores de chaves padrão quando você cria chaves para fins especiais.
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 de chaves padrão que o console cria para chaves do KMS permite que você escolha usuários do IAM e perfis do IAM na conta e em Contas da AWS externas e torne-os usuários de chaves.
O console adiciona duas instruções de política à política de chaves para usuários de chaves.
-
Use a chave do KMS diretamente – A primeira instrução de política de chaves dá aos usuários de chave permissão para usar a chave do KMS diretamente para todas as operações de criptografia com suporte para esse tipo de chave do KMS.
-
Use a chave do KMS com serviços da AWS: a segunda declaração de política concede permissão aos usuários de chaves para permitir que os serviços da AWS integrados ao AWS KMS usem a chave do KMS em nome deles para proteger recursos, como buckets do Amazon S3 e tabelas do Amazon DynamoDB.
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.
nota
As práticas recomendadas do IAM não encorajam o uso de usuários do IAM com credenciais de longo prazo. Sempre que possível, use os perfis do IAM, por fornecerem credenciais temporárias. Para obter detalhes, consulte Práticas recomendadas de segurança no IAM no Guia do usuário do IAM.
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
: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
: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:role/
ExampleKeyUserRole
"}, "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:role/
ExampleKeyUserRole
"}, "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:role/
ExampleKeyUserRole
" }, "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:role/
ExampleKeyUserRole
"}, "Action": [ "kms:DescribeKey", "kms:GetPublicKey", "kms:Sign", "kms:Verify" ], "Resource": "*" } - Chaves assimétricas do KMS para derivar segredos compartilhados
-
O console adiciona a seguinte instrução à política de chave para chaves assimétricas do KMS com um uso de chave de Acordo de chave.
{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:role/
ExampleKeyUserRole
"}, "Action": [ "kms:DescribeKey", "kms:GetPublicKey", "kms:DeriveSharedSecret" ], "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:DeriveSharedSecret
-
Permite que os usuários de chaves derivem segredos compartilhados 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ãokms:ReEncryptTo
na chave do KMS de destino. No entanto, para simplificar, o console permitekms: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
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:role/
ExampleKeyUserRole
"}, "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 ter 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 ter 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.