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

Você pode permitir que usuários ou funções do IAM em uma Conta da AWS diferente usem uma AWS KMS key (chave do KMS) na 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 AWS KMSPermissões 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 definir a política de chaves ao criar uma chave do KMS, consulte Criar chaves do KMS que podem ser usadas por outras contas.

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.

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.

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 informações sobre regiões não habilitadas por padrão (“regiões opt-in”), consulte Gerenciar Regiões da AWS , na Referência geral da AWS.

Por exemplo, suponha que você queira permitir que a conta 444455556666 use uma chave do KMS 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 concede à conta externa, 444455556666, permissão para usar a chaves do KMS em operações de criptografia para chaves do KMS simétricas.

{ "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 da política de chaves a seguir permite que ExampleRole e ExampleUser na conta 444455556666 usem uma chave do KMS na conta 111122223333. Essa instrução de política de chaves concede à conta externa, 444455556666, permissão para usar a chaves do KMS em operações de criptografia para chaves do KMS simétricas.

{ "Sid": "Allow an external account to use this KMS key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::444455556666:role/ExampleRole", "arn:aws:iam::444455556666:user/ExampleUser" ] }, "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 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.

Você também precisa decidir quais permissões deseja conceder à conta externa. Para obter uma lista de permissões em chaves do KMS, consulte AWS KMSPermissões .

É possível conceder permissão à conta externa para usar a chave do KMS em operações de criptografia e usar a chave do KMS com serviços da AWS que estão integrados ao AWS KMS. Para fazer isso, use a seção Key Users (Usuários de chaves) no AWS Management Console. Para obter mais detalhes, consulte Criar chaves do KMS que podem ser usadas por outras contas.

Para especificar outras permissões em políticas de chaves, edite o documento da política de chaves. 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 editar o documento de política de chaves, use a Policy View (Exibição de políticas) no AWS Management Console ou as operações CreateKey ou PutKeyPolicy.

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.

{ "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 mais 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 Usar políticas do IAM.

Criar chaves do KMS que podem ser usadas por outras contas

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 chaves que concede permissão para usar a chave do KMS a uma conta externa ou a usuários e funções externos. Você também deve adicionar políticas do IAM à conta externa que delega essas permissões aos usuários e às funções dessa conta, mesmo quando estes últimos estão especificados na política de chaves. Você pode alterar a política de chaves a qualquer momento usando a operação PutKeyPolicy.

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.


                O elemento do console que adiciona contas externas à política de chaves de uma chave do KMS.

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.

{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:root" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }

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 foram projetadas para chaves KMS que criptografam dados de usuários em serviços da AWS, como o Amazon WorkMail. Esses serviços geralmente usam concessões para obter as permissões de que precisam para usar a chave do KMS em nome do usuário. Para obter mais detalhes, consulte Permitir o uso de chaves do KMS externas com serviços da AWS.

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

Se essas permissões não atenderem às suas necessidades, você poderá editá-las na Visualização de política do console ou usar a operação PutKeyPolicy . Você pode especificar usuários e funções externos específicos, em vez de conceder permissão à conta externa. Você pode alterar as ações que a política especifica. E você pode usar condições globais e de política do AWS KMS para refinar as permissões.

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 ele 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 anexar políticas do IAM à identidade que concede ao usuário permissão para usar o 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 detalhes, consulte a documentação 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 externa no console de um serviço da AWS, você deve inserir o ARN da chave do KMS. Para obter detalhes, consulte a documentação do console do serviço.