Permitir que usuários de outras contas usem uma chave do KMS - AWS Key Management Service

Permitir que usuários de outras contas usem uma chave do KMS

É possível permitir que usuários ou perfis em uma Conta da AWS diferente usem uma chave do KMS em sua conta. O acesso entre contas requer permissão na política de chaves da chave do KMS e em uma política do IAM na conta do usuário externo.

A permissão entre contas é efetiva apenas nas seguintes operações:

Se você conceder a um usuário em outra conta permissão para outras operações, essas permissões não terão efeito. Por exemplo, se você fornecer a uma entidade principal em outra conta a permissão kms:ListKeys em uma política do IAM, ou a permissão kms:ScheduleKeyDeletion em uma chave do KMS em uma política de chaves, as tentativas do usuário de chamar essas operações nos seus recursos continuarão a falhar.

Para obter detalhes sobre como usar chaves do KMS em contas diferentes para operações do AWS KMS, consulte a coluna Uso entre contas em Permissões AWS KMS e Usar chaves do KMS em outras contas. Existe também uma seção Uso entre contas em cada descrição da API na Referência de APIs do AWS Key Management Service.

Atenção

Tenha cautela ao conceder permissões para as entidades principais usarem suas chaves do KMS. Sempre que possível, siga o princípio de menor privilégio. Conceda aos usuários acesso apenas às chaves do KMS necessárias para a conclusão de suas operações.

Além disso, tenha cautela ao usar qualquer chave do KMS desconhecida, especialmente uma chave do KMS em outra conta. Usuários mal-intencionados podem conceder a você permissões para usar a chave do KMS deles para obter informações sobre você ou sua conta.

Para obter informações sobre como usar políticas para proteger os recursos em sua conta, consulte Práticas recomendadas para políticas do IAM.

Para conceder permissão para usuários e funções usarem uma chave do KMS em outra conta, você deve usar dois tipos diferentes de políticas:

  • A política de chaves da chave do KMS deve conceder à conta externa (ou aos usuários e às funções na conta externa) permissão para usar a chave do KMS. A política de chaves está na conta proprietária da chave do KMS.

  • Políticas do IAM na conta externa devem delegar as permissões de políticas de chaves para seus usuários e funções. Essas políticas são definidas na conta externa e concedem permissões a usuários e funções nessa conta.

A política de chaves determina quem pode ter acesso à chave do KMS. A política do IAM determina quem tem acesso à chave do KMS. Sozinhas, nem a política de chaves, nem a política do IAM são suficientes: você deve alterar as duas.

Para editar a política de chaves, use a Policy View (Exibição de políticas) no AWS Management Console ou as operações CreateKey ou PutKeyPolicy.

Para obter ajuda sobre como editar políticas do IAM, consulte Usar políticas do IAM com o AWS KMS.

Para obter um exemplo que mostra como a política de chaves e as políticas do IAM funcionam em conjunto para permitir o uso de uma chave do KMS em uma conta diferente, consulte Exemplo 2: o usuário assume uma função com permissão para usar uma chave do KMS em outra Conta da AWS.

É possível visualizar as operações do AWS KMS entre contas resultantes na chave do KMS nos seus logs do AWS CloudTrail. Operações que usam chaves do KMS em outras contas são registradas na conta do autor da chamada e na conta do proprietário da chave do KMS.

nota

Os exemplos neste tópico mostram como usar uma política de chaves e uma política do IAM juntas para fornecer e limitar o acesso a uma chave do KMS. Estes exemplos genéricos não têm como objetivo representar as permissões que qualquer AWS service (Serviço da AWS) específico requer em uma chave do KMS. Para obter informações sobre as permissões de que um AWS service (Serviço da AWS) precisa, consulte o tópico de criptografia na documentação do serviço.

Etapa 1: Incluir uma declaração de política de chaves na conta local

A política de chaves de uma chave do KMS é o determinante principal de quem pode acessar a chave do KMS e quais operações podem ser realizadas. A política de chaves está sempre na conta proprietária da chave do KMS. Ao contrário de políticas do IAM, políticas de chaves não especificam um recurso. O recurso é a chave do KMS associada à política de chaves. Ao fornecer permissões entre contas, a política de chaves para a chave do KMS deve conceder à conta externa (ou aos usuários e perfis na conta externa) permissão para usar a chave do KMS.

Para conceder permissão a uma conta externa para usar a chave do KMS, adicione uma instrução à política de chaves que especifique a conta externa. No elemento Principal da política de chaves, insira o Amazon Resource Name (ARN) da conta externa.

Quando você especifica uma conta externa em uma política de chaves, os administradores do IAM na conta externa podem usar políticas do IAM para delegar essas permissões a todos os usuários e funções na conta externa. Eles também podem decidir quais ações especificadas na política de chaves os usuários e as funções podem executar.

