Usar condições de política com o AWS KMS - AWS Key Management Service

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usar condições de política com o AWS KMS

Você pode especificar as condições nas políticas de chaves e políticas do AWS Identity and Access Management (Políticas do IAM) que controlam o acesso aos recursos do AWS KMS. A declaração de política é efetiva apenas quando as condições forem verdadeiras. Por exemplo, talvez você deseje que uma declaração de política só entre em vigor após uma data específica. Ou, você pode querer que uma declaração de política controle o acesso apenas quando um valor específico existe em uma solicitação de API.

Para especificar as condições, use chaves de condição predefinidas no elemento Condition de uma instrução de política com operadores de política de condição do IAM. Algumas chaves de condição geralmente se aplicam à AWS, outras são específicas do AWS KMS.

Chaves de condição globais da AWS

A AWS define chaves de condição globais, um conjunto predefinido de chaves de condição para todos os serviços da AWS que usam o IAM para controle de acesso. É possível usar chaves de condição globais em políticas de chave do AWS KMS e políticas do IAM.

Por exemplo, é possível usar a chave de condição global aws:PrincipalArn para permitir acesso a um Chave mestra do cliente (CMK) somente quando o principal na solicitação for representado pelo nome de recurso da Amazon (ARN) no valor da chave de condição. Para oferecer suporte ao controle de acesso baseado em atributos (ABAC) no AWS KMS, é possível usar a chave de condição global aws:ResourceTag em uma política do IAM para conceder acesso ao CMKs com uma tag específica.

O AWS KMS oferece suporte a todas as chaves de condição globais da AWS, exceto as seguintes:

Para obter informações sobre chaves de condição globais da AWS, incluindo os tipos de solicitações em que estão disponíveis, consulte Chaves de contexto de condição globais da AWS no Guia do usuário do IAM. Para ver exemplos de como usar essas chaves de condição globais nas políticas do IAM, consulte Controlar o acesso a solicitações e Controlar chaves de tags no Guia do usuário do IAM.

Os tópicos a seguir fornecem orientações especiais para o uso de chaves de condição com base em endereços IP e VPC endpoints.

Usar a condição de endereço IP em políticas com permissões do AWS KMS

Você pode usar AWS KMS para proteger seus dados em um serviço integrado da AWS. No entanto, tome cuidado ao especificar os operadores de condição do endereço IP ou a chave de condição aws:SourceIp na mesma instrução de política que permite ou nega o acesso ao AWS KMS. Por exemplo, a política em AWS: Nega acesso à AWS com base no IP de origem restringe as ações da AWS para solicitações do intervalo IP especificado.

Considere este cenário:

  1. Você anexa uma política como a mostrada em AWS: Nega acesso à AWS com base no IP de origem para um usuário do IAM. Defina o valor da aws:SourceIp chave de condição para o intervalo de endereços IP para a empresa do usuário. Este usuário do IAM possui outras políticas anexadas que permitem que ele use o Amazon EBS, Amazon EC2 e AWS KMS.

  2. O usuário tenta anexar um volume do EBS criptografado a uma instância do EC2. Esta ação falha com um erro de autorização, embora o usuário tenha permissão para usar todos os serviços relevantes.

A etapa 2 falha porque a solicitação ao AWS KMS para descriptografar a chave de dados criptografada do volume vem de um endereço IP que está associado com a infraestrutura do Amazon EC2. Para que a solicitação seja bem-sucedida, ela deve ter o endereço IP do usuário de origem. Como a política na etapa 1 nega explicitamente todas as solicitações de endereços IP que não sejam aqueles especificados, o Amazon EC2 não recebe permissão para descriptografar a chave de dados criptografada do volume do EBS.

Além disso, a chave de condição aws:sourceIP não será efetiva se a solicitação vier de um endpoint da Amazon VPC. Para restringir solicitações a um VPC endpoint, incluindo um VPC endpoint do AWS KMS, use as chaves de condições aws:sourceVpce ou aws:sourceVpc. Para obter mais informações, consulte VPC endpoints – controle do uso de endpoints no Guia do usuário do Amazon VPC.

Usar condições do VPC endpoint em políticas com permissões do AWS KMS

O AWS KMS oferece suporte a Amazon Virtual Private Cloudendpoints do Amazon VPC () desenvolvidos pelo AWS PrivateLink. Você pode usar as chaves de condição globais a seguir em políticas de chaves e políticas do IAM para controlar o acesso aos recursos do AWS KMS quando a solicitação vem de uma VPC ou usa um VPC endpoint. Para obter mais detalhes, consulte Usar um VPC endpoint em uma declaração de política.

  • aws:SourceVpc limita o acesso a solicitações da VPC especificado.

  • aws:SourceVpce limita o acesso a solicitações do VPC endpoint especificado.

Se você usar essas chaves de condições em uma declaração de política de chaves que permita ou negue acesso a CMKs do AWS KMS, poderá negar acesso acidentalmente a serviços da AWS que usem o AWS KMS em seu nome.

Tome cuidado para evitar uma situação como o exemplo de chaves de condições de endereço IP. Se você restringir as solicitações de uma CMK para uma VPC ou VPC endpoint, poderão ocorrer falhas nas chamadas para o AWS KMS de um serviço integrado, como Amazon S3 ou Amazon EBS. Isso pode acontecer mesmo se a solicitação de origem for originada, em última análise, na VPC ou no VPC endpoint.

Chaves de condição do AWS KMS

O AWS KMS fornece um conjunto adicional de chaves de condição predefinidas que você pode usar em políticas de chaves e políticas do IAM. Essas chaves de condição são específicas do AWS KMS. Por exemplo, é possível usar a chave de condição kms:EncryptionContext para exigir um contexto de criptografia específico ao controlar o acesso a uma Chave mestra do cliente (CMK) simétrica do AWS KMS.

Condições para uma solicitação de operação de API

Muitas chaves de condição do AWS KMS controlam o acesso a uma CMK com base no valor de um parâmetro na solicitação de uma operação do AWS KMS. Por exemplo, é possível usar a chave de condição kms:CustomerMasterKeySpec em uma política do IAM para permitir o uso da operação CreateKey do somente quando o valor do parâmetro CustomerMasterKeySpec na solicitação CreateKey for RSA_4096.

Esse tipo de condição funciona mesmo quando o parâmetro não aparece na solicitação, como quando você usa o valor padrão do parâmetro. Por exemplo, é possível usar a chave de condição kms:CustomerMasterKeySpec para permitir que os usuários usem a operação CreateKey somente quando o valor do parâmetro CustomerMasterKeySpec é SYMMETRIC_DEFAULT, que é o valor padrão. Essa condição permite solicitações que têm o parâmetro CustomerMasterKeySpec com o valor SYMMETRIC_DEFAULT e solicitações que não têm parâmetro CustomerMasterKeySpec.

Condições para o CMKs usadas em operações de API

Algumas chaves de condição do AWS KMS podem controlar o acesso a operações com base em uma propriedade do CMK que é usado na operação. Por exemplo, você pode usar a condição kms:KeyOrigin para permitir que os principais chamem GenerateDataKey em um somente quando o CMK do Origin é CMK.AWS_KMS Para descobrir se uma chave de condição pode ser usada dessa maneira, consulte a descrição da chave de condição.

A operação deve ser uma operação de recurso de CMK, ou seja, uma operação que é autorizada para uma CMK em particular. Para identificar as operações de recursos de CMK, na Tabela de ações e recursos , procure um valor de CMK na coluna Resources para a operação.: se você usar esse tipo de chave de condição com uma operação que não está autorizada para um recurso específico da CMK, como ListKeys, a permissão não entrará em vigor porque a condição nunca poderá ser atendida. Não há nenhum recurso da CMK envolvido na autorização da operação ListKeys e nenhuma propriedade CustomerMasterKeySpec.

Os tópicos a seguir descrevem cada chave de condição do AWS KMS e incluem declarações de política de exemplo que demonstram a sintaxe da política.

kms:BypassPolicyLockoutSafetyCheck

