Aliases no AWS KMS - AWS Key Management Service

Aliases no AWS KMS

Um alias é um nome amigável para uma AWS KMS key. Por exemplo, um alias permite fazer referência a uma chave do KMS como test-key em vez de 1234abcd-12ab-34cd-56ef-1234567890ab.

É possível usar um alias para identificar uma chave do KMS no console do AWS KMS, na operação DescribeKey e em operações de criptografia, como Encrypt e GenerateDataKey. Aliases também facilitam o reconhecimento de uma Chave gerenciada pela AWS. Aliases para estas chaves do KMS sempre têm o formato: aws/<service-name>. Por exemplo, o alias para a Chave gerenciada pela AWS do Amazon DynamoDB é aws/dynamodb. É possível estabelecer padrões de alias semelhantes para seus projetos, como introduzir o nome de um projeto ou categoria em seus aliases.

Também é possível pode permitir e negar acesso a chaves do KMS com base em aliases sem precisar editar políticas ou gerenciar concessões. Esse recurso faz parte do suporte do AWS KMS para controle de acesso baseado em atributos( ABAC). Para obter detalhes, consulte Usar aliases para controlar o acesso a chaves do KMS.

Grande parte do poder dos aliases vem da sua capacidade de alterar a chave do KMS associada a um alias a qualquer momento. Aliases podem tornar seu código mais fácil de escrever e manter. Por exemplo, suponha que você use um alias para fazer referência a uma determinada chave do KMS e queira alterar essa chave do KMS. Nesse caso, basta associar o alias a outra chave do KMS. Você não precisa mudar o código.

Aliases também facilitam a reutilização do mesmo código em Regiões da AWS diferentes. Crie aliases com o mesmo nome em várias regiões e associe cada alias a uma chave do KMS em sua respectiva região. Quando o código é executado em cada região, o alias faz referência à chave do KMS associada nessa região. Para ver um exemplo, consulte Saiba como usar aliases em suas aplicações.

Você pode criar um alias para uma chave do KMS no console do AWS KMS usando a API CreateAlias ou usando um modelo AWS::KMS::Alias do AWS CloudFormation.

A API do AWS KMS fornece controle total de aliases em cada conta e região. A API inclui operações para criar um alias (CreateAlias), visualizar nomes e ARNs de alias (ListAliases), alterar a chave do KMS associada a um alias (UpdateAlias) e excluir um alias (DeleteAlias).

Funcionamento dos aliases

Saiba como os aliases funcionam no AWS KMS.

Um alias é um recurso independente da AWS

Um alias não é uma propriedade de uma chave do KMS. As ações executadas no alias não afetam a chave do KMS associada. É possível criar um alias para uma chave do KMS e depois atualizá-lo para associá-lo a outra chave do KMS. Você pode até mesmo excluir o alias sem nenhum efeito sobre a chave do KMS associada. No entanto, se você excluir uma chave do KMS, todos os aliases associados a ela serão excluídos.

Se você especificar um alias como o recurso em uma política do IAM, esta fará referência ao alias, e não à chave do KMS associada.

Cada alias tem dois formatos

Quando criar um alias, especifique o nome dele. O AWS KMS cria o ARN do alias para você.

  • Um ARN de alias é um Amazon Resource Name (ARN) que identifica exclusivamente o alias.

    # Alias ARN arn:aws:kms:us-west-2:111122223333:alias/<alias-name>
  • Um nome de alias que é único na conta e na região. Na API do AWS KMS, o nome do alias é sempre prefixado com alias/. Esse prefixo é omitido no console do AWS KMS.

    # Alias name alias/<alias-name>
Os aliases não são secretos

Os aliases podem ser exibidos em texto simples nos logs do CloudTrail e em outras saídas. Não inclua informações confidenciais ou sigilosas nos nomes dos alias.

Cada alias é associado a uma chave do KMS por vez

O alias e sua chave do KMS devem estar na mesma conta e região.

É possível associar um alias a qualquer chave gerenciada pelo cliente na mesma Conta da AWS e região. No entanto, você não tem permissão para associar um alias a uma Chave gerenciada pela AWS.

