Usar aliases para controlar o acesso a chaves do KMS - AWS Key Management Service

Usar aliases para controlar o acesso a chaves do KMS

Você pode controlar o acesso às chaves do KMS de acordo com os aliases associados à chave do KMS. Para fazer isso, use as chaves de condição kms:RequestAlias e kms:ResourceAliases. Esse recurso faz parte do suporte do AWS KMS para controle de acesso baseado em atributos( ABAC).

A chave de condição kms:RequestAlias permite ou nega acesso a uma chave do KMS de acordo com o alias em uma solicitação. A chave de condição kms:ResourceAliases permite ou nega acesso a uma chave do KMS de acordo com os aliases associados à chave do KMS.

Esses recursos não permitem identificar uma chave do KMS usando um alias no elemento resource de uma instrução de política. Quando um alias é o valor de um elemento resource, a política aplica-se ao recurso de alias, e não a qualquer chave do KMS que possa estar associada a ela.

nota

Pode levar até cinco minutos para que alterações de etiqueta e alias afetem a autorização de chaves do KMS. Alterações recentes podem estar visíveis em operações de API antes de afetarem a autorização.

Ao usar aliases para controlar o acesso a chaves do KMS, considere o seguinte:

  • Use aliases para reforçar as práticas recomendadas de acesso menos privilegiado. Conceda às entidades principais do IAM somente as permissões de que eles precisam para as chaves do KMS que elas devem usar ou gerenciar. Por exemplo, use aliases para identificar as chaves do KMS usadas para um projeto. Em seguida, conceda permissão à equipe do projeto para usar apenas chaves do KMS com os aliases do projeto.

  • Tenha cautela ao conceder às entidades principais as permissões kms:CreateAlias, kms:UpdateAlias ou kms:DeleteAlias, que permitem adicionar, editar e excluir aliases. Quando você usa aliases para controlar o acesso a chaves do KMS, a alteração de um alias pode conceder às entidades principais permissão para usar chaves do KMS para as quais, de outra forma, eles não teriam permissão para usar. Ele também pode negar acesso a chaves do KMS que outras entidades principais exigem para realizar seus trabalhos.

  • Analise as entidades principais na sua Conta da AWS que atualmente têm permissão para gerenciar aliases e ajuste essas permissões, se necessário. Os administradores de chaves que não têm permissão para alterar políticas de chave ou criar concessões podem controlar o acesso a chaves do KMS quando têm a devida permissão para gerenciar aliases.

    Por exemplo, a política de chaves padrão para administradores de chaves do console inclui as permissões kms:CreateAlias, kms:DeleteAlias e kms:UpdateAlias. As políticas do IAM podem dar permissões de alias para todas as chaves do KMS na sua Conta da AWS . Por exemplo, a política gerenciada AWSKeyManagementServicePowerUser permite que as entidades principais criem, excluam e listem aliases para todas as chaves do KMS, mas não os atualizem.

  • Antes de definir uma política que depende de um alias, analise os aliases nas chaves do KMS da sua Conta da AWS . Assegure-se de que sua política se aplique somente aos aliases que você pretende incluir. Use logs do CloudTrail e alarmes do CloudWatchpara receber alertas sobre alterações de alias que podem afetar o acesso às suas chaves do KMS. Além disso, a resposta ListAliases inclui a data de criação e a data da última atualização de cada alias.

  • As condições de política de alias usam correspondência de padrões. Elas não estão vinculadas a uma instância específica de um alias. Uma política que usa chaves de condição com base em alias afeta todos os aliases novos e existentes que correspondem ao padrão. Se você excluir e recriar um alias que corresponde a uma condição de política, esta última se aplicará ao novo alias e também ao antigo.

A chave de condição kms:RequestAlias depende do alias especificado explicitamente em uma solicitação de operação. A chave de condição kms:ResourceAliases depende dos aliases associados a uma chave do KMS, mesmo que eles não apareçam na solicitação.

kms:RequestAlias

Permita ou negue o acesso a uma chave do KMS de acordo com o alias que identifica essa chave em uma solicitação. Você pode usar a chave de condição kms:RequestAlias em uma política de chaves ou política do IAM. Ele se aplica a operações que usam um alias para identificar uma chave do KMS em uma solicitação, ou seja, operações de criptografia ,DescribeKey e GetPublicKey. Isso não é válido para operações de alias, como CreateAlias ou DeleteAlias.

Na chave de condição, especifique um nome de alias ou um padrão de nome de alias. Você não pode especificar um ARN de alias.

Por exemplo, a seguinte instrução de política de chaves permite que as entidades principais usem as operações especificadas na chave do KMS. A permissão será efetiva apenas quando a solicitação usar um alias que inclui alpha para identificar a chave do KMS.

{ "Sid": "Key policy using a request alias condition", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/alpha-developer" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringLike": { "kms:RequestAlias": "alias/*alpha*" } } }

O seguinte exemplo de solicitação de uma entidade principal autorizada atenderia à condição. No entanto, uma solicitação que usasse um ID de chave, um ARN de chave ou um alias diferente não atenderia à condição, mesmo que esses valores identificassem a mesma chave do KMS.

$ aws kms describe-key --key-id "arn:aws:kms:us-west-2:111122223333:alias/project-alpha"

kms:ResourceAliases

Permita ou negue acesso a uma chave do KMS de acordo com os aliases associados à chave do KMS, mesmo que o alias não seja usado em uma solicitação. A chave de condição kms:ResourceAliases permite especificar um alias ou padrão de alias, como alias/test*, para que você possa usá-la em uma política do IAM para controlar o acesso a várias chaves do KMS na mesma região. Isso é válido para qualquer operação AWS KMS que use uma chave do KMS.

Por exemplo, a seguinte política do IAM permite que as entidades principais gerenciem a alternância automática de chaves do KMS em duas Contas da AWS . No entanto, a permissão apenas é aplicada a chaves do KMS associadas a aliases que começam com restricted.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AliasBasedIAMPolicy", "Effect": "Allow", "Action": [ "kms:EnableKeyRotation", "kms:DisableKeyRotation", "kms:GetKeyRotationStatus" ], "Resource": [ "arn:aws:kms:*:111122223333:key/*", "arn:aws:kms:*:444455556666:key/*" ], "Condition": { "ForAnyValue:StringLike": { "kms:ResourceAliases": "alias/restricted*" } } } ] }

A condição kms:ResourceAliases é uma condição do recurso, e não a solicitação. Dessa forma, uma solicitação que não especifique o alias ainda pode atender à condição.

O seguinte exemplo de solicitação, que especifica um alias correspondente, atende à condição.

$ aws kms enable-key-rotation --key-id "alias/restricted-project"

No entanto, o seguinte exemplo de solicitação também atende à condição, desde que a chave do KMS especificada tenha um alias que comece com restricted, mesmo que este não seja utilizado na solicitação.

$ aws kms enable-key-rotation --key-id "1234abcd-12ab-34cd-56ef-1234567890ab"