Chaves de condição do AWS KMS Tipo de condição Operações de API Tipo de política

kms:BypassPolicyLockoutSafetyCheck

Booliano

CreateKey

PutKeyPolicy

Somente políticas do IAM

Políticas de chaves e políticas do IAM

A chave de condição kms:BypassPolicyLockoutSafetyCheck controla o acesso às operações CreateKey e PutKeyPolicy com base no valor do parâmetro BypassPolicyLockoutSafetyCheck na solicitação.

A declaração de política do IAM demonstrativa a seguir impede que os usuários ignorem a verificação de segurança de bloqueio da política ao negar a eles a permissão para criar CMKs quando o valor do parâmetro BypassPolicyLockoutSafetyCheck na solicitação CreateKey é true.

{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "Bool": { "kms:BypassPolicyLockoutSafetyCheck": true } } } }

Você também pode usar a chave de condição kms:BypassPolicyLockoutSafetyCheck em uma política do IAM ou política de chaves para controlar o acesso à operação PutKeyPolicy. A declaração de política demonstrativa de uma política de chaves a seguir impede que os usuários ignorem a verificação de segurança de bloqueio da política ao alterar a política de uma CMK.

Em vez de usar Deny de forma explícita, essa declaração de política usa Allow com o Null condition operator para permitir acesso somente quando a solicitação não incluir o parâmetro BypassPolicyLockoutSafetyCheck. Quando o parâmetro não é usado, o valor padrão é false. Essa declaração de política um pouco mais fraca pode ser substituída no caso raro em que uma derivação é necessária.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "kms:PutKeyPolicy", "Resource": "*", "Condition": { "Null": { "kms:BypassPolicyLockoutSafetyCheck": true } } } }

Consulte também

kms:CallerAccount

Chaves de condição do AWS KMS Tipo de condição Operações de API Tipo de política

kms:CallerAccount

String

Operações de recursos de CMK

Somente políticas de chave

Você pode usar essa chave de condição para permitir ou negar o acesso a todas as identidades (usuários e funções do IAM) em uma conta da AWS. Em políticas de chaves, você pode usar o elemento Principal para especificar as identidades às quais a declaração de política se aplica. A sintaxe do elemento Principal não fornece uma forma de especificar todas as identidades em uma conta do AWS. Mas você pode obter esse efeito ao combinar essa chave de condição com um elemento Principal que especifica todas as identidades do AWS.

Como essa condição é válida somente em políticas de chave, você pode usá-la para controlar o acesso a qualquer operação de recurso de CMK, ou seja, qualquer operação do AWS KMS que use uma CMK específica. Para identificar as operações de recursos de CMK, na Tabela de ações e recursos , procure um valor de CMK na coluna Resources para a operação.

Por exemplo, a declaração de política a seguir demonstra como usar a chave de condição kms:CallerAccount. Essa declaração de política está na política de chaves da CMK gerenciada pela AWS para o Amazon EBS. Ela combina um elemento Principal que especifica todas as identidades da AWS com a chave de condição kms:CallerAccount para permitir efetivamente o acesso a todas as identidades na conta da AWS 111122223333. Ela contém uma chave de condição do AWS KMS adicional (kms:ViaService) para limitar ainda mais as permissões ao autorizar somente as solicitações que chegam por meio do Amazon EBS. Para obter mais informações, consulte kms:ViaService.

{ "Sid": "Allow access through EBS for all principals in the account that are authorized to use EBS", "Effect": "Allow", "Principal": {"AWS": "*"}, "Condition": { "StringEquals": { "kms:CallerAccount": "111122223333", "kms:ViaService": "ec2.us-west-2.amazonaws.com" } }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "*" }

kms:CustomerMasterKeySpec

Chaves de condição do AWS KMS Tipo de condição Operações de API Tipo de política

kms:CustomerMasterKeySpec

String

CreateKey

Operações de recursos de CMK

Políticas do IAM

Políticas de chaves e políticas do IAM

A chave de condição kms:CustomerMasterKeySpec controla o acesso às operações com base no valor da propriedade CustomerMasterKeySpec da CMK que é criada pela operação ou usada nela.

É possível usar essa chave de condição em uma política do IAM para controlar o acesso à operação CreateKey com base no valor do parâmetro CustomerMasterKeySpec em uma solicitação .CreateKey Por exemplo, é possível usar essa condição para permitir que os usuários criem somente CMKs simétricas ou somente CMKs com chaves RSA.

A declaração de política demonstrativa do IAM a seguir usa a chave de condição kms:CustomerMasterKeySpec para permitir que as entidades principais criem uma CMK somente quando o CustomerMasterKeySpec na solicitação é RSA_4096.

{ "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringEquals": { "kms:CustomerMasterKeySpec": "RSA_4096" } } }

Também é possível usar a chave de condição kms:CustomerMasterKeySpec para controlar o acesso às operações que usam ou gerenciam uma CMK com base na propriedade CustomerMasterKeySpec da CMK usada para a operação. A operação deve ser uma operação de recurso de CMK, ou seja, uma operação que é autorizada para uma CMK em particular. Para identificar as operações de recursos de CMK, na Tabela de ações e recursos , procure um valor de CMK na coluna Resources para a operação.

Por exemplo, a política do IAM a seguir permite que as entidades principais realizem as operações de recurso da CMK especificadas, mas somente com as CMKs simétricas na conta.

{ "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:DescribeKey" ], "Resource": { "arn:aws:kms:us-west-2:111122223333:key/*" }, "Condition": { "StringEquals": { "kms:CustomerMasterKeySpec": "SYMMETRIC_DEFAULT" } } }

Consulte também

kms:CustomerMasterKeyUsage

Chaves de condição do AWS KMS Tipo de condição Operações de API Tipo de política

kms:CustomerMasterKeyUsage

String

CreateKey

Operações de recursos de CMK

Políticas do IAM

Políticas de chaves e políticas do IAM

A chave de condição kms:CustomerMasterKeyUsage controla o acesso às operações com base no valor da propriedade KeyUsage da CMK que é criada pela operação ou usada nela.

Você pode usar essa chave de condição para controlar o acesso à operação CreateKey com base no valor do parâmetro KeyUsage na solicitação. Os valores válidos para KeyUsage são ENCRYPT_DECRYPT e SIGN_VERIFY.

Por exemplo, é possível permitir que um usuário crie uma CMK somente quando o KeyUsage é ENCRYPT_DECRYPT ou negar a um usuário permissão quando o KeyUsage é SIGN_VERIFY.

A declaração de política do IAM a seguir usa a chave de condição kms:CustomerMasterKeyUsage para permitir que um usuário crie uma CMK somente quando o KeyUsage é ENCRYPT_DECRYPT.

{ "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringEquals": { "kms:CustomerMasterKeyUsage": "ENCRYPT_DECRYPT" } } }

Também é possível usar a chave de condição kms:CustomerMasterKeyUsage para controlar o acesso às operações que usam ou gerenciam uma CMK com base na propriedade KeyUsage da CMK usada para a operação. A operação deve ser uma operação de recurso de CMK, ou seja, uma operação que é autorizada para uma CMK em particular. Para identificar as operações de recursos de CMK, na Tabela de ações e recursos , procure um valor de CMK na coluna Resources para a operação.

Por exemplo, a política do IAM a seguir permite que as entidades principais realizem as operações de recurso da CMK especificadas, mas somente com as CMKs na conta que são usadas para assinatura e verificação.

{ "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:DescribeKey", "kms:GetPublicKey", "kms:ScheduleKeyDeletion" ], "Resource": { "arn:aws:kms:us-west-2:111122223333:key/*" }, "Condition": { "StringEquals": { "kms:CustomerMasterKeyUsage": "SIGN_VERIFY" } } }

Consulte também

kms:DataKeyPairSpec

Chaves de condição do AWS KMS Tipo de condição Operações de API Tipo de política

kms:DataKeySpec

String

GenerateDataKeyPair

GenerateDataKeyPairWithoutPlaintext

