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á.
AWS KMS chaves de condição
AWS KMS fornece um conjunto de chaves de condição que você pode usar nas principais políticas e IAM políticas. Essas chaves de condição são específicas para AWS KMS. Por exemplo, você pode usar a chave de kms:EncryptionContext:context-key
condição para exigir um contexto de criptografia específico ao controlar o acesso a uma KMS chave de criptografia simétrica.
Condições para uma solicitação API de operação
Muitas chaves de AWS KMS condição controlam o acesso a uma KMS chave com base no valor de um parâmetro na solicitação de uma AWS KMS operação. Por exemplo, você pode usar a chave de KeySpec condição kms: em uma IAM política para permitir o uso da CreateKeyoperação somente quando o valor do KeySpec
parâmetro na CreateKey
solicitação forRSA_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, você pode usar a chave de KeySpec condição kms: para permitir que os usuários usem a CreateKey
operação somente quando o valor do KeySpec
parâmetro forSYMMETRIC_DEFAULT
, que é o valor padrão. Essa condição permite solicitações que têm o parâmetro KeySpec
com o valor SYMMETRIC_DEFAULT
e solicitações que não têm parâmetro KeySpec
.
Condições para KMS chaves usadas em API operações
Algumas chaves de AWS KMS condição podem controlar o acesso às operações com base em uma propriedade da KMS chave usada na operação. Por exemplo, você pode usar a KeyOrigin condição kms: para permitir que os diretores GenerateDataKeychamem uma KMS chave somente quando a Origin
da KMS chave for. 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 KMS chave, ou seja, uma operação autorizada para uma KMS chave específica. Para identificar as KMS principais operações de recursos, na Tabela de ações e recursos, procure um valor de KMS key
na Resources
coluna da operação. Se você usar esse tipo de chave de condição com uma operação não autorizada para um determinado recurso de KMS chave, por exemplo ListKeys, a permissão não será efetiva porque a condição nunca poderá ser satisfeita. Não há nenhum recurso KMS essencial envolvido na autorização da ListKeys
operação e nenhuma KeySpec
propriedade.
Os tópicos a seguir descrevem cada chave de AWS KMS condição e incluem exemplos de declarações de política que demonstram a sintaxe da política.
Usar operadores de conjuntos com chaves de condição
Quando uma condição de política compara dois conjuntos de valores, como o conjunto de tags em uma solicitação e o conjunto de tags em uma política, você precisa saber AWS como comparar os conjuntos. IAMdefine dois operadores de conjunto ForAnyValue
eForAllValues
, para essa finalidade. Use operadores de conjunto somente com chaves de condição de vários valores, que exigem esses operadores. Não use operadores de conjuntos com chaves de condição de valor único. Como sempre, teste suas instruções de política completamente antes de usá-las em um ambiente de produção.
Chaves de condição são de valor único ou de vários valores. Para determinar se uma chave de AWS KMS condição tem valor único ou de vários valores, consulte a coluna Tipo de valor na descrição da chave de condição.
-
Chaves de condição de valor único têm no máximo um valor no contexto de autorização (a solicitação ou o recurso). Por exemplo, como cada API chamada pode ser originada de apenas uma Conta da AWS, kms: CallerAccount é uma chave de condição de valor único. Não use um operador de conjunto com uma chave de condição de valor único.
-
Chaves de condição de vários valores têm diversos valores no contexto de autorização (a solicitação ou o recurso). Por exemplo, como cada KMS chave pode ter vários aliases, kms: ResourceAliases pode ter vários valores. Chaves de condição de vários valores exigem um operador de conjunto.
Observe que a diferença entre chaves de condição de valor único e de vários valores depende do número de valores no contexto de autorização, e não do número de valores na condição da política.
Atenção
O uso de um operador de conjunto com uma chave de condição de valor único pode criar uma instrução de política excessivamente permissiva (ou excessivamente restritiva). Use operadores de conjunto somente com chaves de condição de vários valores.
Se você criar ou atualizar uma política que inclua um operador de ForAllValues
conjunto com kms:EncryptionContext: chave de contexto ou chaves de aws:RequestTag/tag-key
condição, AWS KMS retornará a seguinte mensagem de erro:
OverlyPermissiveCondition: Using the ForAllValues set operator with a
single-valued condition key matches requests without the specified [encryption context or
tag] or with an unspecified [encryption context or tag]. To fix, remove
ForAllValues.
Para obter informações detalhadas sobre os operadores ForAnyValue
e ForAllValues
conjuntos, consulte Usando várias chaves e valores no Guia do IAM usuário. Para obter informações sobre o risco de usar o operador ForAllValues
set com uma condição de valor único, consulte Aviso de segurança — ForAllValues com chave de valor único no Guia do IAM usuário.
Tópicos
- kms: BypassPolicyLockoutSafetyCheck
- kms: CallerAccount
- kms: CustomerMasterKeySpec (obsoleto)
- kms: CustomerMasterKeyUsage (obsoleto)
- kms: DataKeyPairSpec
- kms: EncryptionAlgorithm
- kms:EncryptionContext: chave de contexto
- kms: EncryptionContextKeys
- kms: ExpirationModel
- kms: GrantConstraintType
- kms: GrantIsFor AWSResource
- kms: GrantOperations
- kms: GranteePrincipal
- kms: KeyAgreementAlgorithm
- kms: KeyOrigin
- kms: KeySpec
- kms: KeyUsage
- kms: MacAlgorithm
- kms: MessageType
- kms: MultiRegion
- kms: MultiRegionKeyType
- kms: PrimaryRegion
- kms: ReEncryptOnSameKey
- kms: RequestAlias
- kms: ResourceAliases
- kms: ReplicaRegion
- kms: RetiringPrincipal
- kms: RotationPeriodInDays
- kms: ScheduleKeyDeletionPendingWindowInDays
- kms: SigningAlgorithm
- kms: ValidTo
- kms: ViaService
- kms: WrappingAlgorithm
- kms: WrappingKeySpec
kms: BypassPolicyLockoutSafetyCheck
AWS KMS chaves de condição | Tipo de condição | Tipo de valor | APIoperações | Tipo de política |
---|---|---|---|---|
|
Booleano |
Valor único |
|
Somente políticas do IAM Políticas de chaves e políticas do IAM |
A chave de kms:BypassPolicyLockoutSafetyCheck
condição controla o acesso às PutKeyPolicyoperações CreateKeye com base no valor do BypassPolicyLockoutSafetyCheck
parâmetro na solicitação.
O exemplo de declaração IAM de política a seguir impede que os usuários ignorem a verificação de segurança do bloqueio da política, negando-lhes permissão para criar KMS chaves quando o valor do BypassPolicyLockoutSafetyCheck
parâmetro na solicitação for CreateKey
true.
{ "Effect": "Deny", "Action": [ "kms:CreateKey", "kms:PutKeyPolicy" ], "Resource": "*", "Condition": { "Bool": { "kms:BypassPolicyLockoutSafetyCheck": true } } }
Você também pode usar a chave de kms:BypassPolicyLockoutSafetyCheck
condição em uma IAM política ou política de chaves para controlar o acesso à PutKeyPolicy
operação. O exemplo a seguir de declaração de política de uma política de chaves impede que os usuários ignorem a verificação de segurança de bloqueio da política ao alterar a política de uma KMS chave.
Em vez de usar Deny
de forma explícita, esta declaração de política usa Allow
com o operador de condição nula para permitir o acesso somente quando a solicitação não inclui o parâmetro BypassPolicyLockoutSafetyCheck
. Quando o parâmetro não for usado, o valor padrão será false
. Essa instrução de política um pouco mais fraca pode ser substituída no caso raro em que uma derivação é necessária.
{ "Effect": "Allow", "Action": "kms:PutKeyPolicy", "Resource": "*", "Condition": { "Null": { "kms:BypassPolicyLockoutSafetyCheck": true } } }
Consulte também
kms: CallerAccount
AWS KMS chaves de condição | Tipo de condição | Tipo de valor | APIoperações | Tipo de política |
---|---|---|---|---|
|
String |
Valor único |
KMSprincipais operações de recursos Operações do armazenamento de chaves personalizado |
Políticas de chaves e políticas do IAM |
É possível usar essa chave de condição para permitir ou negar acesso a todas as identidades (usuários e perfis) 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 da AWS. Mas você pode obter esse efeito combinando essa chave de condição com um Principal
elemento que especifica todas as AWS identidades.
Você pode usá-lo para controlar o acesso a qualquer operação de recurso KMS chave, ou seja, qualquer AWS KMS operação que use uma KMS chave específica. Para identificar as KMS principais operações de recursos, na Tabela de ações e recursos, procure um valor de KMS key
na Resources
coluna da operação. Ele também é válido para operações que gerenciam armazenamentos de chaves personalizados.
Por exemplo, a instrução de política de chaves a seguir demonstra como usar a chave de condição kms:CallerAccount
. Esta declaração de política está na política principal da Chave gerenciada pela AWS AmazonEBS. Ele combina um Principal
elemento que especifica todas as AWS identidades com a chave de kms:CallerAccount
condição para permitir efetivamente o acesso a todas as identidades em 111122223333. Conta da AWS Ele contém uma chave de AWS KMS condição adicional (kms:ViaService
) para limitar ainda mais as permissões, permitindo somente solicitações provenientes da AmazonEBS. 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 (obsoleto)
A chave de condição kms:CustomerMasterKeySpec
está defasada. Em vez disso, use a chave de KeySpec condição kms:.
As chaves de condição kms:CustomerMasterKeySpec
e kms:KeySpec
funcionam da mesma forma. Apenas os nomes são diferentes. Recomendamos usar o kms:KeySpec
. No entanto, para evitar alterações significativas, AWS KMS suporta as duas teclas de condição.
kms: CustomerMasterKeyUsage (obsoleto)
A chave de condição kms:CustomerMasterKeyUsage
está defasada. Em vez disso, use a chave de KeyUsage condição kms:.
As chaves de condição kms:CustomerMasterKeyUsage
e kms:KeyUsage
funcionam da mesma forma. Apenas os nomes são diferentes. Recomendamos usar o kms:KeyUsage
. No entanto, para evitar alterações significativas, AWS KMS suporta as duas teclas de condição.
kms: DataKeyPairSpec
AWS KMS chaves de condição | Tipo de condição | Tipo de valor | APIoperações | Tipo de política |
---|---|---|---|---|
|
String |
Valor único |
|
Políticas de chaves e políticas do IAM |
Você pode usar essa chave de condição para controlar o acesso às GenerateDataKeyPairWithoutPlaintextoperações GenerateDataKeyPaire com base no valor do KeyPairSpec
parâmetro na solicitação. Por exemplo, é possível permitir que os usuários gerem somente tipos de pares de chaves de dados específicos.
O exemplo de declaração de política de chaves a seguir usa a chave de kms:DataKeyPairSpec
condição para permitir que os usuários usem a KMS chave para gerar somente pares de chaves de RSA dados.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": [ "kms:GenerateDataKeyPair", "kms:GenerateDataKeyPairWithoutPlaintext" ], "Resource": "*", "Condition": { "StringLike": { "kms:DataKeyPairSpec": "RSA*" } } }
Consulte também
kms: EncryptionAlgorithm
AWS KMS chaves de condição | Tipo de condição | Tipo de valor | APIoperações | Tipo de política |
---|---|---|---|---|
|
String |
Valor único |
|
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 de criptografia com base no algoritmo de criptografia usado na operação. Para as ReEncryptoperações Encrypt, Decrypt e, ele controla o acesso com base no valor do EncryptionAlgorithmparâmetro 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 tem efeito nas operações realizadas fora da AWS KMS, como a criptografia com a chave pública em um par de KMS chaves assimétrico fora da. AWS KMS
EncryptionAlgorithm parâmetro em uma solicitação
Para permitir que os usuários usem somente um algoritmo de criptografia específico com uma KMS chave, use uma declaração de política com um Deny
efeito e um operador de StringNotEquals
condição. Por exemplo, o exemplo de declaração de política de chaves a seguir proíbe que diretores que possam assumir a ExampleRole
função usem essa KMS chave nas operações criptográficas especificadas, a menos que o algoritmo de criptografia na solicitação seja RSAES_OAEP_SHA_256
um algoritmo de criptografia assimétrica usado com chaves. RSA KMS
Diferentemente de uma declaração de política que permite que um usuário use um algoritmo de criptografia específico, uma declaração de política com um duplo negativo como essa impede que outras políticas e concessões para essa KMS chave permitam que essa função use outros algoritmos de criptografia. Deny
Nesta declaração de política fundamental, prevalece sobre qualquer política chave ou IAM política com Allow
efeito, e tem precedência sobre todas as concessões para essa KMS chave e seus princípios.
{ "Sid": "Allow only one encryption algorithm with this asymmetric KMS key", "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
Você também pode usar a chave de condição kms:EncryptionAlgorithm
para controlar o acesso às operações com base no algoritmo de criptografia utilizado na operação, mesmo quando esse algoritmo não está especificado na solicitação. Isso permite exigir ou proibir o algoritmo SYMMETRIC_DEFAULT
, que pode não ser especificado em uma solicitação por ser o valor padrã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 KMS chaves de criptografia simétricas e o SYMMETRIC_DEFAULT
algoritmo.
Por exemplo, essa IAM política limita seus princípios à criptografia simétrica. Ele nega o acesso a qualquer KMS chave na conta de exemplo para operações criptográficas, a menos que o algoritmo de criptografia especificado na solicitação ou usado na operação seja SYMMETRIC _. DEFAULT Incluindo GenerateDataKey*
GenerateDataKeyPairacréscimos GenerateDataKeyGenerateDataKeyWithoutPlaintext,, e GenerateDataKeyPairWithoutPlaintextàs permissões. A condição não tem efeito nessas operações porque elas sempre utilizam um algoritmo de criptografia simétrica.
{ "Sid": "AllowOnlySymmetricAlgorithm", "Effect": "Deny", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/*", "Condition": { "StringNotEquals": { "kms:EncryptionAlgorithm": "SYMMETRIC_DEFAULT" } } }
Consulte também
kms:EncryptionContext: chave de contexto
AWS KMS chaves de condição | Tipo de condição | Tipo de valor | APIoperações | Tipo de política |
---|---|---|---|---|
|
String |
Valor único |
|
Políticas de chaves e políticas do IAM |
Você pode usar a chave de kms:EncryptionContext:context-key
condição para controlar o acesso a uma KMSchave de criptografia simétrica com base no contexto de criptografia em uma solicitação de operação criptográfica. Use essa chave de condição para avaliar a chave e o valor no par de contexto de criptografia. Para avaliar somente as chaves do contexto de criptografia ou exigir um contexto de criptografia, independentemente das chaves ou dos valores, use a chave de EncryptionContextKeys condição kms:.
nota
Os valores da chave de condição devem estar em conformidade com as regras de caracteres das principais políticas e IAM políticas. Alguns caracteres que são válidos em um contexto de criptografia não são válidos em políticas. Talvez você não consiga usar essa chave de condição para expressar todos os valores válidos de contexto de criptografia. Para obter detalhes sobre as regras de documento de política de chaves, consulte Formato de política de chaves. Para obter detalhes sobre as regras do documento de IAM política, consulte os requisitos de IAM nome no Guia IAM do usuário.
Você não pode especificar um contexto de criptografia em uma operação criptográfica com uma chave assimétrica ou uma KMS chave. HMAC KMS Algoritmos e MAC algoritmos assimétricos não oferecem suporte a um contexto de criptografia.
Para usar a chave de condição kms:EncryptionContext: context-key, substitua context-key
espaço reservado com a chave de contexto de criptografia. Substitua o context-value
espaço reservado com o valor do contexto de criptografia.
"kms:EncryptionContext:
context-key
": "context-value
"
Por exemplo, a seguinte chave de condição especifica um contexto de criptografia no qual a chave é AppName
e o valor é ExampleApp
(AppName =
ExampleApp
).
"kms:EncryptionContext:AppName": "ExampleApp"
Esta é uma chave de condição de valor único. A chave na chave de condição especifica uma chave de contexto de criptografia específica (context-key). Embora você possa incluir vários pares de contexto de criptografia em cada API solicitação, o par de contexto de criptografia com a chave de contexto especificada pode ter somente um valor. Por exemplo, a chave de condição kms:EncryptionContext:Department
aplica-se somente a pares de contexto de criptografia com uma chave Department
, e qualquer par de contexto de criptografia com a chave Department
pode ter somente um valor.
Não use um operador de conjunto com a chave de condição kms:EncryptionContext:context-key
. Se você criar uma instrução de política com uma ação Allow
, a chave de condição kms:EncryptionContext:context-key
e o operador de conjunto ForAllValues
, a condição permitirá solicitações sem contexto de criptografia e solicitações com pares de contexto de criptografia que não estão especificados na condição de política.
Atenção
Não use um operador de conjunto ForAnyValue
ou ForAllValues
com essa chave de condição de valor único. Esses operadores de conjunto podem criar uma condição de política que não requer valores que você pretende exigir e permite valores que você pretende proibir.
Se você criar ou atualizar uma política que inclua um operador de ForAllValues
conjunto com a chave de contexto kms: EncryptionContext:, AWS KMS retornará a seguinte mensagem de erro:
OverlyPermissiveCondition:EncryptionContext: Using the
ForAllValues
set operator with a single-valued condition key matches requests without the specified
encryption context or with an unspecified encryption context. To fix, remove
ForAllValues.
Para exigir um par de contexto de criptografia específico, use a chave de condição kms:EncryptionContext:context-key
com o operador StringEquals
.
O exemplo de declaração de política de chaves a seguir permite que os diretores que podem assumir a função usem a KMS chave em uma GenerateDataKey
solicitação somente quando o contexto de criptografia na solicitação inclui o AppName:ExampleApp
par. Outros pares de contexto de criptografia são permitidos.
O nome da chave não é sensível a maiúsculas e minúsculas. A diferenciação de maiúsculas e minúsculas do valor é determinada pelo operador de condição, como StringEquals
. Para obter detalhes, consulte Diferenciação de letras maiúsculas e minúsculas da condição de contexto de criptografia.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:AppName": "ExampleApp" } } }
Para exigir um par de contexto de criptografia e proibir todos os outros pares de contexto de criptografia, use ambos kms:EncryptionContext: chave de contexto e kms:EncryptionContextKeysna declaração de política. A instrução de política de exemplo a seguir usa a condição kms:EncryptionContext:AppName
para exigir o par de contextos de criptografia AppName=ExampleApp
na solicitação. Ela também usa uma chave de condição kms:EncryptionContextKeys
com o operador de conjunto ForAllValues
para permitir apenas a chave de contexto de criptografia AppName
.
O operador de conjunto ForAllValues
limita as chaves de contexto de criptografia na solicitação para AppName
. Se a condição kms:EncryptionContextKeys
com o operador de conjunto ForAllValues
tivesse sido usada sozinha em uma instrução de política, esse operador de conjunto permitiria solicitações sem contexto de criptografia. No entanto, se a solicitação não tivesse um contexto de criptografia, a condição kms:EncryptionContext:AppName
falharia. Para obter detalhes sobre o operador do ForAllValues
conjunto, consulte Uso de várias chaves e valores no Guia IAM do usuário.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/KeyUsers" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:AppName": "ExampleApp" }, "ForAllValues:StringEquals": { "kms:EncryptionContextKeys": [ "AppName" ] } } }
Você também pode usar essa chave de condição para negar acesso a uma KMS chave para uma operação específica. O exemplo de declaração de política de chaves a seguir usa um Deny
efeito para proibir o principal de usar a KMS chave se o contexto de criptografia na solicitação incluir um par de contextos de Stage=Restricted
criptografia. Essa condição permite uma solicitação com outros pares de contextos de criptografia, incluindo pares de contextos de criptografia com a chave Stage
e outros valores, como Stage=Test
.
{ "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Stage": "Restricted" } } }
Usar vários pares de contextos de criptografia
Você pode exigir ou proibir vários pares de contextos de criptografia. Também pode exigir um dos vários pares de contextos de criptografia. Para obter detalhes sobre a lógica usada para interpretar essas condições, consulte Criação de uma condição com várias chaves ou valores no Guia do IAM usuário.
nota
As versões anteriores deste tópico exibiam declarações de política que usavam os operadores ForAnyValue
e ForAllValues
definiam com a chave de condição kms:EncryptionContext: chave de contexto. Usar um operador de conjunto com uma chave de condição de valor único pode resultar em políticas que permitem solicitações sem contexto de criptografia e pares de contextos de criptografia não especificados.
Por exemplo, uma condição de política com o efeito Allow
, o operador de conjunto ForAllValues
e a chave de condição "kms:EncryptionContext:Department": "IT"
não limita o contexto de criptografia ao par "Department=IT". Ele permite solicitações sem contexto de criptografia e solicitações com pares de contextos de criptografia não especificados, como Stage=Restricted
.
Revise suas políticas e elimine o operador definido de qualquer condição com kms:EncryptionContext: context-key. Tentativas de criar ou atualizar uma política com esse formato falham com uma exceção OverlyPermissiveCondition
. Para resolver o erro, exclua o operador de conjunto.
Para exigir vários pares de contextos de criptografia, liste esses pares na mesma condição. A seguinte instrução de política de chaves de exemplo requer dois pares de contextos de criptografia: Department=IT
e Project=Alpha
. Como as condições têm chaves diferentes (kms:EncryptionContext:Department
ekms:EncryptionContext:Project
), elas são conectadas implicitamente por um AND operador. Outros pares de contextos de criptografia são permitidos, mas não são necessários.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Department": "IT", "kms:EncryptionContext:Project": "Alpha" } } }
Para exigir um par de contextos de criptografia OU outro par, coloque cada chave de condição em uma instrução de política separada. O exemplo a seguir de política de chaves requer pares Department=IT
ou Project=Alpha
, ou ambos. Outros pares de contextos de criptografia são permitidos, mas não são necessários.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Department": "IT" } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Project": "Alpha" } } }
Para exigir pares de criptografia específicos e excluir todos os outros pares de contexto de criptografia, use kms:EncryptionContext: chave de contexto e kms:EncryptionContextKeysna declaração de política. A seguinte declaração de política de chaves usa a condição kms:EncryptionContext: context-key para exigir um contexto de criptografia com pares Department=IT
eProject=Alpha
. Ela usa uma chave de condição kms:EncryptionContextKeys
com o operador de conjunto ForAllValues
para permitir apenas as chaves de contexto de criptografia Department
e Project
.
O operador de conjunto ForAllValues
limita as chaves de contexto de criptografia na solicitação para Department
e Project
. Se fosse usado sozinho em uma condição, esse operador de conjunto permitiria solicitações sem contexto de criptografia, mas nessa configuração, a chave de contexto kms: EncryptionContext: nessa condição falharia.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Department": "IT", "kms:EncryptionContext:Project": "Alpha" }, "ForAllValues:StringEquals": { "kms:EncryptionContextKeys": [ "Department", "Project" ] } } }
Você também pode proibir vários pares de contexto de criptografia. O exemplo de declaração de política de chaves a seguir usa um Deny
efeito para proibir o principal de usar as KMS chaves se o contexto de criptografia na solicitação incluir a Stage=Restricted
ou Stage=Production
.pair.
Vários valores (Restricted
e Production
) para a mesma chave (kms:EncryptionContext:Stage
) são implicitamente conectados por OR. Para obter detalhes, consulte Lógica de avaliação para condições com várias chaves ou valores no Guia IAM do usuário.
{ "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Stage": [ "Restricted", "Production" ] } } }
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 kms:EncryptionContext:
prefixo e no
substituição, 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 distinção entre maiúsculas e minúsculas do valor, ou seja, chave de contexto
a substituição, é determinada pelo operador da condição da apólice.valor contextual
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": { "StringEquals": { "kms:EncryptionContext:Appname": "ExampleApp" } } }
Para exigir uma chave de contexto de criptografia com distinção entre maiúsculas e minúsculas, use a condição kms: EncryptionContextKeys policy com um operador de condição que diferencia maiúsculas de minúsculas, como. StringEquals
Nesta condição de política, como a chave de contexto de criptografia é o valor da condição de política, o recurso é determinado pelo operador da condição.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "AppName" } } }
Para exigir uma avaliação com distinção entre maiúsculas e minúsculas da chave de contexto e do valor da criptografia, use as condições de política de chave de contexto kms:EncryptionContextKeys
e kms:EncryptionContext: juntas na mesma declaração de política. O operador de condição sensível a maiúsculas e minúsculas (comoStringEquals
) sempre aplica-se ao valor da condição. A chave de contexto de criptografia (como AppName
) é o valor da condição kms:EncryptionContextKeys
. O valor do contexto de criptografia (comoExampleApp
) é o valor da condição kms:EncryptionContext: context-key.
Por exemplo, na instrução de política de chaves 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" }, "StringEquals": { "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 número inteiro ou flutuante, AWS KMS interprete-o como uma string literal.
"encryptionContext": { "department": "10103.0" }
No entanto, o valor da chave de kms:EncryptionContext:context-key
condição pode ser uma variável IAM de política. Essas variáveis de política são resolvidas em runtime 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 KMS chave 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 AWS KMS inclua um contexto de criptografia em que a chave esteja user
e o valor seja o nome de AWS usuário 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 dá permissão à TestTeam
função para criptografar e descriptografar dados com a chave. KMS No entanto, a permissão será válida somente quando o contexto de criptografia na solicitação incluir um par "user":
"
. Para representar o nome do usuário, a condição usa a variável de política <username>
"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": { "StringEquals": { "kms:EncryptionContext:user": "${aws:username}" } } }
Você pode usar uma variável IAM de política somente no valor da chave de kms:EncryptionContext:context-key
condição. 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 de forma exclusiva os usuários que se conectaram AWS usando a federação de identidade da web.
Como todas as variáveis, essas variáveis podem ser usadas apenas na condição de política kms:EncryptionContext:context-key
, 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 é sub
e o valor identifica exclusivamente um usuário conectado a um grupo de usuários do Amazon Cognito. Para obter detalhes sobre a identificação de usuários e funções no Amazon Cognito, consulte IAMFunções no Guia do desenvolvedor do Amazon Cognito.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/TestTeam" }, "Action": [ "kms:Decrypt", "kms:Encrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:sub": "${cognito-identity.amazonaws.com:sub}" } } }
Consulte também
kms: EncryptionContextKeys
AWS KMS chaves de condição | Tipo de condição | Tipo de valor | APIoperações | Tipo de política |
---|---|---|---|---|
|
String (lista) |
Vários valores |
|
Políticas de chaves e políticas do IAM |
Você pode usar a chave de kms:EncryptionContextKeys
condição para controlar o acesso a uma KMSchave de criptografia simétrica com base no contexto de criptografia em uma solicitação de operação criptográfica. Use essa chave de condição para avaliar apenas a chave em cada par de contexto de criptografia. Para avaliar tanto a chave quanto o valor no contexto de criptografia, use a chave de condição kms:EncryptionContext:context-key
.
Você não pode especificar um contexto de criptografia em uma operação criptográfica com uma chave assimétrica ou uma KMS chave. HMAC KMS Algoritmos e MAC algoritmos assimétricos não oferecem suporte a um contexto de criptografia.
nota
Os valores da chave de condição, incluindo uma chave de contexto de criptografia, devem estar em conformidade com as regras de caracteres e codificação das políticas de AWS KMS chaves. Talvez você não consiga usar essa chave de condição para expressar todas as chaves válidas de contexto de criptografia. Para obter detalhes sobre as regras de documento de política de chaves, consulte Formato de política de chaves. Para obter detalhes sobre as regras do documento de IAM política, consulte os requisitos de IAM nome no Guia IAM do usuário.
Esta é uma chave de condição de vários valores. Você pode especificar vários pares de contexto de criptografia em cada API solicitação. kms:EncryptionContextKeys
compara as chaves de contexto de criptografia na solicitação com o conjunto de chaves de contexto de criptografia na política. Para determinar como esses conjuntos são comparados, você deve fornecer um operador de conjunto ForAnyValue
ou ForAllValues
na condição de política. Para obter detalhes sobre os operadores do conjunto, consulte Uso de várias chaves e valores no Guia IAM do usuário.
-
ForAnyValue
: pelo menos uma chave de contexto de criptografia na solicitação deve corresponder a uma chave de contexto de criptografia na condição da política. Outras chaves de contexto de criptografia são permitidas. Se a solicitação não tiver um contexto de criptografia, a condição não será atendida. -
ForAllValues
: cada chave de contexto de criptografia na solicitação deve corresponder a uma chave de contexto de criptografia na condição da política. Esse operador de conjunto limita as chaves de contexto de criptografia àquelas na condição de política. Ele não requer uma chave de contexto de criptografia, mas proíbe chaves de contexto de criptografia não especificadas.
O exemplo a seguir de instrução de política de chaves usa a chave de condição kms:EncryptionContextKeys
com o operador de conjunto ForAnyValue
. Essa declaração de política permite o uso de uma KMS chave para as operações especificadas, mas somente quando pelo menos um dos pares de contexto de criptografia na solicitação inclui a AppName
chave, independentemente de seu valor.
Por exemplo, essa instrução de política de chaves permite uma solicitação GenerateDataKey
com dois pares de contextos de criptografia, AppName=Helper
e Project=Alpha
, pois o primeiro par de contextos de criptografia atende à condição. Uma solicitação com apenas Project=Alpha
ou sem um contexto de criptografia falharia.
Como a operação de StringEqualscondição diferencia maiúsculas de minúsculas, essa declaração de política exige a ortografia e as maiúsculas e minúsculas 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
.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": [ "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "AppName" } } }
Você também pode usar a chave de kms:EncryptionContextKeys
condição para exigir um contexto de criptografia (qualquer contexto de criptografia) em operações criptográficas que usam a KMS chave;.
O exemplo de declaração de política de chaves a seguir usa a chave de kms:EncryptionContextKeys
condição com o operador de condição Null para permitir o acesso a uma KMS chave somente quando o contexto de criptografia na API solicitação não é nulo. Essa condição não confere as chaves ou os valores do contexto de criptografia. Ela só verifica 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
AWS KMS chaves de condição | Tipo de condição | Tipo de valor | APIoperações | Tipo de política |
---|---|---|---|---|
|
String |
Valor único |
|
Políticas de chaves e políticas do IAM |
A chave de kms:ExpirationModel
condição controla o acesso à ImportKeyMaterialoperação com base no valor do ExpirationModelparâmetro 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 ValidToparâmetro. O parâmetro ValidTo
só não será necessário se o valor do parâmetro ExpirationModel
for KEY_MATERIAL_DOES_NOT_EXPIRE
. Você também pode usar a chave de ValidTo condição kms: para exigir uma data de expiração específica como condição de acesso.
O exemplo de declaração de política a seguir usa a chave de kms:ExpirationModel
condição para permitir que os usuários importem material de KMS chave em uma chave somente quando a solicitação inclui o ExpirationModel
parâmetro e seu valor éKEY_MATERIAL_DOES_NOT_EXPIRE
.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:ImportKeyMaterial", "Resource": "*", "Condition": { "StringEquals": { "kms:ExpirationModel": "KEY_MATERIAL_DOES_NOT_EXPIRE" } } }
Também é possível usar a chave de condição kms:ExpirationModel
para permitir que os usuários importem o material de chave somente quando este expirar. A instrução de política de chave exemplificada a seguir usa a chave de condição kms:ExpirationModel
com o operador de condição Null para permitir que os usuários importem o material de chave somente quando a solicitação não tiver um parâmetro ExpirationModel
. O valor padrão para ExpirationModel éKEY_MATERIAL_EXPIRES
.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:ImportKeyMaterial", "Resource": "*", "Condition": { "Null": { "kms:ExpirationModel": true } } }
Consulte também
kms: GrantConstraintType
AWS KMS chaves de condição | Tipo de condição | Tipo de valor | APIoperações | Tipo de política |
---|---|---|---|---|
|
String |
Valor único |
|
Políticas de chaves e políticas do IAM |
Você pode usar essa chave de condição para controlar o acesso à CreateGrantoperação 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 esta chave de condição para verificar se a solicitação contém um tipo ou outro.
Importante
Não inclua informações confidenciais ou sigilosas nesse campo. Esse campo pode ser exibido em texto simples em CloudTrail registros e outras saídas.
A instrução de política de chaves exemplificada a seguir usa a chave de condição kms:GrantConstraintType
para permitir que os usuários criem concessões somente quando a solicitação incluir 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:role/RoleForExampleApp" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:GrantConstraintType": "EncryptionContextEquals" } } }
Consulte também
kms: GrantIsFor AWSResource
AWS KMS chaves de condição | Tipo de condição | Tipo de valor | APIoperações | Tipo de política |
---|---|---|---|---|
|
Booleano |
Valor único |
|
Políticas de chaves e políticas do IAM |
Permite ou nega permissão para as RevokeGrantoperações CreateGrantListGrants,, ou somente quando um AWS serviço integrado AWS KMS
A declaração de política de chaves demonstrativa a seguir usa a chave de condição kms:GrantIsForAWSResource
. Ele permite que AWS serviços integrados AWS KMS, como a AmazonEBS, criem doações nessa KMS chave em nome do principal especificado.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } }
Consulte também
kms: GrantOperations
AWS KMS chaves de condição | Tipo de condição | Tipo de valor | APIoperações | Tipo de política |
---|---|---|---|---|
|
String |
Vários valores |
|
Políticas de chaves e políticas do IAM |
Você pode usar essa chave de condição para controlar o acesso à CreateGrantoperação com base nas operações de concessão na solicitação. Por exemplo, é possível permitir que os usuários criem concessões que delegam permissão para criptografar, mas não para descriptografar. Para obter mais informações sobre concessões, consulte Usar concessões.
Esta é uma chave de condição de vários valores. O kms:GrantOperations
compara o conjunto de operações de concessão na solicitação CreateGrant
para o conjunto de operações de concessão na política. Para determinar como esses conjuntos são comparados, você deve fornecer um operador de conjunto ForAnyValue
ou ForAllValues
na condição de política. Para obter detalhes sobre os operadores do conjunto, consulte Uso de várias chaves e valores no Guia IAM do usuário.
-
ForAnyValue
: pelo menos uma operação de concessão na solicitação deve corresponder a uma das operações de concessão na condição da política. Outras operações de concessão são permitidas. -
ForAllValues: cada operação de concessão na solicitação deve corresponder a uma operação de concessão na condição da política. Este operador de conjunto limita as operações de concessão àquelas especificadas na condição da política. Ele não requer uma operação de concessão, mas proíbe operações de concessão não especificadas.
ForAllValues também retorna verdadeiro quando não há operações de concessão na solicitação, mas
CreateGrant
não permite isso. Se o parâmetroOperations
ausente ou tiver um valor nulo, o parâmetroCreateGrant
falhará na solicitação.
A instrução de política de chaves exemplificada a seguir usa a chave de condição kms:GrantOperations
para criar concessões somente quando as operações de concessões são Encrypt
e/ou ReEncryptTo
. Se a concessão incluir quaisquer outras operações, a solicitação CreateGrant
falhará.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Encrypt", "ReEncryptTo" ] } } }
Se você alterar o operador de conjunto na condição de política para ForAnyValue
, a instrução de política exigirá que pelo menos uma das operações de concessão na concessão seja Encrypt
ou ReEncryptTo
, mas permitirá outras operações de concessão, como Decrypt
ou ReEncryptFrom
.
Consulte também
kms: GranteePrincipal
AWS KMS chaves de condição | Tipo de condição | Tipo de valor | APIoperações | Tipo de política |
---|---|---|---|---|
|
String |
Valor único |
|
Políticas do IAM e de chaves |
Você pode usar essa chave de condição para controlar o acesso à CreateGrantoperação com base no valor do GranteePrincipalparâmetro na solicitação. Por exemplo, você pode criar concessões para usar uma KMS chave somente quando o principal beneficiário na CreateGrant
solicitação corresponder ao principal especificado na declaração de condição.
Para especificar o principal beneficiário, use o Amazon Resource Name (ARN) de um AWS principal. Os principais válidos incluem IAM usuários Contas da AWS, IAM funções, usuários federados e usuários com funções assumidas. Para obter ajuda com a ARN sintaxe de um diretor, consulte IAMARNso Guia do IAM usuário.
O exemplo de declaração de política chave a seguir usa a chave de kms:GranteePrincipal
condição para criar concessões para uma KMS chave somente quando o principal beneficiário da concessão é o. LimitedAdminRole
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:GranteePrincipal": "arn:aws:iam::111122223333:role/LimitedAdminRole" } } }
Consulte também
kms: KeyAgreementAlgorithm
AWS KMS chaves de condição | Tipo de condição | Tipo de valor | APIoperações | Tipo de política |
---|---|---|---|---|
|
String |
Valor único |
|
Políticas de chaves e políticas do IAM |
Você pode usar a chave de kms:KeyAgreementAlgorithm
condição para controlar o acesso à DeriveSharedSecretoperação com base no valor do KeyAgreementAlgorithm
parâmetro na solicitação. O único valor válido para KeyAgreementAlgorithm
é ECDH
.
Por exemplo, a declaração de política chave a seguir usa a chave de kms:KeyAgreementAlgorithm
condição para negar todo o acesso, a DeriveSharedSecret menos que KeyAgreementAlgorithm
sejaECDH
.
{ "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:DeriveSharedSecret", "Resource": "*", "Condition": { "StringNotEquals": { "kms:KeyAgreementAlgorithm": "ECDH" } } }
Consulte também
kms: KeyOrigin
AWS KMS chaves de condição | Tipo de condição | Tipo de valor | APIoperações | Tipo de política |
---|---|---|---|---|
|
String |
Valor único |
KMSprincipais operações de recursos |
IAMpolíticas Políticas de chaves e políticas do IAM |
A chave de kms:KeyOrigin
condição controla o acesso às operações com base no valor da Origin
propriedade da KMS chave criada ou usada na operação. Ela funciona como uma condição de recurso ou de solicitação.
Você pode usar essa chave de condição para controlar o acesso à CreateKeyoperação com base no valor do parâmetro Origin na solicitação. Os valores válidos para Origin
são AWS_KMS
, AWS_CLOUDHSM
e EXTERNAL
.
Por exemplo, você pode criar uma KMS chave somente quando o material da chave é gerado em AWS KMS (AWS_KMS
), somente quando o material da chave é gerado em um AWS CloudHSM cluster associado a um armazenamento de chaves personalizado (AWS_CLOUDHSM
) ou somente quando o material da chave é importado de uma fonte externa (EXTERNAL
).
O exemplo de declaração de política de chaves a seguir usa a chave de kms:KeyOrigin
condição para criar uma KMS chave somente quando AWS KMS cria o material da chave.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringEquals": { "kms:KeyOrigin": "AWS_KMS" } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "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" } } } ] }
Você também pode usar a chave de kms:KeyOrigin
condição para controlar o acesso às operações que usam ou gerenciam uma KMS chave com base na Origin
propriedade da KMS chave usada para a operação. A operação deve ser uma operação de recurso KMS chave, ou seja, uma operação autorizada para uma KMS chave específica. Para identificar as KMS principais operações de recursos, na Tabela de ações e recursos, procure um valor de KMS key
na Resources
coluna da operação.
Por exemplo, a IAM política a seguir permite que os diretores realizem as operações de recursos de KMS chave especificadas, mas somente com KMS chaves 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: KeySpec
AWS KMS chaves de condição | Tipo de condição | Tipo de valor | APIoperações | Tipo de política |
---|---|---|---|---|
|
String |
Valor único |
KMSprincipais operações de recursos |
IAMpolíticas Políticas de chaves e políticas do IAM |
A chave de kms:KeySpec
condição controla o acesso às operações com base no valor da KeySpec
propriedade da KMS chave criada ou usada na operação.
Você pode usar essa chave de condição em uma IAM política para controlar o acesso à CreateKeyoperação com base no valor do KeySpecparâmetro em uma CreateKey
solicitação. Por exemplo, você pode usar essa condição para permitir que os usuários criem somente KMS chaves de criptografia simétricas ou somente HMAC KMS chaves.
O exemplo de declaração IAM de política a seguir usa a chave de kms:KeySpec
condição para permitir que os diretores criem somente chaves RSA assimétricasKMS. A permissão só é válida quando o KeySpec
na solicitação começa com RSA_
.
{ "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringLike": { "kms:KeySpec": "RSA_*" } } }
Você também pode usar a chave de kms:KeySpec
condição para controlar o acesso às operações que usam ou gerenciam uma KMS chave com base na KeySpec
propriedade da KMS chave usada para a operação. A operação deve ser uma operação de recurso KMS chave, ou seja, uma operação autorizada para uma KMS chave específica. Para identificar as KMS principais operações de recursos, na Tabela de ações e recursos, procure um valor de KMS key
na Resources
coluna da operação.
Por exemplo, a IAM política a seguir permite que os diretores realizem as operações de recurso de KMS chave especificadas, mas somente com KMS chaves de criptografia 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:KeySpec": "SYMMETRIC_DEFAULT" } } }
Consulte também
kms: KeyUsage
AWS KMS chaves de condição | Tipo de condição | Tipo de valor | APIoperações | Tipo de política |
---|---|---|---|---|
|
String |
Valor único |
KMSprincipais operações de recursos |
IAMpolíticas Políticas de chaves e políticas do IAM |
A chave de kms:KeyUsage
condição controla o acesso às operações com base no valor da KeyUsage
propriedade da KMS chave criada ou usada na operação.
Você pode usar essa chave de condição para controlar o acesso à CreateKeyoperação com base no valor do KeyUsageparâmetro na solicitação. Os valores válidos para KeyUsage
são ENCRYPT_DECRYPT
, SIGN_VERIFY
, GENERATE_VERIFY_MAC
e KEY_AGREEMENT
.
Por exemplo, você pode criar uma KMS chave somente quando KeyUsage
for ENCRYPT_DECRYPT
ou negar a permissão de um usuário quando KeyUsage
forSIGN_VERIFY
.
O exemplo de declaração IAM de política a seguir usa a chave de kms:KeyUsage
condição para criar uma KMS chave somente quando KeyUsage
forENCRYPT_DECRYPT
.
{ "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringEquals": { "kms:KeyUsage": "ENCRYPT_DECRYPT" } } }
Você também pode usar a chave de kms:KeyUsage
condição para controlar o acesso às operações que usam ou gerenciam uma KMS chave com base na KeyUsage
propriedade da KMS chave na operação. A operação deve ser uma operação de recurso KMS chave, ou seja, uma operação autorizada para uma KMS chave específica. Para identificar as KMS principais operações de recursos, na Tabela de ações e recursos, procure um valor de KMS key
na Resources
coluna da operação.
Por exemplo, a IAM política a seguir permite que os diretores realizem as operações de recurso KMS chave especificadas, mas somente com KMS chaves 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:KeyUsage": "SIGN_VERIFY" } } }
Consulte também
kms: MacAlgorithm
AWS KMS chaves de condição | Tipo de condição | Tipo de valor | APIoperações | Tipo de política |
---|---|---|---|---|
|
String |
Valor único |
|
Políticas de chaves e políticas do IAM |
Você pode usar a chave de kms:MacAlgorithm
condição para controlar o acesso às VerifyMacoperações GenerateMace com base no valor do MacAlgorithm
parâmetro na solicitação.
O exemplo de política de chaves a seguir permite que os usuários que podem assumir a testers
função usem a HMAC KMS chave para gerar e verificar HMAC tags somente quando o MAC algoritmo na solicitação for HMAC_SHA_384
ouHMAC_SHA_512
. Essa política usa duas instruções distintas de política, cada uma com sua própria condição. Se você especificar mais de um MAC algoritmo em uma única declaração de condição, a condição exigirá os dois algoritmos, em vez de um ou outro.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/testers" }, "Action": [ "kms:GenerateMac", "kms:VerifyMac" ], "Resource": "*", "Condition": { "StringEquals": { "kms:MacAlgorithm": "HMAC_SHA_384" } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/testers" }, "Action": [ "kms:GenerateMac", "kms:VerifyMac" ], "Resource": "*", "Condition": { "StringEquals": { "kms:MacAlgorithm": "HMAC_SHA_512" } } } ] }
Consulte também
kms: MessageType
AWS KMS chaves de condição | Tipo de condição | Tipo de valor | APIoperações | Tipo de política |
---|---|---|---|---|
|
String |
Valor único |
|
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 kms:MessageType
condição para usar uma KMS chave assimétrica para assinar uma mensagem, mas não um resumo da mensagem.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:Sign", "Resource": "*", "Condition": { "StringEquals": { "kms:MessageType": "RAW" } } }
Consulte também
kms: MultiRegion
AWS KMS chaves de condição | Tipo de condição | Tipo de valor | APIoperações | Tipo de política |
---|---|---|---|---|
|
Booleano |
Valor único |
KMSprincipais operações de recursos |
Políticas de chaves e políticas do IAM |
Você pode usar essa chave de condição para permitir operações somente em chaves de região única ou somente em chaves de várias regiões. A chave de kms:MultiRegion
condição controla o acesso às AWS KMS operações nas KMS chaves e à CreateKeyoperação com base no valor da MultiRegion
propriedade da KMS chave. Os valores válidos são true
(várias regiões) e false
(região única). Todas KMS as chaves têm uma MultiRegion
propriedade.
Por exemplo, a declaração de IAM política a seguir usa a chave de kms:MultiRegion
condição para permitir que os principais criem somente chaves de região única.
{ "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "Bool": { "kms:MultiRegion": false } } }
kms: MultiRegionKeyType
AWS KMS chaves de condição | Tipo de condição | Tipo de valor | APIoperações | Tipo de política |
---|---|---|---|---|
|
String |
Valor único |
KMSprincipais operações de recursos |
Políticas de chaves e políticas do IAM |
Você pode usar essa chave de condição para permitir operações somente em chaves primárias de várias regiões ou somente em chaves de réplica de várias regiões. A chave de kms:MultiRegionKeyType
condição controla o acesso às AWS KMS operações nas KMS chaves e a CreateKeyoperação com base na MultiRegionKeyType
propriedade da KMS chave. Os valores válidos são PRIMARY
e REPLICA
. Somente chaves de várias regiões têm uma propriedade MultiRegionKeyType
.
Normalmente, você usa a chave de kms:MultiRegionKeyType
condição em uma IAM política para controlar o acesso a várias KMS chaves. No entanto, como uma determinada chave de várias regiões pode mudar para primária ou réplica, convém usar essa condição em uma política de chaves para permitir uma operação somente quando a chave de várias regiões específica for uma chave primária ou de réplica.
Por exemplo, a declaração de IAM política a seguir usa a chave de kms:MultiRegionKeyType
condição para permitir que os diretores programem e cancelem a exclusão da chave somente em chaves de réplica multirregionais no especificado. Conta da AWS
{ "Effect": "Allow", "Action": [ "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "arn:aws:kms:*:111122223333:key/*", "Condition": { "StringEquals": { "kms:MultiRegionKeyType": "REPLICA" } } }
Para permitir ou negar acesso a todas as chaves de várias regiões, você pode usar ambos os valores ou um valor nulo com kms:MultiRegionKeyType
. No entanto, a chave de MultiRegion condição kms: é recomendada para essa finalidade.
kms: PrimaryRegion
AWS KMS chaves de condição | Tipo de condição | Tipo de valor | APIoperações | Tipo de política |
---|---|---|---|---|
|
String (lista) |
Valor único |
|
Políticas de chaves e políticas do IAM |
Você pode usar essa chave de condição para limitar as regiões de destino em uma UpdatePrimaryRegionoperação. São elas Regiões da AWS que podem hospedar suas chaves primárias multirregionais.
A chave de kms:PrimaryRegion
condição controla o acesso à UpdatePrimaryRegionoperação com base no valor do PrimaryRegion
parâmetro. O PrimaryRegion
parâmetro especifica a chave Região da AWS de réplica multirregional que está sendo promovida para primária. O valor da condição é um ou mais Região da AWS nomes, como us-east-1
ouap-southeast-2
, ou padrões de nome de região, como eu-*
Por exemplo, a instrução de política de chaves a seguir usa a chave de condição kms:PrimaryRegion
para permitir que as entidades principais atualizem a região primária de uma chave de várias regiões para uma das quatro regiões especificadas.
{ "Effect": "Allow", "Action": "kms:UpdatePrimaryRegion", "Principal": { "AWS": "arn:aws:iam::111122223333:role/Developer" }, "Resource": "*", "Condition": { "StringEquals": { "kms:PrimaryRegion": [ "us-east-1", "us-west-2", "eu-west-3", "ap-southeast-2" ] } } }
kms: ReEncryptOnSameKey
AWS KMS chaves de condição | Tipo de condição | Tipo de valor | APIoperações | Tipo de política |
---|---|---|---|---|
|
Booleano |
Valor único |
|
Políticas de chaves e políticas do IAM |
Você pode usar essa chave de condição para controlar o acesso à ReEncryptoperação com base no fato de a solicitação especificar uma KMS chave de destino que seja a mesma usada para a criptografia original.
Por exemplo, a declaração de política de chaves a seguir usa a chave de kms:ReEncryptOnSameKey
condição para recriptografar somente quando a KMS chave de destino é a mesma usada para a criptografia original.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:ReEncrypt*", "Resource": "*", "Condition": { "Bool": { "kms:ReEncryptOnSameKey": true } } }
kms: RequestAlias
AWS KMS chaves de condição | Tipo de condição | Tipo de valor | APIoperações | Tipo de política |
---|---|---|---|---|
|
String (lista) |
Valor único |
Políticas de chaves e políticas do IAM |
Você pode usar essa chave de condição para permitir uma operação somente quando a solicitação usa um alias específico para identificar a KMS chave. A chave de kms:RequestAlias
condição controla o acesso a uma KMS chave usada em uma operação criptográfica ou DescribeKey
com base no alias que identifica essa KMS chave na solicitação. GetPublicKey
(Essa condição de política não tem efeito na GenerateRandomoperação porque a operação não usa uma KMS chave ou alias.)
Essa condição oferece suporte ao controle de acesso baseado em atributos (ABAC) em AWS KMS, que permite controlar o acesso às KMS chaves com base nas tags e aliases de uma chave. KMS Você pode usar tags e aliases para permitir ou negar acesso a uma KMS chave sem alterar políticas ou concessões. Para obter detalhes, consulte ABAC para AWS 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 alias ARN no valor dessa chave de condição.
Para satisfazer essa condição, o valor do KeyId
parâmetro na solicitação deve ser um nome de alias ou ARN alias correspondente. Se a solicitação usar um identificador de chave diferente, ela não satisfaz a condição, mesmo que identifique a mesma KMS chave.
Por exemplo, a seguinte declaração de política chave permite que o diretor chame a GenerateDataKeyoperação na KMS chave. No entanto, isso só é permitido quando o valor do KeyId
parâmetro na solicitação é alias/finance-key
ou um alias ARN 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" } } }
Você não pode usar essa chave de condição para controlar o acesso às operações de alias, como CreateAliasou DeleteAlias. Para obter informações sobre como controlar o acesso a todas as operações de alias, consulte Controlar o acesso a aliases.
kms: ResourceAliases
AWS KMS chaves de condição | Tipo de condição | Tipo de valor | APIoperações | Tipo de política |
---|---|---|---|---|
|
String (lista) |
Vários valores | KMSprincipais operações de recursos |
Somente políticas do IAM |
Use essa chave de condição para controlar o acesso a uma KMS chave com base nos aliases associados à KMS chave. A operação deve ser uma operação de recurso KMS chave, ou seja, uma operação autorizada para uma KMS chave específica. Para identificar as KMS principais operações de recursos, na Tabela de ações e recursos, procure um valor de KMS key
na Resources
coluna da operação.
Essa condição oferece suporte ao controle de acesso baseado em atributos (ABAC) em. AWS KMS ComABAC, você pode controlar o acesso às KMS chaves com base nas tags atribuídas a uma KMS chave e nos aliases associados a uma KMS chave. Você pode usar tags e aliases para permitir ou negar acesso a uma KMS chave sem alterar políticas ou concessões. Para obter detalhes, consulte ABAC para AWS KMS.
Um alias deve ser exclusivo em uma região Conta da AWS e, mas essa condição permite controlar o acesso a várias KMS chaves na mesma região (usando o operador Regiões da AWS de StringLike
comparação) ou a várias KMS chaves em diferentes contas.
nota
A ResourceAliases condição kms: só é efetiva quando a KMS chave está em conformidade com os aliases por KMS cota de chave. Se uma KMS chave exceder essa cota, os diretores autorizados a usar a KMS chave de acordo com a kms:ResourceAliases
condição terão acesso negado à KMS chave.
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 alias ARN no valor dessa chave de condição. Para satisfazer a condição, a KMS chave usada na operação deve ter o alias especificado. Não importa se ou como a KMS chave é identificada na solicitação da operação.
Essa é uma chave de condição de vários valores que compara o conjunto de aliases associados a uma KMS chave com o conjunto de aliases na política. Para determinar como esses conjuntos são comparados, você deve fornecer um operador de conjunto ForAnyValue
ou ForAllValues
na condição de política. Para obter detalhes sobre os operadores do conjunto, consulte Uso de várias chaves e valores no Guia IAM do usuário.
-
ForAnyValue: pelo menos um alias associado à KMS chave deve corresponder a um alias na condição da política. Outros aliases são permitidos. Se a KMS chave não tiver aliases, a condição não será satisfeita.
-
ForAllValues: cada alias associado à KMS chave deve corresponder a um alias na política. Esse operador de conjunto limita os aliases associados à KMS chave àqueles na condição da política. Ele não requer aliases, mas proíbe aliases não especificados.
Por exemplo, a declaração IAM de política a seguir permite que o principal chame a GenerateDataKeyoperação em qualquer KMS chave especificada Conta da AWS associada ao finance-key
alias. (As principais políticas das KMS chaves afetadas também devem permitir que a conta do principal as use para essa operação.) Para indicar que a condição é satisfeita quando um dos muitos aliases que podem estar associados à KMS chave éalias/finance-key
, a condição usa o operador ForAnyValue
set.
Como a kms:ResourceAliases
condição se baseia no recurso, não na solicitação, uma chamada para qualquer KMS chave associada ao finance-key
alias é GenerateDataKey
bem-sucedida, mesmo que a solicitação use um ID ou chave de chave ARN para identificar a KMS chave.
{ "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" } } }
O exemplo de declaração IAM de política a seguir permite que o diretor ative e desative KMS as chaves, mas somente quando todos os aliases das KMS chaves incluem "”Test
. Esta declaração de política usa duas condições. A condição com o operador ForAllValues
set exige que todos os aliases associados à KMS chave incluam “Teste”. A condição com o operador ForAnyValue
set exige que a KMS chave tenha pelo menos um alias com “Teste”. Sem a ForAnyValue
condição, essa declaração de política teria permitido que o diretor usasse KMS chaves sem aliases.
{ "Sid": "AliasBasedIAMPolicy", "Effect": "Allow", "Action": [ "kms:EnableKey", "kms:DisableKey" ], "Resource": "arn:aws:kms:*:111122223333:key/*", "Condition": { "ForAllValues:StringLike": { "kms:ResourceAliases": [ "alias/*Test*" ] }, "ForAnyValue:StringLike": { "kms:ResourceAliases": [ "alias/*Test*" ] } } }
kms: ReplicaRegion
AWS KMS chaves de condição | Tipo de condição | Tipo de valor | APIoperações | Tipo de política |
---|---|---|---|---|
|
String (lista) |
Valor único |
|
Políticas de chaves e políticas do IAM |
Você pode usar essa chave de condição para limitar a Regiões da AWS possibilidade de um principal replicar uma chave multirregional. A chave de kms:ReplicaRegion
condição controla o acesso à ReplicateKeyoperação com base no valor do ReplicaRegionparâmetro na solicitação. Esse parâmetro especifica a propriedade Região da AWS
da nova chave de réplica.
O valor da condição é um ou mais Região da AWS nomes, como us-east-1
ouap-southeast-2
, ou padrões de nomes, comoeu-*
. Para obter uma lista dos nomes desses Regiões da AWS AWS KMS suportes, consulte AWS Key Management Service endpoints e cotas no. Referência geral da AWS
Por exemplo, a declaração de política de chaves a seguir usa a chave de kms:ReplicaRegion
condição para permitir que os diretores chamem a ReplicateKeyoperação somente quando o valor do ReplicaRegion
parâmetro for uma das regiões especificadas.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/Administrator" }, "Action": "kms:ReplicateKey" "Resource": "*", "Condition": { "StringEquals": { "kms:ReplicaRegion": [ "us-east-1", "eu-west-3", "ap-southeast-2" ] } } }
Essa chave de condição controla o acesso somente à ReplicateKeyoperação. Para controlar o acesso à UpdatePrimaryRegionoperação, use a chave de PrimaryRegion condição kms:.
kms: RetiringPrincipal
AWS KMS chaves de condição | Tipo de condição | Tipo de valor | APIoperações | Tipo de política |
---|---|---|---|---|
|
String (lista) |
Valor único |
|
Políticas de chaves e políticas do IAM |
Você pode usar essa chave de condição para controlar o acesso à CreateGrantoperação com base no valor do RetiringPrincipalparâmetro na solicitação. Por exemplo, você pode criar concessões para usar uma KMS chave somente quando o valor RetiringPrincipal
na CreateGrant
solicitação corresponder ao RetiringPrincipal
da declaração condicional.
Para especificar o diretor que está se aposentando, use o Amazon Resource Name (ARN) de um AWS diretor. Os principais válidos incluem IAM usuários Contas da AWS, IAM funções, usuários federados e usuários com funções assumidas. Para obter ajuda com a ARN sintaxe de um diretor, consulte IAMARNso Guia do IAM usuário.
O exemplo de declaração de política de chaves a seguir permite que um usuário crie concessões para a KMS chave. A chave de condição kms:RetiringPrincipal
restringe a permissão a solicitações CreateGrant
nas quais a entidade principal em processo de desativação na concessão é LimitedAdminRole
.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:RetiringPrincipal": "arn:aws:iam::111122223333:role/LimitedAdminRole" } } }
Consulte também
kms: RotationPeriodInDays
AWS KMS chaves de condição | Tipo de condição | Tipo de valor | APIoperações | Tipo de política |
---|---|---|---|---|
|
Numérico |
Valor único |
|
Políticas de chaves e políticas do IAM |
Você pode usar essa chave de condição para limitar os valores que os diretores podem especificar no RotationPeriodInDays
parâmetro de uma EnableKeyRotationsolicitação.
RotationPeriodInDays
Especifica o número de dias entre cada data de rotação automática da chave. AWS KMS permite especificar um período de rotação entre 90 e 2560 dias, mas você pode usar a chave de kms:RotationPeriodInDays
condição para restringir ainda mais o período de rotação, como impor um período mínimo de rotação dentro do intervalo válido.
Por exemplo, a declaração de política de chave a seguir usa a chave de condição kms:RotationPeriodInDays
para impedir que entidades principais habilitem a alternância de chave se o período de alternância for menor ou igual a 180 dias.
{ "Effect": "Deny", "Action": "kms:EnableKeyRotation", "Principal": "*", "Resource": "*", "Condition" : { "NumericLessThanEquals" : { "kms:RotationPeriodInDays" : "180" } } }
kms: ScheduleKeyDeletionPendingWindowInDays
AWS KMS chaves de condição | Tipo de condição | Tipo de valor | APIoperações | Tipo de política |
---|---|---|---|---|
|
Numérico |
Valor único |
|
Políticas de chaves e políticas do IAM |
Você pode usar essa chave de condição para limitar os valores que os diretores podem especificar no PendingWindowInDays
parâmetro de uma ScheduleKeyDeletionsolicitação.
PendingWindowInDays
Especifica o número de dias que AWS KMS serão esperados antes de excluir uma chave. AWS KMS permite especificar um período de espera entre 7 e 30 dias, mas você pode usar a chave de kms:ScheduleKeyDeletionPendingWindowInDays
condição para restringir ainda mais o período de espera, como impor um período mínimo de espera dentro do intervalo válido.
Por exemplo, a declaração de política de chave a seguir usa a chave de condição kms:ScheduleKeyDeletionPendingWindowInDays
para impedir que a entidade principal programe a exclusão da chave se o período de espera for menor ou igual a 21 dias.
{ "Effect": "Deny", "Action": "kms:ScheduleKeyDeletion", "Principal": "*", "Resource": "*", "Condition" : { "NumericLessThanEquals" : { "kms:ScheduleKeyDeletionPendingWindowInDays" : "21" } } }
kms: SigningAlgorithm
AWS KMS chaves de condição | Tipo de condição | Tipo de valor | APIoperações | Tipo de política |
---|---|---|---|---|
|
String |
Valor único |
|
Políticas de chaves e políticas do IAM |
Você pode usar a chave de kms:SigningAlgorithm
condição para controlar o acesso às operações de Assinar e Verificar com base no valor do SigningAlgorithmparâmetro na solicitação. Essa chave de condição não tem efeito nas operações realizadas fora da AWS KMS, como a verificação de assinaturas com a chave pública em um KMS par de chaves assimétrico fora da. AWS KMS
O exemplo de política de chaves a seguir permite que os usuários que podem assumir a testers
função usem a KMS chave para assinar mensagens somente quando o algoritmo de assinatura usado para a solicitação for um PSS algoritmo RSASSA _, comoRSASSA_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
AWS KMS chaves de condição | Tipo de condição | Tipo de valor | APIoperações | Tipo de política |
---|---|---|---|---|
|
Timestamp |
Valor único |
|
Políticas de chaves e políticas do IAM |
A chave de kms:ValidTo
condição controla o acesso à ImportKeyMaterialoperação com base no valor do ValidToparâmetro na solicitação, que determina quando o material da 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 ExpirationModelparâmetro forKEY_MATERIAL_DOES_NOT_EXPIRE
, o ValidTo
parâmetro é inválido. Você também pode usar a chave de ExpirationModel condição kms: para exigir o ExpirationModel
parâmetro ou um valor de parâmetro específico.
O exemplo de declaração de política a seguir permite que um usuário importe material de chave em uma KMS chave. 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:role/ExampleRole" }, "Action": "kms:ImportKeyMaterial", "Resource": "*", "Condition": { "NumericLessThanEquals": { "kms:ValidTo": "1546257599.0" } } }
Consulte também
kms: ViaService
AWS KMS chaves de condição | Tipo de condição | Tipo de valor | APIoperações | Tipo de política |
---|---|---|---|---|
|
String |
Valor único |
KMSprincipais operações de recursos |
Políticas de chaves e políticas do IAM |
A chave de kms:ViaService
condição limita o uso de uma KMS chave às solicitações de AWS serviços especificados. Você pode especificar um ou mais serviços em cada chave de condição kms:ViaService
. A operação deve ser uma operação de recurso KMS chave, ou seja, uma operação autorizada para uma KMS chave específica. Para identificar as KMS principais operações de recursos, na Tabela de ações e recursos, procure um valor de KMS key
na Resources
coluna da operação.
Por exemplo, a seguinte declaração de política chave usa a chave de kms:ViaService
condição para permitir que uma chave gerenciada pelo cliente seja usada para as ações especificadas somente quando a solicitação vem da Amazon EC2 ou da Amazon RDS na região Oeste dos EUA (Oregon) em nome daExampleRole
.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "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" ] } } }
Você também pode usar uma chave de kms:ViaService
condição para negar permissão para usar uma KMS chave quando a solicitação vem de serviços específicos. Por exemplo, a instrução de política a seguir usa uma chave de condição kms:ViaService
para impedir que uma chave gerenciada pelo cliente seja usada para operações Encrypt
quando a solicitação é proveniente do AWS Lambda em nome de ExampleRole
.
{ "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "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 Conta da AWS. Essas entidades principais deve ter as seguintes permissões:
-
Permissão para usar a KMS chave. A entidade principal precisa conceder essas permissões ao serviço integrado, de forma que o serviço possa usar a chave gerenciada pelo cliente em nome da entidade principal. Para obter mais informações, consulte Usar criptografia do AWS KMS com serviços da AWS.
-
Permissão para usar o serviço integrado. Para obter detalhes sobre como dar aos usuários acesso a um AWS serviço que se integra ao AWS KMS, consulte a documentação do serviço integrado.
Todas as Chaves 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 KMS chave seja usada somente para solicitações provenientes do serviço que criou a KMS chave. Para ver a política principal de um Chave gerenciada pela AWS, use a GetKeyPolicyoperação.
A chave de kms:ViaService
condição é válida em todas IAM as principais declarações de política. Os serviços que você especificar devem ser integrados ao AWS KMSkms:ViaService
.
Serviços que oferecem suporte à chave de condição kms:ViaService
A tabela a seguir lista AWS os serviços que estão integrados AWS KMS e oferecem suporte ao uso da chave de kms:ViaService
condição nas chaves gerenciadas pelo cliente. Os serviços desta tabela podem não estar disponíveis em todas as regiões. Use o .amazonaws.com
sufixo do AWS KMS ViaService nome em todas as AWS partições.
nota
Talvez seja necessário rolar horizontalmente ou verticalmente para ver todos os dados nessa tabela.
Nome do serviço | AWS KMS ViaService nome |
---|---|
AWS App Runner | apprunner. |
AWS AppFabric | appfabric. |
Amazon AppFlow | appflow. |
AWS Application Migration Service | mgn. |
Amazon Athena | athena. |
AWS Audit Manager | auditmanager. |
Amazon Aurora | rds. |
AWS Backup | backup. |
AWS Backup Gateway | backup-gateway. |
Cópia de modelo do Amazon Bedrock | bedrock. |
Amazon Chime SDK | chimevoiceconnector. |
AWS Clean Rooms ML | cleanrooms-ml. |
AWS CodeArtifact | codeartifact. |
CodeGuru Revisor da Amazon | codeguru-reviewer. |
Amazon Comprehend | comprehend. |
Amazon Connect | connect. |
Amazon Connect Customer Profiles | profile. |
Amazon Q in Connect | wisdom. |
AWS Database Migration Service (AWS DMS) | dms. |
AWS Directory Service | directoryservice. |
Amazon DynamoDB | dynamodb. |
Amazon DocumentDB | docdb-elastic. |
Amazon EC2 Systems Manager (SSM) | ssm. |
Amazon Elastic Block Store (AmazonEBS) | ec2. (EBSsomente) |
Amazon Elastic Container Registry (AmazonECR) | ecr. |
Amazon Elastic File System (AmazonEFS) | elasticfilesystem. |
Amazon ElastiCache |
Inclua os dois ViaService nomes no valor da chave de condição:
|
AWS Elemental MediaTailor | mediatailor. |
AWS Resolução de entidades | entityresolution. |
Amazon EventBridge | events. |
Amazon FinSpace | finspace. |
Amazon Forecast | forecast. |
Amazon FSx | fsx. |
AWS Glue | glue. |
AWS Ground Station | groundstation. |
Amazon GuardDuty | malware-protection. |
AWS HealthLake | healthlake. |
AWS IoT SiteWise | iotsitewise. |
Amazon Kendra | kendra. |
Amazon Keyspaces (para Apache Cassandra) | cassandra. |
Amazon Kinesis | kinesis. |
Amazon Data Firehose | firehose. |
Amazon Kinesis Video Streams | kinesisvideo. |
AWS Lambda | lambda. |
Amazon Lex | lex. |
AWS License Manager | license-manager. |
Amazon Location Service | geo. |
Amazon Lookout for Equipment | lookoutequipment. |
Amazon Lookout for Metrics | lookoutmetrics. |
Amazon Lookout for Vision | lookoutvision. |
Amazon Macie | macie. |
AWS Mainframe Modernization | m2. |
AWS Mainframe Modernization Teste de aplicativos | apptest. |
Amazon Managed Blockchain | managedblockchain. |
Amazon Managed Streaming para Apache Kafka (Amazon) MSK | kafka. |
Fluxos de trabalho gerenciados pela Amazon para Apache Airflow () MWAA | airflow. |
Amazon MemoryDB | memorydb. |
Amazon Monitron | monitron. |
Amazon MQ | mq. |
Amazon Neptune | rds. |
Amazon Nimble Studio | nimble. |
AWS HealthOmics | omics. |
OpenSearch Serviço Amazon | es. ,
aoss. |
AWS Proton | proton. |
Banco de dados Amazon Quantum Ledger (AmazonQLDB) | qldb. |
Amazon RDS Performance Insights | rds. |
Amazon Redshift | redshift. |
Editor de consultas do Amazon Redshift V2 | sqlworkbench. |
Amazon Redshift Serverless | redshift-serverless. |
Amazon Rekognition | rekognition. |
Amazon Relational Database Service (AmazonRDS) | rds. |
Armazenamento de dados replicado da Amazon | ards. |
Amazon SageMaker | sagemaker. |
AWS Secrets Manager | secretsmanager. |
Amazon Security Lake | securitylake. |
Amazon Simple Email Service (AmazonSES) | ses. |
Serviço de notificação simples da Amazon (AmazonSNS) | sns. |
Amazon Simple Queue Service (AmazonSQS) | sqs. |
Amazon Simple Storage Service (Amazon S3) | s3. |
AWS Snowball | importexport. |
AWS Step Functions | states. |
AWS Storage Gateway | storagegateway. |
AWS Systems Manager Incident Manager | ssm-incidents. |
AWS Systems Manager Incident Manager Contatos | ssm-contacts. |
Amazon Timestream | timestream. |
Amazon Translate | translate. |
Acesso Verificado pela AWS | verified-access. |
Amazon WorkMail | workmail. |
Amazon WorkSpaces | workspaces. |
Amazon WorkSpaces Thin Client | thinclient. |
Amazon WorkSpaces Web | workspaces-web. |
AWS X-Ray | xray. |
kms: WrappingAlgorithm
AWS KMS chaves de condição | Tipo de condição | Tipo de valor | APIoperações | Tipo de política |
---|---|---|---|---|
|
String |
Valor único |
|
Políticas de chaves e políticas do IAM |
Essa chave de condição controla o acesso à GetParametersForImportoperação com base no valor do WrappingAlgorithmparâmetro 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 o impede 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:role/ExampleRole" }, "Action": "kms:GetParametersForImport", "Resource": "*", "Condition": { "StringNotEquals": { "kms:WrappingAlgorithm": "RSAES_OAEP_SHA_1" } } }
Consulte também
kms: WrappingKeySpec
AWS KMS chaves de condição | Tipo de condição | Tipo de valor | APIoperações | Tipo de política |
---|---|---|---|---|
|
String |
Valor único |
|
Políticas de chaves e políticas do IAM |
Essa chave de condição controla o acesso à GetParametersForImportoperação com base no valor do WrappingKeySpecparâmetro 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_4096
.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:GetParametersForImport", "Resource": "*", "Condition": { "StringEquals": { "kms:WrappingKeySpec": "RSA_4096" } } }
Consulte também