As permissões concedidas à conta externa e suas entidades principais serão efetivas somente se a conta externa estiver habilitada na região que hospeda a chave do KMS e sua política de chaves. Para obter informações sobre regiões não habilitadas por padrão (“regiões de adesão”), consulte Gerenciar Regiões da AWS em Referência geral da AWS.

Por exemplo, suponha que você queira permitir que a conta 444455556666 use uma chave do KMS de criptografia simétrica na conta 111122223333. Para isso, adicione uma instrução de política, como a instrução no exemplo a seguir, à política de chaves na conta 111122223333. Essa instrução de política permite que a conta externa (444455556666) use a chave do KMS em operações criptográficas para chaves do KMS de criptografia simétrica.

nota

O exemplo a seguir representa uma amostra de política de chaves para o compartilhamento de uma chave do KMS com outra conta. Substitua os valores de exemplo Sid, Principal e Action por valores válidos para o uso pretendido de sua chave do KMS.

{ "Sid": "Allow an external account to use this KMS key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::444455556666:root" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }

Em vez de conceder permissão à conta externa, você pode especificar usuários e funções externos específicos na política de chaves. No entanto, esses usuários e funções não poderão usar a chave do KMS até que os administradores do IAM na conta externa associem as políticas do IAM adequadas às suas identidades. As políticas do IAM podem conceder permissão a todos ou a um subconjunto de usuários e funções externos especificados na política de chaves. E podem permitir todas ou um subconjunto das ações especificadas na política de chaves.

Especificar identidades em uma política de chaves restringe as permissões que os administradores do IAM na conta externa podem fornecer. No entanto, isso torna o gerenciamento de políticas com duas contas mais complexo. Por exemplo, suponha que você precise adicionar um usuário ou uma função. É necessário adicionar essa identidade à política de chaves na conta que possui a chave do KMS e criar políticas do IAM na conta da identidade.

Para especificar determinados usuários ou funções externos em uma política de chaves, no elemento Principal, insira o Amazon Resource Name (ARN) de um usuário ou função na conta externa.

Por exemplo, a instrução de política de chaves exemplificada a seguir permite que ExampleRole na conta 444455556666 use uma chave do KMS na conta 111122223333. Essa instrução de política de chaves permite que a conta externa (444455556666) use a chave do KMS em operações criptográficas para chaves do KMS de criptografia simétrica.

nota

O exemplo a seguir representa uma amostra de política de chaves para o compartilhamento de uma chave do KMS com outra conta. Substitua os valores de exemplo Sid, Principal e Action por valores válidos para o uso pretendido de sua chave do KMS.

{ "Sid": "Allow an external account to use this KMS key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:role/ExampleRole" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }
nota

Não defina a entidade principal como um asterisco (*) em qualquer instrução de política de chave que permita permissões, a menos que você utilize condições para limitar a política 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 podem usar a chave do KMS sempre que tiverem as permissões correspondentes em suas próprias contas.

Você também precisa decidir quais permissões deseja conceder à conta externa. Por exemplo, você pode conceder aos usuários permissão para descriptografar, mas não para criptografar, ou permissão para visualizar a chave do KMS, mas não para usá-la. Para obter uma lista de permissões em chaves do KMS, consulte Permissões AWS KMS.

Definir a política de chave ao criar uma chave do KMS

Ao usar a operação CreateKey para criar uma chave do KMS, você pode usar o parâmetro Policy para especificar uma política de chave que permite que uma conta externa ou usuários e perfis externos usem a chave do KMS.

Ao criar uma chave do KMS no AWS Management Console, você também cria sua política de chaves. Ao selecionar identidades nas seções Key Administrators (Administradores de chaves) e Key Users (Usuários de chaves), o AWS KMS adiciona instruções de política para essas identidades à política de chaves da chave do KMS. A seção Key Users (Usuários de chaves) também permite adicionar contas externas como usuários de chaves.

Quando você insere o ID de uma conta externa, o AWS KMS adiciona duas declarações à política de chaves. Essa ação afeta somente a política de chaves. Os usuários e funções na conta externa não poderão usar a chave do KMS até que você anexe as políticas do IAM para conceder a eles algumas dessas permissões ou todas elas.

A primeira instrução de política concede à conta externa permissão para usar a chave do KMS em operações de criptografia. A segunda instrução de política permite que a conta externa crie, visualize e revogue concessões na chave do KMS, mas somente quando a solicitação é proveniente de um serviço da AWS integrado ao AWS KMS. Essas permissões permitem que outros serviços da AWS, como os que criptografam dados do usuário, usem a chave do KMS. Essas permissões são desenvolvidas para chaves do KMS que criptografam dados do usuário em serviços da AWS.