Políticas de chaves e políticas do IAM

Você pode usar essa chave de condição para controlar o acesso às operações GenerateDataKeyPair e GenerateDataKeyPairWithoutPlaintext com base no valor do parâmetro KeyPairSpec na solicitação. Por exemplo, é possível permitir que um usuário gere somente tipos de pares de chaves de dados específicos.

O exemplo de instrução de política de chaves a seguir usa a chave de condição kms:DataKeyPairSpec para permitir que um usuário use a CMK para gerar somente pares de chaves de dados RSA.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": [ "kms:GenerateDataKeyPair", "kms:GenerateDataKeyPairWithoutPlaintext" ], "Resource": "*", "Condition": { "StringLike": { "kms:DataKeyPairSpec": "RSA*" } } }

Consulte também

kms:EncryptionAlgorithm

Chaves de condição do AWS KMS Tipo de condição Operações de API Tipo de política

kms:EncryptionAlgorithm

String

Decrypt

Encrypt

GenerateDataKey

GenerateDataKeyPair

GenerateDataKeyPairWithoutPlaintext

GenerateDataKeyWithoutPlaintext

ReEncrypt

Políticas de chaves e políticas do IAM

É possível usar a chave de condição kms:EncryptionAlgorithm para controlar o acesso às operações criptográficas com base no algoritmo de criptografia usado na operação. Para as operações Encrypt, Decrypt e ReEncrypt, ela controla o acesso com base no valor do parâmetro EncryptionAlgorithm na solicitação. Para operações que geram chaves de dados e pares de chaves de dados, ela controla o acesso com base no algoritmo de criptografia que é usado para criptografar a chave de dados.

Essa chave de condição não faz efeito em operações realizadas fora do AWS KMS, como criptografar com a chave pública em um par de CMKs assimétricas fora do AWS KMS.

EncryptionAlgorithm Parâmetro em uma solicitação

Para permitir que os usuários usem apenas um algoritmo de criptografia específico com uma CMK, use uma declaração de política com um efeito Deny e um operador de condição StringNotEquals. Por exemplo, a declaração de política de chaves demonstrativa a seguir proíbe que as entidades principais que podem assumir a função ExampleRole usem essa CMK simétrica nas operações criptográficas especificadas, a menos que o algoritmo de criptografia na solicitação seja RSAES_OAEP_SHA_256.

Diferente de uma declaração de política que permite que um usuário utilize um algoritmo de criptografia específico, uma declaração de política com um duplo negativo como essa evita que outras políticas e concessões da CMK permitam que essa função use outros algoritmos de criptografia. O Deny nessa declaração de política tem precedência sobre qualquer política de chaves ou política do IAM com um efeito Allow e tem precedência sobre todas as concessões dessa CMK e suas entidades principais.