Por exemplo, esta saída de ListAliases mostra que o alias test-key está associado a exatamente uma chave do KMS de destino, que é representada pela propriedade TargetKeyId.

{ "AliasName": "alias/test-key", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/test-key", "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1593622000.191, "LastUpdatedDate": 1593622000.191 }
Vários aliases podem ser associados à mesma chave do KMS

Por exemplo, você pode associar os aliases test-key e project-key à mesma chave do KMS.

{ "AliasName": "alias/test-key", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/test-key", "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1593622000.191, "LastUpdatedDate": 1593622000.191 }, { "AliasName": "alias/project-key", "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/project-key", "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1516435200.399, "LastUpdatedDate": 1516435200.399 }
O alias deve ser exclusivo em uma conta e região.

Por exemplo, é possível ter apenas um alias test-key em cada conta e região. Os aliases diferenciam maiúsculas de minúsculas, mas os aliases que diferem apenas no tamanho das letras são muito propensos a erros. Não é possível alterar um nome de alias. No entanto, você pode excluir o alias e criar um novo com o nome desejado.

É possível criar um alias com o mesmo nome em regiões diferentes

Por exemplo, é possível ter um alias finance-key na região Leste dos EUA (Norte da Virgínia) e um alias finance-key na região Europa (Frankfurt). Cada alias seria associado a uma chave do KMS em sua região. Se o seu código se referir a um nome de alias como alias/finance-key, você poderá executá-lo em várias regiões. Em cada região, ele usa uma chave do KMS diferente. Para obter detalhes, consulte Saiba como usar aliases em suas aplicações.

É possível alterar a chave do KMS associada a um alias

Você pode usar a operação UpdateAlias para associar um alias a uma chave do KMS diferente. Por exemplo, se o alias finance-key estiver associado à chave do KMS 1234abcd-12ab-34cd-56ef-1234567890ab, você poderá atualizá-lo para associá-lo à chave do KMS 0987dcba-09fe-87dc-65ba-ab0987654321.

No entanto, a chave do KMS atual e nova devem ser do mesmo tipo (ambas devem ser simétricas, assimétricas ou HMAC) e devem ter o mesmo uso de chave (ENCRYPT_DECRYPT ou SIGN_VERIFY or GENERATE_VERIFY_MAC). Essa restrição impede erros no código que usa aliases. Se for necessário associar um alias a um tipo diferente de chave e você tiver atenuado os riscos, poderá excluir e recriar o alias.

Algumas chaves do KMS não têm aliases

Ao criar uma chave do KMS no console do AWS KMS, você deve fornecer um novo alias a ela. Porém, não é necessário um alias quando a operação CreateKey é usada para criar uma chave do KMS. Além disso, é possível usar a operação UpdateAlias para alterar a chave do KMS que está associada a um alias e a operação DeleteAlias para excluir um alias. Como resultado, algumas chaves do KMS podem ter vários aliases, e outras podem não ter nenhum.

A AWS cria aliases em sua conta

A AWS cria aliases em sua conta para Chaves gerenciadas pela AWS. Esses aliases têm nomes no formato alias/aws/<service-name>, como alias/aws/s3.

Alguns aliases da AWS não têm uma chave do KMS. Esses aliases predefinidos são geralmente associados a uma Chave gerenciada pela AWS quando você começa a usar o serviço.

Usar aliases para identificar chaves do KMS

Você pode usar um nome de alias ou um ARN de alias para identificar uma chave do KMS em operações de criptografia, DescribeKey e GetPublicKey. (Se a chave do KMS estiver em uma Conta da AWS diferente, você deverá usar seu ARN de chave ou ARN de alias.) Aliases não são identificadores válidos para chaves do KMS em outras operações do AWS KMS. Para obter informações sobre os identificadores de chave válidos para cada operação de API do AWS KMS, consulte as descrições dos parâmetros KeyId na Referência de APIs do AWS Key Management Service.

Não é possível usar um nome ou um ARN de alias para identificar uma chave do KMS em uma política do IAM. Para controlar o acesso a uma chave do KMS com base em seus aliases, use as chaves de condição kms:RequestAlias ou kms:ResourceAliases. Para obter detalhes, consulte ABAC para AWS KMS.