Etapa 2: Adicionar políticas do IAM à conta externa

A política de chaves na conta proprietária da chave do KMS define o intervalo válido de permissões. No entanto, os usuários e as funções na conta externa não poderão usar a chave do KMS até que você anexe as políticas do IAM que deleguem essas permissões ou use concessões para gerenciar o acesso à chave do KMS. As políticas do IAM são definidas na conta externa.

Se a política de chaves conceder permissão à conta externa, você poderá anexar as políticas do IAM a qualquer usuário ou função na conta. No entanto, se a política de chaves conceder permissão a usuários ou funções especificados, a política do IAM só poderá conceder essas permissões a todos ou a um subconjunto de usuários e funções especificados. Se uma política do IAM conceder acesso à chave do KMS para outros usuários ou funções externos, este não terá efeito.

A política de chaves também limita as ações na política do IAM. A política do IAM pode delegar todas as ações ou um subconjunto das ações especificadas na política de chaves. Se a política do IAM listar ações que não estão especificadas na política de chaves, essas permissões não terão efeito.

O seguinte exemplo de política do IAM permite que a entidade principal use a chave do KMS na conta 111122223333 para operações de criptografia. Para conceder essa permissão a usuários e funções na conta 444455556666, associe a política aos usuários ou às funções na conta 444455556666.

nota

O exemplo a seguir representa uma amostra de política do IAM para o compartilhamento de uma chave do KMS com outra conta. Substitua os valores de exemplo Sid, Resource e Action por valores válidos para o uso pretendido de sua chave do KMS.

{ "Sid": "AllowUseOfKeyInAccount111122223333", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }

Observe os seguintes detalhes sobre essa política:

  • Ao contrário de políticas de chaves, as instruções de políticas do IAM não contêm o elemento Principal. Nas políticas do IAM, a identidade principal é aquela à qual a política está anexada.

  • O elemento Resourcena política do IAM identifica a chave do KMS que a entidade principal pode usar. Para especificar uma chave do KMS, adicione seu ARN de chave ao elemento Resource.

  • É possível especificar mais de uma chave do KMS no elemento Resource. No entanto, se você não especificar chaves do KMS específicas no elemento Resource, poderá conceder acesso acidentalmente a mais chaves do KMS do que o desejado.

  • Para permitir que o usuário externo use a chave do KMS com serviços da AWS que se integram ao AWS KMS, pode ser necessário adicionar permissões à política de chaves ou à política do IAM. Para obter detalhes, consulte Permitir o uso de chaves do KMS externas com Serviços da AWS.

Para mais informações sobre como trabalhar com políticas do IAM, consulte Políticas do IAM.

Permitir o uso de chaves do KMS externas com Serviços da AWS

Você pode conceder a um usuário em outra conta permissão para usar sua chave do KMS com um serviço integrado ao AWS KMS. Por exemplo, um usuário em uma conta externa pode usar sua chave do KMS para criptografar os objetos em um bucket do Amazon S3 ou para criptografar os segredos que armazena no AWS Secrets Manager.

A política de chaves deve conceder ao usuário externo ou à conta do usuário externo a devida permissão para usar a chave do KMS. Além disso, você precisa vincular políticas do IAM à identidade que concede permissões ao usuário para usar o AWS service (Serviço da AWS). O serviço também pode exigir que os usuários tenham permissões adicionais na política de chaves ou na política do IAM. Para obter uma lista das permissões requeridas pelo AWS service (Serviço da AWS) em uma chave gerenciada pelo cliente, consulte o tópico Data Protection (Proteção de dados) no capítulo Security (Segurança) no guia do usuário ou no guia do desenvolvedor do serviço.

Usar chaves do KMS em outras contas

Se você tiver permissão para usar uma chave do KMS em uma Conta da AWS diferente, poderá usar essa chave do KMS no AWS Management Console, em AWS SDKs, na AWS CLI e no AWS Tools for PowerShell.

Para identificar uma chave do KMS em uma conta diferente em um comando shell ou solicitação de API, use os seguintes identificadores de chave.

Se você inserir apenas um ID de chave ou um nome de alias, a AWS assumirá que a chave do KMS está na sua conta.

O console do AWS KMS não exibe chaves do KMS em outras contas, mesmo que você tenha permissão para usá-las. Além disso, as listas de chaves do KMS exibidas nos consoles de outros serviços da AWS não incluem chaves do KMS em outras contas.

Para especificar uma chave do KMS em uma conta diferente no console de um serviço da AWS, você deve inserir o ARN da chave ou o ARN do alias da chave do KMS. O identificador de chave necessário varia de acordo com o serviço e pode diferir entre o console de serviço e suas operações de API. Para obter detalhes, consulte a documentação do serviço.