{ "Sid": "Allow only one encryption algorithm with this asymmetric CMK", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*" ], "Resource": "*", "Condition": { "StringNotEquals": { "kms:EncryptionAlgorithm": "RSAES_OAEP_SHA_256" } } }

Algoritmo de criptografia usado para a operação

Também é possível usar a chave de condição kms:EncryptionAlgorithm para controlar o acesso às operações que geram chaves de dados e pares de chaves de dados. Essas operações usam somente CMKs simétricas e o algoritmo SYMMETRIC_DEFAULT.

Por exemplo, essa política do IAM limita seus principais à criptografia simétrica. Ela nega o acesso a qualquer CMK na conta demonstrativa para operações criptográficas, a menos que o algoritmo de criptografia especificado na solicitação ou usado na operação seja SYMMETRIC_DEFAULT. A adição de GenerateDataKey, GenerateDataKeyWithoutPlaintext, GenerateDataKeyPair e GenerateDataKeyPairWithoutPlaintext não tem nenhum efeito prático imediato porque você não pode usar um algoritmo assimétrico CMK ou de criptografia assimétrica para criptografar uma chave de dados ou criptografar a chave privada em um par de chaves de dados.

{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:GenerateDataKeyPair*" ], "Resource": { "arn:aws:kms:us-west-2:111122223333:key/*" }, "Condition": { "StringNotEquals": { "kms:EncryptionAlgorithm": "SYMMETRIC_DEFAULT" } } }

Consulte também

kms:EncryptionContext:

Chaves de condição do AWS KMS Tipo de condição Operações de API Tipo de política

kms:EncryptionContext:

String

CreateGrant

Encrypt

Decrypt

GenerateDataKey

GenerateDataKeyPair

GenerateDataKeyPairWithoutPlaintext

GenerateDataKeyWithoutPlaintext

ReEncrypt

Políticas de chaves e políticas do IAM

É possível usar o prefixo de chave de condição kms:EncryptionContext: para controlar o acesso a uma CMK simétrica com base no contexto de criptografia em uma solicitação de uma operação criptográfica. Use este prefixo de chave de condição para avaliar a chave e o valor no par de contexto de criptografia. Para avaliar apenas as chaves de contexto de criptografia, use a chave de condição kms:EncryptionContextKeys.

Um contexto de criptografia é um conjunto de pares de chave–valor não secreto que você pode incluir em uma solicitação para qualquer operação de criptografia do AWS KMS que usa uma CMK simétrica (Encrypt, Decrypt, GenerateDataKey, GenerateDataKeyWithoutPlaintext e ReEncrypt) e a operação .CreateGrant Quando você especifica um contexto de criptografia em uma operação de criptografia, deve especificar o mesmo contexto de criptografia na operação de descriptografia correspondente. Do contrário, a solicitação para descriptografar falhará.

Não é possível especificar um contexto de criptografia em uma operação criptográfica com uma CMK assimétrica. Os algoritmos de criptografia assimétrica padrão que o AWS KMS usa não oferecem suporte a um contexto de criptografia.

Para usar o prefixo de chave de condição kms:EncryptionContext:, substitua o espaço reservado encryption_context_key com a chave de contexto de criptografia. Substitua o espaço reservado encryption_context_value pelo valor de contexto de criptografia.

"kms:EncryptionContext:encryption_context_key": "encryption_context_value"

Por exemplo, a chave de condição a seguir especifica um contexto de criptografia, no qual a chave é AppName e o valor é ExampleApp.

"kms:EncryptionContext:AppName": "ExampleApp"

O exemplo a seguir de declaração de política de chaves usa essa chave de condição. Como pode haver vários pares de contexto de criptografia em uma solicitação, o operador da condição deve incluir ForAnyValue ou ForAllValues.

Essa política permite que a entidade principal use a CMK em uma solicitação GenerateDataKey somente quando ao menos um dos pares de contexto de criptografia na solicitação for "AppName": "ExampleApp".

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContext:AppName": "ExampleApp" } } }

Exigir vários pares de contexto de criptografia

Para exigir mais de um par de contexto de criptografia, você pode incluir várias instâncias da condição kms:EncryptionContext:. Por exemplo, a declaração de política de exemplo a seguir usa o operador ForAllValues para exigir estes dois pares de contexto de criptografia, e não outros. A ordem em que os pares são especificados não importa.

  • "AppName": "ExampleApp"

  • "FilePath": "/var/opt/secrets/"

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "kms:EncryptionContext:AppName": "ExampleApp", "kms:EncryptionContext:FilePath": "/var/opt/secrets/" } } }

Diferenciação de letras maiúsculas e minúsculas da condição de contexto de criptografia

O contexto de criptografia especificado em uma operação de criptografia deve ser uma correspondência exata, que diferencia maiúsculas de minúsculas para o contexto de criptografia especificado na operação de criptografia. Somente a ordem dos pares em um contexto de criptografia com vários pares pode variar.

No entanto, em condições de política, a chave de condição não diferencia maiúsculas de minúsculas. A diferenciação de maiúsculas e minúsculas do valor da condição é determinada pelo operador de condição de política que você usa, como StringEquals ou StringEqualsIgnoreCase.

Dessa forma, a chave de condição, que consiste no prefixo kms:EncryptionContext: e no chave de contexto de criptografia não diferencia maiúsculas de minúsculas. Uma política que usa essa condição não verifica a capitalização dos elementos da chave de condição. A diferenciação de maiúsculas e minúsculas do valor, ou seja, o valor de contexto de criptografia a substituição, é determinada pelo operador de condição de política.

Por exemplo, a declaração de política a seguir permite a operação quando o contexto de criptografia inclui uma chave Appname, independentemente da sua capitalização. A condição StringEquals exige que ExampleApp seja capitalizado da maneira como foi especificado.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContext:Appname": "ExampleApp" } } }

Para exigir uma chave de contexto de criptografia que diferencia maiúsculas de minúsculas, use a condição de política kms:EncryptionContextKeys com um operador de condição que diferencia maiúsculas de minúsculas, como StringEquals. Nessa condição de política, como a chave de contexto de criptografia é o valor da condição de política, a diferenciação entre maiúsculas e minúsculas é determinada pelo operador da condição.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContextKey": "AppName" } } }

Para solicitar uma avaliação com distinção entre letras maiúsculas e minúsculas da chave e do valor do contexto de criptografia, use as condições de política kms:EncryptionContextKeys e kms:EncryptionContext: juntas na mesma declaração de política. Por exemplo, na declaração de política de exemplo a seguir, como o operador StringEquals diferencia maiúsculas de minúsculas, a chave de contexto de criptografia e o valor de contexto de criptografia diferenciam maiúsculas de minúsculas.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "AppName", "kms:EncryptionContext:AppName": "ExampleApp" } } }

Usar variáveis em uma condição de contexto de criptografia

A chave e o valor em um par de contexto de criptografia devem ser strings literais simples. Não podem ser números inteiros, objetos, ou qualquer tipo que não esteja totalmente resolvido. Se você usar um tipo diferente, como um inteiro ou flutuante, o AWS KMS o interpretará como uma string literal.

"encryptionContext": { "department": "10103.0" }

No entanto, o valor no par de chaves da condição kms:EncryptionContext: pode ser uma variável de política do IAM. Essas variáveis de política são resolvidas em tempo de execução com base nos valores da solicitação. Por exemplo, o aws:CurrentTime é resolvido como a hora da solicitação e aws:username é resolvido como o nome amigável do chamador.

É possível usar essas variáveis de política para criar uma declaração de política com uma condição que requer informações muito específicas em um contexto de criptografia, como o nome de usuário do chamador. Como contém uma variável, é possível usar a mesma declaração de política para todos os usuários que podem assumir a função. Não é necessário escrever uma declaração de política diferente para cada usuário.

Considere uma situação em que você deseja que todos os usuários que podem assumir uma função usem a mesma CMK para criptografar e descriptografar seus dados. No entanto, você deseja permitir que eles descriptografem somente os dados que criptografaram. Comece exigindo que cada solicitação para o AWS KMS inclua um contexto de criptografia em que a chave é user e o valor é o nome de usuário da AWS do chamador, como o seguinte.

"encryptionContext": { "user": "bob" }

Para impor esse requisito, é possível usar uma declaração de política como a do exemplo a seguir. Essa declaração de política concede à função TestTeam permissão para criptografar e descriptografar dados com a CMK. No entanto, a permissão será válida somente quando o contexto de criptografia na solicitação incluir um par "user": "<username>". Para representar o nome do usuário, a condição usa a variável de política aws:username.

Quando a solicitação for avaliada, o nome de usuário do chamador substituirá a variável na condição. Dessa forma, a condição requer um contexto de criptografia de "user": "bob" para "bob" e "user": "alice" para "alice".

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/TestTeam" }, "Action": [ "kms:Decrypt", "kms:Encrypt" ] "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContext:user": "${aws:username}" } } }

É possível usar uma variável de política do IAM somente no valor do par de chaves da condição kms:EncryptionContext:. Não é possível usar uma variável na chave.

Também não é possível usar chaves de contexto específicas do provedor em variáveis. Essas chaves de contexto identificam exclusivamente os usuários que fizeram login na AWS usando a federação de identidades na web.

Como todas as variáveis, essas variáveis podem ser usadas apenas na condição de política kms:EncryptionContext:, não no contexto de criptografia real. E elas podem ser usadas apenas no valor da condição, não na chave.

Por exemplo, a declaração de política de chaves a seguir é semelhante à anterior. No entanto, a condição requer um contexto de criptografia em que a chave seja sub e o valor identifique exclusivamente um usuário conectado a um grupo de usuários do Amazon Cognito. Para obter detalhes sobre como identificar usuários e funções no Amazon Cognito, consulte Funções do IAM no Guia do desenvolvedor do Amazon Cognito.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/TestTeam" }, "Action": [ "kms:Decrypt", "kms:Encrypt" ] "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContext:sub": "${cognito-identity.amazonaws.com:sub}" } } }

Consulte também

kms:EncryptionContextKeys

Chaves de condição do AWS KMS Tipo de condição Operações de API Tipo de política

kms:EncryptionContextKeys

String (lista)

CreateGrant

Decrypt

Encrypt

GenerateDataKey

GenerateDataKeyPair

GenerateDataKeyPairWithoutPlaintext

GenerateDataKeyWithoutPlaintext

ReEncrypt

Políticas de chaves e políticas do IAM

É possível usar a chave de condição kms:EncryptionContextKeys para controlar o acesso a uma CMK simétrica com base no contexto de criptografia em uma solicitação de uma operação criptográfica. Use este prefixo de chave de condição para avaliar apenas a chave em cada par de contexto de criptografia. Para avaliar a chave e o valor, use o prefixo de chaves de condição kms:EncryptionContext:.

Não é possível especificar um contexto de criptografia em uma operação criptográfica com uma CMK assimétrica. Os algoritmos de criptografia assimétrica padrão que o AWS KMS usa não oferecem suporte a um contexto de criptografia.

Você pode usar esta chave de condição para controlar o acesso com base no contexto de criptografia na solicitação da API do AWS KMS. O contexto de criptografia é um conjunto de pares de chave–valor que você pode incluir nas operações de criptografia do AWS KMS com CMKs simétrica (Encrypt, Decrypt, GenerateDataKey, GenerateDataKeyWithoutPlaintext e ReEncrypt) e a operação CreateGrant. Como pode haver vários pares de contexto de criptografia em uma solicitação, o operador da condição deve incluir ForAnyValue ou ForAllValues.

A declaração de política demonstrativa a seguir usa a chave de condição kms:EncryptionContextKeys para permitir o uso de uma CMK em operações especificadas somente quando ao menos um dos pares de contexto de criptografia na solicitação incluir a chave AppName, qualquer que seja o valor.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": [ "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "AppName" } } }

Como a operação de condição StringEquals diferencia maiúsculas de minúsculas, a declaração de política anterior requer a ortografia e capitalização da chave de contexto de criptografia. No entanto, você pode usar um operador de condição que ignora a capitalização da chave, como StringEqualsIgnoreCase.

Você pode especificar várias chaves de contexto de criptografia em cada condição. Por exemplo, a declaração de política a seguir usa os operadores de condição ForAllValues e StringEquals para permitir as operações especificadas somente quando o contexto de criptografia na solicitação incluir as chaves AppName e FilePath (e nenhuma outra), quaisquer que sejam os valores. A ordem das chaves no contexto de criptografia não importa.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": [ "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "kms:EncryptionContextKeys": [ "AppName", "FilePath" ] } } }

Você também pode usar a chave de condição kms:EncryptionContextKeys para exigir um contexto de criptografia em operações de criptografia que usam a CMK.

A declaração de política de chave demonstrativa a seguir usa a chave de condição kms:EncryptionContextKeys com o Null condition operator para permitir acesso à CMK somente quando a chave de condição kms:EncryptionContextKeys existir (não for nula) na solicitação da API. Ela não verifica as chaves ou os valores do contexto de criptografia, somente se o contexto de criptografia existe.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": [ "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "Null": { "kms:EncryptionContextKeys": false } } }

Consulte também

kms:ExpirationModel

Chaves de condição do AWS KMS Tipo de condição Operações de API Tipo de política

kms:ExpirationModel

String

ImportKeyMaterial

Políticas de chaves e políticas do IAM

A chave de condição kms:ExpirationModel controla o acesso à operação ImportKeyMaterial com base no valor do parâmetro ExpirationModel na solicitação.

ExpirationModel é um parâmetro opcional que determina se o material de chave importada expira. Os valores válidos são KEY_MATERIAL_EXPIRES e KEY_MATERIAL_DOES_NOT_EXPIRE. KEY_MATERIAL_EXPIRES é o valor padrão.

A data e a hora de expiração são determinadas pelo valor do parâmetro ValidTo. O parâmetro ValidTo é obrigatório, a menos que o valor do parâmetro ExpirationModel seja KEY_MATERIAL_DOES_NOT_EXPIRE. Você também pode usar a chave de condição kms:ValidTo para exigir uma determinada data de expiração como uma condição para o acesso.

A declaração de política demonstrativa a seguir usa a chave de condição kms:ExpirationModel para permitir que um usuário importe o material de chave para uma CMK apenas quando a solicitação incluir o parâmetro ExpirationModel e seu valor for KEY_MATERIAL_DOES_NOT_EXPIRE.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:ImportKeyMaterial", "Resource": "*", "Condition": { "StringEquals": { "kms:ExpirationModel": "KEY_MATERIAL_DOES_NOT_EXPIRE" } } }

Você também pode usar a chave de condição kms:ExpirationModel para permitir que um usuário importe o material de chave somente quando o material de chave expirar, sem especificar uma data de expiração na condição. A declaração de política do exemplo a seguir usa a chave de condição kms:ExpirationModel com o Null condition operator para permitir que um usuário importe o material de chave somente quando a solicitação não tiver um parâmetro ExpirationModel.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:ImportKeyMaterial", "Resource": "*", "Condition": { "Null": { "kms:ExpirationModel": true } } }

Consulte também

kms:GrantConstraintType

Chaves de condição do AWS KMS Tipo de condição Operações de API Tipo de política

kms:GrantConstraintType

String

CreateGrant

Políticas de chaves e políticas do IAM

Você pode usar essa chave de condição para controlar o acesso à operação CreateGrant com base no tipo de restrição de concessão na solicitação.

Ao criar uma concessão, você pode especificar uma restrição de concessão para permitir as operações permitidas pela concessão apenas quando um contexto de criptografia específico existir. A restrição de concessão pode ser de dois tipos: EncryptionContextEquals ou EncryptionContextSubset. Você pode usar essa chave de condição para verificar se a solicitação contém um tipo ou outro.

A declaração de política de exemplo a seguir usa a chave de condição kms:GrantConstraintType para permitir que um usuário crie concessões apenas quando a solicitação inclui uma restrição de concessão EncryptionContextEquals. O exemplo mostra uma declaração de política em uma política de chaves.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:GrantConstraintType": "EncryptionContextEquals" } } }

Consulte também

kms:GrantIsForAWSResource

Chaves de condição do AWS KMS Tipo de condição Operações de API Tipo de política

kms:GrantIsForAWSResource

Booliano

CreateGrant

ListGrants

RevokeGrant

Políticas de chaves e políticas do IAM

Permite ou nega permissão para as operações CreateGrant, ListGrants ou RevokeGrant apenas quando um AWSserviços da integrados ao AWS KMS chama a operação em nome do usuário. Essa condição de política não permite que o usuário chame essas operações de concessão diretamente.

A declaração de política de chaves demonstrativa a seguir usa a chave de condição kms:GrantIsForAWSResource. Ela permite que serviços da AWS integrados ao AWS KMS, como o Amazon EBS, criem concessões nessa CMK em nome do usuário especificado.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } }

Consulte também

kms:GrantOperations

Chaves de condição do AWS KMS Tipo de condição Operações de API Tipo de política

kms:GrantOperations

String

CreateGrant

Políticas de chaves e políticas do IAM

Você pode usar essa chave de condição para controlar o acesso à operação CreateGrant com base nas operações de concessão na solicitação. Por exemplo, você pode permitir que um usuário crie concessões que deleguem permissão para criptografar, mas não descriptografar.

A declaração de política demonstrativa a seguir usa a chave de condição kms:GrantOperations para permitir que um usuário crie concessões que deleguem permissão para criptografar e recriptografar quando essa CMK é a CMK de destino. O exemplo mostra uma declaração de política em uma política de chaves.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Encrypt", "ReEncryptTo" ] } } }

Consulte também

kms:GranteePrincipal

Chaves de condição do AWS KMS Tipo de condição Operações de API Tipo de política

kms:GranteePrincipal

String

CreateGrant

Políticas do IAM e de chaves

Você pode usar essa chave de condição para controlar o acesso à operação CreateGrant com base no valor do parâmetro GranteePrincipal na solicitação. Por exemplo, é possível permitir que um usuário crie concessões para usar uma CMK apenas quando a entidade principal favorecida na solicitação CreateGrant corresponder à entidade principal especificada na declaração de condição.

A declaração de política demonstrativa a seguir usa a chave de condição kms:GranteePrincipal para permitir que um usuário crie concessões para uma CMK apenas quando a entidade principal favorecida na concessão for LimitedAdminRole.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:GranteePrincipal": "arn:aws:iam::111122223333:role/LimitedAdminRole" } } }

Consulte também

kms:KeyOrigin

Chaves de condição do AWS KMS Tipo de condição Operações de API Tipo de política

kms:KeyOrigin

String

CreateKey

Operações de recursos de CMK

Políticas do IAM

Políticas de chaves e políticas do IAM

A chave de condição kms:KeyOrigin controla o acesso às operações com base no valor da propriedade Origin da CMK que é criada pela operação ou usada nela. Ela funciona como uma condição de recurso ou de solicitação.

Você pode usar essa chave de condição para controlar o acesso à operação CreateKey com base no valor do parâmetro Origem na solicitação. Os valores válidos para Origin são AWS_KMS, AWS_CLOUDHSM e EXTERNAL.

Por exemplo, você pode permitir que um usuário crie uma CMK apenas quando o material de chaves é gerado no KMS (AWS_KMS), apenas quando o material de chaves é gerado em um cluster do AWS CloudHSM associado a um armazenamento de chaves personalizado (AWS_CLOUDHSM) ou apenas quando o material de chaves é importado de uma fonte externa (EXTERNAL).

A declaração de política demonstrativa a seguir usa a chave de condição kms:KeyOrigin para permitir que um usuário crie uma CMK somente quando o AWS KMS cria o material de chave.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringEquals": { "kms:KeyOrigin": "AWS_KMS" } } }

Também é possível usar a chave de condição kms:KeyOrigin para controlar o acesso às operações que usam ou gerenciam uma CMK com base na propriedade Origin da CMK usada para a operação. A operação deve ser uma operação de recurso de CMK, ou seja, uma operação que é autorizada para uma CMK em particular. Para identificar as operações de recursos de CMK, na Tabela de ações e recursos , procure um valor de CMK na coluna Resources para a operação.

Por exemplo, a política do IAM a seguir permite que as entidades principais realizem operações de recurso da CMK especificadas, mas somente CMKs na conta que foram criadas em um armazenamento de chaves personalizado.

{ "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:GenerateDataKeyPair", "kms:GenerateDataKeyPairWithoutPlaintext", "kms:ReEncrypt*" ], "Resource": { "arn:aws:kms:us-west-2:111122223333:key/*" }, "Condition": { "StringEquals": { "kms:KeyOrigin": "AWS_CLOUDHSM" } } }

Consulte também

kms:MessageType

Chaves de condição do AWS KMS Tipo de condição Operações de API Tipo de política

kms:MessageType

String

Sign

Verify

Políticas de chaves e políticas do IAM

A chave de condição kms:MessageType controla o acesso às operações Sign e Verify com base no valor do parâmetro MessageType na solicitação. Os valores válidos para MessageType são RAW e DIGEST.

Por exemplo, a declaração de política de chaves a seguir usa a chave de condição kms:MessageType para permitir que um usuário use uma CMK assimétrica para assinar uma mensagem, mas não um resumo de mensagens.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:Sign", "Resource": "*", "Condition": { "StringEquals": { "kms:MessageType": "RAW" } } }

Consulte também

kms:ReEncryptOnSameKey

Chaves de condição do AWS KMS Tipo de condição Operações de API Tipo de política

kms:ReEncryptOnSameKey

Booliano

ReEncrypt

Políticas de chaves e políticas do IAM

Você pode usar essa chave de condição para controlar o acesso à operação ReEncrypt com base no fato de a solicitação especificar ou não uma CMK de destino que seja a mesma usada para a criptografia original. Por exemplo, a declaração de política a seguir usa a chave de condição kms:ReEncryptOnSameKey para permitir que um usuário recriptografe apenas quando a CMK de destino é a mesma usada para a criptografia original. O exemplo mostra uma declaração de política em uma política de chaves.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:ReEncrypt*", "Resource": "*", "Condition": { "Bool": { "kms:ReEncryptOnSameKey": true } } }

alias do kms:Request

Chaves de condição do AWS KMS Tipo de condição Operações de API Tipo de política

kms:RequestAlias

String (lista)

Operações criptográficas

DescribeKey

GetPublicKey

Políticas de chaves e políticas do IAM

É possível usar essa chave de condição para permitir uma operação somente quando a solicitação usa um alias específico para identificar a CMK. A chave de condição kms:RequestAlias controla o acesso a uma CMK usada em uma operação criptográfica, GetPublicKey ou DescribeKey com base no alias que identifica essa CMK na solicitação. (Essa condição de política não tem efeito sobre a operação GenerateRandom porque a operação não usa um CMK ou alias.)

Essa condição oferece suporte ao controle de acesso baseado em atributos (ABAC) no AWS KMS, que permite controlar o acesso ao CMKs com base nas tags e nos aliases de uma CMK. É possível usar tags e aliases para permitir ou negar acesso a um CMK sem alterar políticas ou concessões. Para obter mais detalhes, consulte Usar ABAC para oAWS KMS.

Para especificar o alias nessa condição de política, use um nome de alias, como alias/project-alpha, ou um padrão de nome de alias, como alias/*test*. Você não pode especificar um ARN de alias no valor dessa chave de condição.

Para satisfazer essa condição, o valor do parâmetro KeyId na solicitação deve ser um nome de alias ou ARN de alias correspondente. Caso a solicitação use um identificador de chaves diferente, ela não satisfaz a condição, mesmo que o identifique o mesmo CMK.

Por exemplo, a declaração de política de chaves a seguir permite que o principal chame a operação GenerateDataKey no CMK, mas somente quando o valor do parâmetro KeyId na solicitação é alias/finance-key ou um ARN de alias com esse nome de alias, como arn:aws:kms:us-west-2:111122223333:alias/finance-key.

{ "Sid": "Key policy using a request alias condition", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/developer" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:RequestAlias": "alias/finance-key" } } }

Essa chave de condição não pode ser usada para controlar o acesso a operações de alias, como CreateAlias ou DeleteAlias. Para obter informações sobre como controlar o acesso a operações de alias, consulte Controlar o acesso a aliases.

alias de kms:Resource

Chaves de condição do AWS KMS Tipo de condição Operações de API Tipo de política

kms:ResourceAliases

String (lista)

Operações de recursos de CMK

Somente políticas do IAM

Use esta chave de condição para controlar o acesso a um CMK com base nos aliases associados à CMK. A operação deve ser uma operação de recurso de CMK, ou seja, uma operação que é autorizada para uma CMK em particular. Para identificar as operações de recursos de CMK, na Tabela de ações e recursos , procure um valor de CMK na coluna Resources para a operação.

Essa condição oferece suporte ao controle de acesso baseado em atributo (ABAC) no AWS KMS, que permite controlar o acesso ao CMKs com base nas tags atribuídas a um CMK e nos aliases associados a um CMK. É possível usar tags e aliases para permitir ou negar acesso a um CMK sem alterar políticas ou concessões. Para obter mais detalhes, consulte Usar ABAC para oAWS KMS.

nota

A condição kms:ResourceAliases entrará em vigor somente quando o CMK estiver em conformidade com os aliases por cota do CMK. Se uma CMK exceder essa cota, os principais autorizados a usar a CMK pela condição kms:ResourceAliases terão o acesso negado à CMK.

Para especificar o alias nessa condição de política, use um nome de alias, como alias/project-alpha, ou um padrão de nome de alias, como alias/*test*. Você não pode especificar um ARN de alias no valor dessa chave de condição. Para satisfazer a condição, o CMK usado na operação deve ter o alias especificado. Não importa se ou como a CMK é identificada na solicitação para a operação.

Por exemplo, a declaração de política do IAM a seguir permite que o principal chame a operação GenerateDataKey do CMK em qualquer AWS nas contas da finance-key especificadas que estão associadas ao alias . Um alias deve ser exclusivo em uma conta e região da AWS, mas essa condição pode permitir acesso a várias CMKs em diferentes regiões da AWS de cada conta. (As políticas de chaves da CMKs afetada também devem permitir que a conta da principal as use para essa operação.)

Para indicar que a condição é atendida quando um dos muitos aliases que podem ser associados ao CMK for alias/finance-key, a condição usa o operador de conjunto ForAnyValue.

Como a condição kms:ResourceAliases é baseada no recurso, e não na solicitação, uma chamada para o GenerateDataKey será bem-sucedida para qualquer CMK associada ao alias finance-key, mesmo que a solicitação use um ID de chave ou ARN de chave para identificar a CMK.

{ "Version": "2012-10-17", "Statement": { "Sid": "AliasBasedIAMPolicy", "Effect": "Allow", "Action": "kms:GenerateDataKey", "Resource": [ "arn:aws:kms:*:111122223333:key/*", "arn:aws:kms:*:444455556666:key/*", ], "Condition": { "ForAnyValue:StringEquals": { "kms:ResourceAliases": "alias/finance-key" } } } }

kms:RetiringPrincipal

Chaves de condição do AWS KMS Tipo de condição Operações de API Tipo de política

kms:RetiringPrincipal

String (lista)

CreateGrant

Políticas de chaves e políticas do IAM

É possível usar essa chave de condição para controlar o acesso à operação CreateGrant com base no valor do parâmetro RetiringPrincipal na solicitação. Por exemplo, é possível permitir que um usuário crie concessões para usar uma CMK apenas quando RetiringPrincipal na solicitação CreateGrant corresponder a RetiringPrincipal na declaração de condição.

A declaração de política demonstrativa a seguir permite a um usuário criar permissões para a CMK. A chave de condição kms:RetiringPrincipal restringe a permissão a solicitações CreateGrant em que o principal a ser desativado na concessão é o usuário LimitedAdminRole ou o OpsAdmin.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:RetiringPrincipal": [ "arn:aws:iam::111122223333:role/LimitedAdminRole", "arn:aws:iam::111122223333:user/OpsAdmin" ] } } }

Consulte também

kms:SigningAlgorithm

Chaves de condição do AWS KMS Tipo de condição Operações de API Tipo de política

kms:SigningAlgorithm

String

Sign

Verify

Políticas de chaves e políticas do IAM

Você pode usar a chave de condição kms:SigningAlgorithm para controlar o acesso às operações Sign e Verify com base no valor do parâmetro SigningAlgorithm na solicitação. Essa chave de condição não surte efeito em operações realizadas fora do AWS KMS, como a verificação de assinaturas com a chave pública em um par de CMKs assimétricas fora do AWS KMS.

O exemplo de política de chaves a seguir permite que os usuários que podem assumir a função testers usem a CMK para assinar mensagens somente quando o algoritmo de assinatura usado para a solicitação é um algoritmo RSASSA_PSS, como RSASSA_PSS_SHA512.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/testers" }, "Action": "kms:Sign", "Resource": "*", "Condition": { "StringLike": { "kms:SigningAlgorithm": "RSASSA_PSS*" } } }

Consulte também

kms:ValidTo

Chaves de condição do AWS KMS Tipo de condição Operações de API Tipo de política

kms:ValidTo

Time stamp

ImportKeyMaterial

Políticas de chaves e políticas do IAM

A chave de condição kms:ValidTo controla o acesso à operação ImportKeyMaterial com base no valor do parâmetro ValidTo na solicitação, que determina quando o material de chave importada expira. O valor é expresso no horário do Unix.

Por padrão, o parâmetro ValidTo é obrigatório em uma solicitação ImportKeyMaterial. No entanto, se o valor do parâmetro ExpirationModel for KEY_MATERIAL_DOES_NOT_EXPIRE, o parâmetro ValidTo será inválido. Você também pode usar a chave de condição kms: ExpirationModel para exigir o parâmetro ExpirationModel ou um valor de parâmetro específico.

A declaração de política demonstrativa a seguir permite a um usuário importar material de chave em uma CMK. A chave de condição kms:ValidTo limita a permissão para solicitações ImportKeyMaterial em que o valor ValidTo é menor que ou igual a 1546257599.0 (31 de dezembro de 2018 23:59:59).

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:ImportKeyMaterial", "Resource": "*", "Condition": { "NumericLessThanEquals": { "kms:ValidTo": "1546257599.0" } } }

Consulte também

kms:ViaService

Chaves de condição do AWS KMS Tipo de condição Operações de API Tipo de política

kms:ViaService

String

Operações de recursos de CMK

Políticas de chaves e políticas do IAM

A chave de condição kms:ViaService limita o uso de uma AWS KMS Chave mestra do cliente (CMK) a solicitações de serviços especificados da AWS. É possível especificar um ou mais serviços em cada chave de condição kms:ViaService. A operação deve ser uma operação de recurso de CMK, ou seja, uma operação que é autorizada para uma CMK em particular. Para identificar as operações de recursos de CMK, na Tabela de ações e recursos , procure um valor de CMK na coluna Resources para a operação.

Por exemplo, a declaração demonstrativa de uma política de chaves usa a chave de condição kms:ViaService para permitir que uma CMK gerenciada pelo cliente seja usada para as ações especificadas somente quando a solicitação vem do Amazon EC2 ou do Amazon RDS na região Oeste dos EUA (Oregon) em nome de ExampleUser.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:ListGrants", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "ec2.us-west-2.amazonaws.com", "rds.us-west-2.amazonaws.com" ] } } }

Também é possível usar uma chave de condição kms:ViaService para negar permissão para usar uma CMK quando a solicitação vem de serviços específicos. Por exemplo, a declaração demonstrativa de uma política de chaves a seguir usa uma chave de condição kms:ViaService para impedir que uma CMK gerenciada pelo cliente seja usada para operações Encrypt quando a solicitação vem do AWS Lambda em nome de ExampleUser.

{ "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": [ "kms:Encrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "lambda.us-west-2.amazonaws.com" ] } } }
Importante

Quando você usa a chave de condição kms:ViaService, o serviço faz a solicitação em nome de uma entidade principal na conta da AWS. Essas entidades principais deve ter as seguintes permissões:

  • Permissão para usar a CMK. A entidade principal precisa conceder essas permissões ao serviço integrado, de forma que o serviço possa usar a CMK gerenciada pelo cliente em nome da entidade principal. Para obter mais informações, consulte Como os serviços da AWS, usam o AWS KMS.

  • Permissão para usar o serviço integrado. 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.

Todas as CMKs gerenciadas pela AWS usam uma chave de condição kms:ViaService no seu documento de política de chaves. Essa condição permite que a CMK seja usada apenas para solicitações que vêm do serviço que criou a CMK. Para ver a política de chaves de um CMK gerenciado pela AWS, use a operação GetKeyPolicy.

A chave de condição kms:ViaService é válida no IAM e em declarações de políticas de chaves. Os serviços que você especificar devem ser integrados ao AWS KMS e compatíveis com a chave de condição kms:ViaService.

Serviços que oferecem suporte à chave de condição kms:ViaService

A tabela a seguir lista os serviços da AWS que são integrados ao AWS KMS e oferecem suporte ao uso da chave de condição kms:ViaService no CMKs gerenciado pelo cliente. Os serviços nesta tabela podem não estar disponíveis em todas as regiões. Use o sufixo .amazonaws.com do nome AWS KMS ViaService em todas as partições AWS.

nota

Talvez seja necessário rolar horizontalmente ou verticalmente para ver todos os dados na tabela.

Nome do serviço AWS KMS ViaService nome
Amazon Appflow appflow.AWS_region.amazonaws.com
Amazon Athena athena.AWS_region.amazonaws.com
Gerenciador de auditoria da AWS auditmanager.AWS_region.amazonaws.com
Amazon Aurora rds.AWS_region.amazonaws.com
AWS Backup Backup do .AWS_region.amazonaws.com
AWS CodeArtifact artefato de código.AWS_region.amazonaws.com
Amazon Connect connect.AWS_region.amazonaws.com
AWS Database Migration Service (AWS DMS) dms.AWS_region.amazonaws.com
AWS Directory Service directoryservice.AWS_region.amazonaws.com
Amazon DynamoDB dynamodb.AWS_region.amazonaws.com
Amazon EC2 Systems Manager (SSM) ssm.AWS_region.amazonaws.com
Amazon Elastic Block Store (Amazon EBS) ec2.AWS_region.amazonaws.com (somente EBS)
Amazon Elastic Container Registry (Amazon ECR) ecr.AWS_region.amazonaws.com
Amazon Elastic File System (Amazon EFS) elasticfilesystem.AWS_region.amazonaws.com
Amazon Elastic Kubernetes Service (Amazon EKS) eks.AWS_region.amazonaws.com
Amazon ElastiCache

Inclua os dois nomes ViaService no valor da chave de condição:

  • o elasticache.AWS_region.amazonaws.com

  • com dax.AWS_region.amazonaws.com

Amazon Elasticsearch Service (Amazon ES) es.AWS_region.amazonaws.com
Amazon Forecast previsão.AWS_region.amazonaws.com
Amazon FSx fsx.AWS_region.amazonaws.com
AWS Glue cola.AWS_region.amazonaws.com
IoT da AWSSiteWise Iotsitewise.AWS_region.amazonaws.com
Amazon Kendra kendra.AWS_region.amazonaws.com
Amazon Kinesis kinesis.AWS_region.amazonaws.com
Amazon Kinesis Data Firehose firehose.AWS_region.amazonaws.com
Amazon Streams de vídeo do Kinesis kinesisvideo.AWS_region.amazonaws.com
AWS Lambda lambda.AWS_region.amazonaws.com
Amazon Lex lex.AWS_region.amazonaws.com
AWS License Manager License-Manager do .AWS_region.amazonaws.com
Amazon Managed Streaming for Apache Kafka (Amazon MSK) com kafka.AWS_region.amazonaws.com
Fluxos de trabalho gerenciados pela Amazon para Apache Airflow (MWAA) </s><s id="27-11-1">Amazon MonitronAWS_region.amazonaws.com
Amazon Monitron é monitron.AWS_region.amazonaws.com
Amazon MQ mqAWS_region.amazonaws.com
Amazon Neptune rds.AWS_region.amazonaws.com
Performance Insights do Amazon RDS rds.AWS_region.amazonaws.com
Amazon Redshift redshift.AWS_region.amazonaws.com
Amazon Relational Database Service (Amazon RDS) rds.AWS_region.amazonaws.com
AWS Secrets Manager secretsmanager.AWS_region.amazonaws.com
Amazon Simple Email Service (Amazon SES) ses.AWS_region.amazonaws.com
Amazon Simple Notification Service (Amazon SNS) sns do .AWS_region.amazonaws.com
Amazon Simple Queue Service (Amazon SQS) sqs.AWS_region.amazonaws.com
Amazon Simple Storage Service (Amazon S3) s3.AWS_region.amazonaws.com
AWS Snowball importexport.AWS_region.amazonaws.com
AWS Storage Gateway Storagegateway do .AWS_region.amazonaws.com
Timestream da Amazon fluxo de tempo.AWS_region.amazonaws.com
Amazon WorkMail workmail.AWS_region.amazonaws.com
Amazon WorkSpaces workspaces.AWS_region.amazonaws.com
AWS X-Ray xray.AWS_region.amazonaws.com

kms:WrappingAlgorithm

Chaves de condição do AWS KMS Tipo de condição Operações de API Tipo de política

kms:WrappingAlgorithm

String

GetParametersForImport

Políticas de chaves e políticas do IAM

Essa chave de condição controla o acesso à operação GetParametersForImport com base no valor do parâmetro WrappingAlgorithm na solicitação. Você pode usar essa condição para exigir que os principais usem determinado algoritmo para criptografar material de chaves durante o processo de importação. As solicitações para a chave pública e o token de importação exigidos falham quando especificam um algoritmo de empacotamento diferente.

A instrução de política de exemplo a seguir usa a chave de condição kms:WrappingAlgorithm para dar ao usuário de exemplo permissão para chamar a operação GetParametersForImport, mas impede-o de usar o algoritmo de empacotamento RSAES_OAEP_SHA_1. Quando o WrappingAlgorithm na solicitação GetParametersForImport é RSAES_OAEP_SHA_1, a operação falha.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:GetParametersForImport", "Resource": "*", "Condition": { "StringNotEquals": { "kms:WrappingAlgorithm": "RSAES_OAEP_SHA_1" } } }

Consulte também

kms:WrappingKeySpec

Chaves de condição do AWS KMS Tipo de condição Operações de API Tipo de política

kms:WrappingKeySpec

String

GetParametersForImport

Políticas de chaves e políticas do IAM

Essa chave de condição controla o acesso à operação GetParametersForImport com base no valor do parâmetro WrappingKeySpec na solicitação. Você pode usar essa condição para exigir que as entidades principais usem determinado tipo de chave pública durante o processo de importação. Se a solicitação especifica um tipo de chave diferente, ela falha.

Como o único valor válido para o valor do parâmetro WrappingKeySpec é RSA_2048, impedir que os usuários usem esse valor efetivamente os impede de usar a operação GetParametersForImport.

A declaração de política de exemplo a seguir usa a chave de condição kms:WrappingAlgorithm para exigir que WrappingKeySpec na solicitação seja RSA_2048.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:GetParametersForImport", "Resource": "*", "Condition": { "StringEquals": { "kms:WrappingKeySpec": "RSA_2048" } } }

Consulte também

AWS KMS Chaves de condição do para o AWS Nitro Enclaves

O AWS Nitro Enclaves é um recurso do Amazon EC2 que permite criar ambientes de computação isolados chamados en Azurees para proteger e processar dados altamente confidenciais. O AWS KMS fornece chaves de condição para oferecer suporte ao AWS Nitro Enclaves. Essas chaves de condições funcionam somente quando uma solicitação para uma operação AWS KMS é originada em uma enNova.

Quando você chama kms-decrypt, kms-generate-data-key ou kms-generate-random SDK do AWS Nitro En curvees APIs de uma engregar, essas APIs chamam a operação AWS KMS correspondente com um parâmetro que inclui um documento de comprovação assinado a partir da engregar. O documento de declaração assinado prova a identidade da en FILa para a AWS KMS.

As chaves de condição a seguir permitem que você limite as permissões para essas operações com base no conteúdo do documento de declaração assinado. Antes de permitir uma operação, o AWS KMS compara o documento de comprovação da enNova com os valores dessas chaves de condição do AWS KMS.

pacote: kms:RecipientAttestation:ImageSha384

Chaves de condição do AWS KMS Tipo de condição Operações de API Tipo de política

kms:RecipientAttestation:ImageSha384

String

Decrypt

GenerateDataKey

GenerateRandom

Políticas de chaves e políticas do IAM

A chave de condição kms:RecipientAttestation:ImageSha384 permite solicitações kms-decrypt, kms-generate-data-key e kms-generate-random de um enCloude somente quando o hash da imagem do documento de declaração assinado na solicitação corresponde ao valor na chave de condição. O valor ImageSha384 corresponde a Observe[0] no documento de comprovação. Essa chave de condição é efetiva somente quando você chama o SDK AWS do Nitro Enventes de APIs a partir de uma enNova.

Por exemplo, a declaração de política de chaves a seguir permite que a função do data-processing use a CMK para as operações kms-decrypt (Decrypt), kms-generate-data-key (GenerateDataKey) e kms-generate-random (GenerateRandom). A chave de condição kms:RecipientAttestation:ImageSha384 permite as operações somente quando o valor de hash da imagem ( porque[0]) do documento de declaração na solicitação corresponde ao valor de hash da imagem na condição.

Caso a solicitação não inclua nenhum documento de declaração, a permissão é negada porque essa condição não foi atendida.

{ "Sid" : "Enable enclave data processing", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:role/data-processing" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey", "kms:GenerateRandom" ], "Resource" : "*", "Condition": { "StringEqualsIgnoreCase": { "kms:RecipientAttestation:ImageSha384": "9fedcba8abcdef7abcdef6abcdef5abcdef4abcdef3abcdef2abcdef1abcdef1abcdef0abcdef1abcdef2abcdef3abcdef4abcdef5abcdef6abcdef7abcdef99" } } }

treinamento kms:RecipientAttestation: devido

Chaves de condição do AWS KMS Tipo de condição Operações de API Tipo de política

kms:RecipientAttestation:PCR

String

Decrypt

GenerateDataKey

GenerateRandom

Políticas de chaves e políticas do IAM

A chave de condição kms:RecipientAttestation:PCR permite as solicitações kms-decrypt, kms-generate-data-key e kms-generate-random de um enCloude somente quando a configuração de plataforma é registrada ( Level Line Configuration Registers,definição) do documento de declaração assinado na solicitação corresponde ao PCRs na chave de condição. Essa chave de condição é eficaz somente quando você chama o SDK do Nitro Enventes do AWS de uma engregação.APIs

Para especificar um valor de , use o formato a seguir. Concatene o ID de para o nome da chave de condição. O valor deve ser uma string hexadecimal em letras minúsculas de até 96 bytes.

"kms:RecipientAttestation:PCRPCR_ID": "PCR_value"

Por exemplo, a chave de condição a seguir especifica um valor específico para Remover[1], que corresponde ao hash do kernel usado para o processo de engregação e bootstrap.

kms:RecipientAttestation:PCR1: "0x1abcdef2abcdef3abcdef4abcdef5abcdef6abcdef7abcdef8abcdef9abcdef8abcdef7abcdef6abcdef5abcdef4abcdef3abcdef2abcdef1abcdef0abcde"

O exemplo de declaração de política de chaves a seguir permite que a função do data-processing use a CMK para a operação kms-decrypt (Decrypt).

A chave de condição kms:RecipientAttestation:PCR nesta instrução permite a operação somente quando o valor1 no documento de atestado assinado na solicitação corresponde ao valor kms:RecipientAttestation:PCR1 na condição. Use o operador de política StringEqualsIgnoreCase para exigir uma comparação sem diferenciação entre maiúsculas e minúsculas dos valores .

Caso a solicitação não inclua um documento de declaração, a permissão é negada porque essa condição não foi atendida.

{ "Sid" : "Enable enclave data processing", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:role/data-processing" }, "Action": "kms:Decrypt", "Resource" : "*", "Condition": { "StringEqualsIgnoreCase": { "kms:RecipientAttestation:PCR1": "0x1de4f2dcf774f6e3b679f62e5f120065b2e408dcea327bd1c9dddaea6664e7af7935581474844767453082c6f1586116376cede396a30a39a611b9aad7966c87" } } }