Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
AWS KMS clés de condition
AWS KMS fournit un ensemble de clés de condition que vous pouvez utiliser dans les politiques et IAM politiques clés. Ces clés de condition sont spécifiques à AWS KMS. Par exemple, vous pouvez utiliser la clé de kms:EncryptionContext:context-key
condition pour exiger un contexte de chiffrement particulier lorsque vous contrôlez l'accès à une KMS clé de chiffrement symétrique.
Conditions d'une demande API d'opération
De nombreuses clés de AWS KMS condition contrôlent l'accès à une KMS clé en fonction de la valeur d'un paramètre dans la demande d' AWS KMS opération. Par exemple, vous pouvez utiliser la clé de KeySpec condition kms : dans une IAM politique pour autoriser l'utilisation de l'CreateKeyopération uniquement lorsque la valeur du KeySpec
paramètre de la CreateKey
demande estRSA_4096
.
Ce type de condition fonctionne même lorsque le paramètre n'apparaît pas dans la demande, par exemple lorsque vous utilisez la valeur par défaut du paramètre. Par exemple, vous pouvez utiliser la clé de KeySpec condition kms : pour permettre aux utilisateurs d'utiliser l'CreateKey
opération uniquement lorsque la valeur du KeySpec
paramètre estSYMMETRIC_DEFAULT
, qui est la valeur par défaut. Cette condition autorise les demandes dont le paramètre KeySpec
a pour valeur SYMMETRIC_DEFAULT
et les demandes qui n'ont pas de paramètre KeySpec
.
Conditions relatives aux KMS clés utilisées dans les API opérations
Certaines clés de AWS KMS condition peuvent contrôler l'accès aux opérations en fonction d'une propriété de la KMS clé utilisée dans l'opération. Par exemple, vous pouvez utiliser la KeyOrigin condition kms : pour autoriser les principaux GenerateDataKeyà appeler une KMS clé uniquement lorsque Origin
la KMS clé estAWS_KMS
. Pour savoir si une clé de condition peut être utilisée de cette manière, consultez la description de la clé de condition.
L'opération doit être une opération sur une ressource KMS clé, c'est-à-dire une opération autorisée pour une KMS clé particulière. Pour identifier les KMS principales opérations liées aux ressources, dans le tableau Actions et ressources, recherchez la valeur de KMS key
dans la Resources
colonne correspondant à l'opération. Si vous utilisez ce type de clé de condition avec une opération qui n'est pas autorisée pour une ressource KMS clé particulière, par exemple ListKeys, l'autorisation n'est pas effective car la condition ne peut jamais être satisfaite. Aucune ressource KMS clé n'est impliquée dans l'autorisation de l'ListKeys
opération et aucune KeySpec
propriété n'est impliquée.
Les rubriques suivantes décrivent chaque clé de AWS KMS condition et incluent des exemples de déclarations de politique illustrant la syntaxe des politiques.
Utilisation d'opérateurs d'ensemble avec des clés de condition
Lorsqu'une condition de stratégie compare deux ensembles de valeurs, tels que le jeu de balises d'une demande et le jeu de balises d'une politique, vous devez indiquer AWS comment comparer les ensembles. IAMdéfinit deux opérateurs définis, ForAnyValue
etForAllValues
, à cette fin. Utilisez les opérateurs d'ensemble uniquement avec des clés de condition multi-valeurs, qui les nécessitent. N'utilisez pas d'opérateurs d'ensemble avec des clés de condition à valeur unique. Comme toujours, testez vos instructions de politiques de manière approfondie avant de les utiliser au sein d'un environnement de production.
Les clés de condition sont à valeur unique ou multi-valeurs. Pour déterminer si une clé de AWS KMS condition est à valeur unique ou à valeurs multiples, consultez la colonne Type de valeur dans la description de la clé de condition.
-
Les clés de condition à valeur unique ont au plus une valeur dans le contexte d'autorisation (la demande ou la ressource). Par exemple, étant donné que chaque API appel ne peut provenir que d'une seule Compte AWS, kms : CallerAccount est une clé de condition à valeur unique. N'utilisez pas d'opérateur d'ensemble avec une clé de condition à valeur unique.
-
Les clés de condition multi-valeurs ont plusieurs valeurs dans le contexte d'autorisation (la demande ou la ressource). Par exemple, étant donné que chaque KMS clé peut avoir plusieurs alias, kms : ResourceAliases peut avoir plusieurs valeurs. Les clés de condition multi-valeurs nécessitent un opérateur d'ensemble.
Notez que la différence entre les clés de condition à valeur unique et multi-valeurs dépend du nombre de valeurs dans le contexte d'autorisation, et non du nombre de valeurs dans la condition de politique.
Avertissement
L'utilisation d'un opérateur d'ensemble avec une clé de condition à valeur unique peut créer une instruction de politique trop permissive (ou trop restrictive). Utilisez des opérateurs d'ensemble uniquement avec des clés de condition multi-valeurs.
Si vous créez ou mettez à jour une politique qui inclut un opérateur ForAllValues
défini avec les clés de contexte ou de aws:RequestTag/tag-key
condition, AWS KMS renvoie le message d'erreur suivant kms: EncryptionContext :
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.
Pour obtenir des informations détaillées sur les opérateurs ForAnyValue
et ForAllValues
set, consultez la section Utilisation de plusieurs clés et valeurs dans le Guide de IAM l'utilisateur. Pour plus d'informations sur le risque lié à l'utilisation de l'opérateur ForAllValues
défini avec une condition à valeur unique, voir Avertissement de sécurité : ForAllValues clé à valeur unique dans le guide de l'IAMutilisateur.
Rubriques
- km : BypassPolicyLockoutSafetyCheck
- km : CallerAccount
- kms : CustomerMasterKeySpec (obsolète)
- kms : CustomerMasterKeyUsage (obsolète)
- km : DataKeyPairSpec
- km : EncryptionAlgorithm
- kms EncryptionContext : touche contextuelle
- km : EncryptionContextKeys
- km : ExpirationModel
- km : GrantConstraintType
- km : GrantIsFor AWSResource
- km : GrantOperations
- km : GranteePrincipal
- km : KeyAgreementAlgorithm
- km : KeyOrigin
- km : KeySpec
- km : KeyUsage
- km : MacAlgorithm
- km : MessageType
- km : MultiRegion
- km : MultiRegionKeyType
- km : PrimaryRegion
- km : ReEncryptOnSameKey
- km : RequestAlias
- km : ResourceAliases
- km : ReplicaRegion
- km : RetiringPrincipal
- km : RotationPeriodInDays
- km : ScheduleKeyDeletionPendingWindowInDays
- km : SigningAlgorithm
- km : ValidTo
- km : ViaService
- km : WrappingAlgorithm
- km : WrappingKeySpec
km : BypassPolicyLockoutSafetyCheck
AWS KMS clés de condition | Type de condition | Type de la valeur | APIopérations | Type de stratégie |
---|---|---|---|---|
|
Booléen |
À valeur unique |
|
Stratégies IAM uniquement Stratégies de clé et stratégies IAM |
La clé de kms:BypassPolicyLockoutSafetyCheck
condition contrôle l'accès aux PutKeyPolicyopérations CreateKeyet en fonction de la valeur du BypassPolicyLockoutSafetyCheck
paramètre dans la demande.
L'exemple de déclaration de IAM politique suivant empêche les utilisateurs de contourner le contrôle de sécurité du verrouillage des politiques en leur refusant l'autorisation de créer des KMS clés lorsque la valeur du BypassPolicyLockoutSafetyCheck
paramètre de la demande est CreateKey
true.
{ "Effect": "Deny", "Action": [ "kms:CreateKey", "kms:PutKeyPolicy" ], "Resource": "*", "Condition": { "Bool": { "kms:BypassPolicyLockoutSafetyCheck": true } } }
Vous pouvez également utiliser la clé de kms:BypassPolicyLockoutSafetyCheck
condition dans une IAM politique ou une politique de clé pour contrôler l'accès à l'PutKeyPolicy
opération. L'exemple suivant de déclaration de politique issue d'une politique clé empêche les utilisateurs de contourner le contrôle de sécurité du verrouillage de la politique lorsqu'ils modifient la politique d'une KMS clé.
Plutôt que d'utiliser explicitement Deny
, cette instruction de politique utilise Allow
avec l'opérateur de condition Null afin d'autoriser l'accès uniquement lorsque la demande n'inclut pas le paramètre BypassPolicyLockoutSafetyCheck
. Lorsque le paramètre n'est pas utilisé, la valeur par défaut est false
. Cette instruction de politique légèrement affaiblie peut être remplacée dans le cas rare où un contournement est nécessaire.
{ "Effect": "Allow", "Action": "kms:PutKeyPolicy", "Resource": "*", "Condition": { "Null": { "kms:BypassPolicyLockoutSafetyCheck": true } } }
Voir aussi
km : CallerAccount
AWS KMS clés de condition | Type de condition | Type de la valeur | APIopérations | Type de stratégie |
---|---|---|---|---|
|
Chaîne |
À valeur unique |
KMSopérations liées aux ressources clés Opérations liées au magasin de clés personnalisé |
Stratégies de clé et stratégies IAM |
Vous pouvez utiliser cette clé de condition pour autoriser ou refuser l'accès à toutes les identités (utilisateurs et rôles) d'un Compte AWS. Dans les politiques de clé, vous utilisez l'élément Principal
pour spécifier les identités auxquelles l'instruction de politique s'applique. La syntaxe de l'élément Principal
ne permet pas de spécifier toutes les identités dans un Compte AWS. Mais vous pouvez obtenir cet effet en combinant cette clé de condition avec un Principal
élément qui spécifie toutes les AWS identités.
Vous pouvez l'utiliser pour contrôler l'accès à n'importe quelle opération de ressource KMS clé, c'est-à-dire toute AWS KMS opération utilisant une KMS clé particulière. Pour identifier les KMS principales opérations liées aux ressources, dans le tableau Actions et ressources, recherchez la valeur de KMS key
dans la Resources
colonne correspondant à l'opération. Elle est également valable pour les opérations qui gèrent des magasins de clés personnalisés.
Par exemple, l'instruction de politique suivante montre comment utiliser la clé de condition kms:CallerAccount
. Cette déclaration de politique fait partie de la politique clé Clé gérée par AWS d'AmazonEBS. Il combine un Principal
élément qui spécifie toutes les AWS identités avec la clé de kms:CallerAccount
condition pour autoriser efficacement l'accès à toutes les identités dans Compte AWS 111122223333. Il contient une clé de AWS KMS condition supplémentaire (kms:ViaService
) pour limiter davantage les autorisations en n'autorisant que les demandes provenant d'AmazonEBS. Pour de plus amples informations, veuillez consulter km : 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 (obsolète)
La clé de condition kms:CustomerMasterKeySpec
est obsolète. Utilisez plutôt la clé de KeySpec condition kms :.
Les clés de condition kms:CustomerMasterKeySpec
et kms:KeySpec
fonctionnent de la même manière. Seuls les noms diffèrent. Nous vous recommandons d'utiliser kms:KeySpec
. Toutefois, pour éviter d'interrompre les modifications, AWS KMS prend en charge les deux clés de condition.
kms : CustomerMasterKeyUsage (obsolète)
La clé de condition kms:CustomerMasterKeyUsage
est obsolète. Utilisez plutôt la clé de KeyUsage condition kms :.
Les clés de condition kms:CustomerMasterKeyUsage
et kms:KeyUsage
fonctionnent de la même manière. Seuls les noms diffèrent. Nous vous recommandons d'utiliser kms:KeyUsage
. Toutefois, pour éviter d'interrompre les modifications, AWS KMS prend en charge les deux clés de condition.
km : DataKeyPairSpec
AWS KMS clés de condition | Type de condition | Type de la valeur | APIopérations | Type de stratégie |
---|---|---|---|---|
|
Chaîne |
À valeur unique |
|
Stratégies de clé et stratégies IAM |
Vous pouvez utiliser cette clé de condition pour contrôler l'accès aux GenerateDataKeyPairWithoutPlaintextopérations GenerateDataKeyPairet en fonction de la valeur du KeyPairSpec
paramètre dans la demande. Par exemple, vous pouvez autoriser des utilisateurs à générer uniquement des types particuliers de paires de clés de données.
L'exemple de déclaration de politique clé suivant utilise la clé de kms:DataKeyPairSpec
condition pour permettre aux utilisateurs de l'KMSutiliser pour générer uniquement des paires de clés de RSA données.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": [ "kms:GenerateDataKeyPair", "kms:GenerateDataKeyPairWithoutPlaintext" ], "Resource": "*", "Condition": { "StringLike": { "kms:DataKeyPairSpec": "RSA*" } } }
Voir aussi
km : EncryptionAlgorithm
AWS KMS clés de condition | Type de condition | Type de la valeur | APIopérations | Type de stratégie |
---|---|---|---|---|
|
Chaîne |
À valeur unique |
|
Stratégies de clé et stratégies IAM |
Vous pouvez utiliser la clé de condition kms:EncryptionAlgorithm
pour contrôler l'accès aux opérations de chiffrement en fonction de l'algorithme de chiffrement utilisé dans l'opération. Pour les ReEncryptopérations de chiffrement, de déchiffrement et de déchiffrement, il contrôle l'accès en fonction de la valeur du EncryptionAlgorithmparamètre figurant dans la demande. Pour les opérations qui génèrent des clés de données et des paires de clés de données, elle contrôle l'accès en fonction de l'algorithme de chiffrement utilisé pour chiffrer la clé de données.
Cette clé de condition n'a aucun effet sur les opérations effectuées en dehors de AWS KMS, telles que le chiffrement avec la clé publique dans une paire de KMS clés asymétrique en dehors de. AWS KMS
EncryptionAlgorithm paramètre dans une demande
Pour autoriser les utilisateurs à n'utiliser qu'un algorithme de chiffrement spécifique avec une KMS clé, utilisez une déclaration de politique comportant un Deny
effet et un opérateur de StringNotEquals
condition. Par exemple, l'exemple de déclaration de politique de clé suivant interdit aux principaux habilités à assumer ce ExampleRole
rôle d'utiliser cette KMS clé dans les opérations cryptographiques spécifiéesRSAES_OAEP_SHA_256
, sauf si l'algorithme de chiffrement indiqué dans la demande est un algorithme de chiffrement asymétrique utilisé avec des clés. RSA KMS
Contrairement à une déclaration de politique qui autorise un utilisateur à utiliser un algorithme de chiffrement particulier, une déclaration de politique comportant une double négation comme celle-ci empêche d'autres politiques et autorisations pour cette KMS clé d'autoriser ce rôle à utiliser d'autres algorithmes de chiffrement. Le Deny
contenu de cette déclaration de politique clé a priorité sur toute politique clé ou IAM politique ayant un Allow
effet, et il a priorité sur toutes les subventions relatives à cette KMS clé et à ses principes.
{ "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" } } }
Algorithme de chiffrement utilisé pour l'opération
Vous pouvez également utiliser la clé de condition kms:EncryptionAlgorithm
pour contrôler l'accès aux opérations en fonction de l'algorithme de chiffrement utilisé dans l'opération, même lorsque l'algorithme n'est pas spécifié dans la demande. Cela vous permet d'exiger ou d'interdire l'algorithme SYMMETRIC_DEFAULT
, qui peut ne pas être spécifié dans une demande, car il s'agit de la valeur par défaut.
Cette fonction vous permet également d'utiliser la clé de condition kms:EncryptionAlgorithm
pour contrôler l'accès aux opérations qui génèrent des clés de données et des paires de clés de données. Ces opérations utilisent uniquement des KMS clés de chiffrement symétriques et l'SYMMETRIC_DEFAULT
algorithme.
Par exemple, cette IAM politique limite ses principes au chiffrement symétrique. Il refuse l'accès à toute KMS clé du compte d'exemple pour les opérations cryptographiques, sauf si l'algorithme de chiffrement spécifié dans la demande ou utilisé dans l'opération est SYMMETRIC _DEFAULT. Y compris GenerateDataKeyles GenerateDataKey*
ajouts GenerateDataKeyWithoutPlaintextGenerateDataKeyPair,, et GenerateDataKeyPairWithoutPlaintextaux autorisations. La condition n'a aucun effet sur ces opérations, car elles utilisent toujours un algorithme de chiffrement symétrique.
{ "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" } } }
Voir aussi
kms EncryptionContext : touche contextuelle
AWS KMS clés de condition | Type de condition | Type de la valeur | APIopérations | Type de stratégie |
---|---|---|---|---|
|
Chaîne |
À valeur unique |
|
Stratégies de clé et stratégies IAM |
Vous pouvez utiliser la clé de kms:EncryptionContext:context-key
condition pour contrôler l'accès à une KMSclé de chiffrement symétrique en fonction du contexte de chiffrement dans une demande d'opération cryptographique. Utilisez cette clé de condition pour évaluer à la fois la clé et la valeur dans la paire de contexte de chiffrement. Pour évaluer uniquement les clés de contexte de chiffrement ou pour exiger un contexte de chiffrement indépendamment des clés ou des valeurs, utilisez la clé de EncryptionContextKeys condition kms :.
Note
Les valeurs des clés de condition doivent être conformes aux règles relatives aux caractères des politiques et IAM politiques clés. Certains caractères valides dans un contexte de chiffrement ne sont pas valides dans les politiques. Vous ne pourrez peut-être pas utiliser cette clé de condition pour exprimer toutes les valeurs du contexte de chiffrement valides. Pour plus d'informations sur les règles de document de politique de clé, voir Format de politique de clé. Pour plus de détails sur les règles relatives aux documents de IAM politique, consultez les exigences relatives aux IAM noms dans le guide de IAM l'utilisateur.
Vous ne pouvez pas spécifier de contexte de chiffrement dans une opération cryptographique avec une clé asymétrique ou une KMS HMAC KMS clé. Les algorithmes asymétriques et les MAC algorithmes ne prennent pas en charge un contexte de chiffrement.
Pour utiliser la clé de condition kms: EncryptionContext : touche contextuelle, remplacez le context-key
espace réservé avec la clé de contexte de chiffrement. Remplacez le context-value
espace réservé avec la valeur du contexte de chiffrement.
"kms:EncryptionContext:
context-key
": "context-value
"
Par exemple, la clé de condition suivante spécifie un contexte de chiffrement dans lequel la clé est AppName
et la valeur est ExampleApp
(AppName =
ExampleApp
).
"kms:EncryptionContext:AppName": "ExampleApp"
Il s'agit d'une clé de condition à valeur unique. La clé de la clé de condition spécifie une clé de contexte de chiffrement particulière (context-key). Bien que vous puissiez inclure plusieurs paires de contextes de chiffrement dans chaque API demande, la paire de contextes de chiffrement avec la clé de contexte spécifiée ne peut avoir qu'une seule valeur. Par exemple, la clé de condition kms:EncryptionContext:Department
s'applique uniquement aux paires de contexte de chiffrement avec une clé Department
, et toute paire de contexte de chiffrement donnée avec la clé Department
ne peut avoir qu'une seule valeur.
N'utilisez pas d'opérateur d'ensemble avec la clé de condition kms:EncryptionContext:context-key
. Si vous créez une instruction de politique avec une action Allow
, la clé de condition kms:EncryptionContext:context-key
et l'opérateur d'ensemble ForAllValues
, la condition autorise les demandes sans contexte de chiffrement et les demandes avec des paires de contexte de chiffrement qui ne sont pas spécifiées dans la condition de politique.
Avertissement
N'utilisez pas d'opérateur d'ensemble ForAnyValue
ou ForAllValues
avec cette clé de condition à valeur unique. Ces opérateurs d'ensemble peuvent créer une condition de politique qui ne nécessite pas de valeurs que vous avez l'intention d'exiger et autorise les valeurs que vous avez l'intention d'interdire.
Si vous créez ou mettez à jour une politique qui inclut un opérateur ForAllValues
set avec la touche de contexte kms: EncryptionContext :, AWS KMS renvoie le message d'erreur suivant :
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.
Pour exiger une paire de contexte de chiffrement particulière, utilisez la clé de condition kms:EncryptionContext:context-key
avec l'opérateur StringEquals
.
L'exemple de déclaration de politique de clé suivant permet aux principaux habilités à assumer le rôle d'utiliser la KMS clé dans une GenerateDataKey
demande uniquement lorsque le contexte de chiffrement de la demande inclut la AppName:ExampleApp
paire. D'autres paires de contexte de chiffrement sont autorisées.
Le nom de la clé n'est pas sensible à la casse. La sensibilité à la casse de la valeur est déterminée par l'opérateur de condition, tel que StringEquals
. Pour plus de détails, consultez Sensibilité à la casse de la condition de contexte de chiffrement.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:AppName": "ExampleApp" } } }
Pour exiger une paire de contextes de chiffrement et interdire toutes les autres paires de contextes de chiffrement, utilisez à la fois kms: EncryptionContext : clé de contexte et kms:EncryptionContextKeysdans la déclaration de politique. L'exemple d'instruction de politique suivant utilise la condition kms:EncryptionContext:AppName
pour exiger la présence de la paire de contexte de chiffrement AppName=ExampleApp
dans la demande. Il utilise également une clé de condition kms:EncryptionContextKeys
avec l'opérateur d'ensemble ForAllValues
pour autoriser uniquement la clé de contexte de chiffrement AppName
.
L'opérateur d'ensemble ForAllValues
limite les clés de contexte de chiffrement dans la demande à AppName
. Si la condition kms:EncryptionContextKeys
avec l'opérateur d'ensemble ForAllValues
a été utilisée seule dans une instruction de politique, cet opérateur d'ensemble autoriserait les demandes sans contexte de chiffrement. Toutefois, si la demande n'avait pas de contexte de chiffrement, la condition kms:EncryptionContext:AppName
échouerait. Pour plus de détails sur l'opérateur ForAllValues
défini, reportez-vous à la section Utilisation de plusieurs clés et valeurs dans le Guide de IAM l'utilisateur.
{ "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" ] } } }
Vous pouvez également utiliser cette clé de condition pour refuser l'accès à une KMS clé pour une opération particulière. L'exemple de déclaration de politique de clé suivant utilise un Deny
effet pour interdire au principal d'utiliser la KMS clé si le contexte de chiffrement indiqué dans la demande inclut une paire de contextes de Stage=Restricted
chiffrement. Cette condition permet une demande avec d'autres paires de contexte de chiffrement, y compris les paires de contexte de chiffrement avec la clé Stage
et d'autres valeurs, telles que Stage=Test
.
{ "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Stage": "Restricted" } } }
Utilisation de plusieurs paires de contexte de chiffrement
Vous pouvez exiger ou interdire plusieurs paires de contexte de chiffrement. Vous pouvez également exiger l'une des différentes paires de contexte de chiffrement. Pour plus de détails sur la logique utilisée pour interpréter ces conditions, voir Création d'une condition avec plusieurs clés ou valeurs dans le Guide de IAM l'utilisateur.
Note
Les versions antérieures de cette rubrique affichaient des déclarations de politique qui utilisaient les opérateurs ForAnyValue
et ForAllValues
set avec la clé de condition kms: EncryptionContext : touche contextuelle. L'utilisation d'un opérateur d'ensemble avec une clé de condition à valeur unique peut entraîner des politiques qui autorisent des demandes sans contexte de chiffrement et des paires de contexte de chiffrement non spécifiées.
Par exemple, une condition de politique avec l'effet Allow
, l'opérateur d'ensemble ForAllValues
et la clé de condition "kms:EncryptionContext:Department": "IT"
ne limite pas le contexte de chiffrement à la paire « Department = IT ». Elle autorise les demandes sans contexte de chiffrement et les demandes avec des paires de contexte de chiffrement non spécifiées, telles que Stage=Restricted
.
Veuillez revoir vos politiques et éliminer l'opérateur défini de toute condition à l'aide de la touche suivante kms: EncryptionContext : touche contextuelle. Les tentatives de création ou de mise à jour d'une politique avec ce format échouent avec une exception OverlyPermissiveCondition
. Pour résoudre l'erreur, supprimez l'opérateur d'ensemble.
Pour exiger plusieurs paires de contexte de chiffrement, répertoriez les paires dans la même condition. L'exemple d'instruction de politique de clé suivant nécessite deux paires de contexte de chiffrement, Department=IT
et Project=Alpha
. Comme les conditions ont des clés différentes (kms:EncryptionContext:Department
etkms:EncryptionContext:Project
), elles sont implicitement connectées par un AND opérateur. D'autres paires de contexte de chiffrement sont autorisées, mais non exigées.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Department": "IT", "kms:EncryptionContext:Project": "Alpha" } } }
Pour exiger une paire de contexte de chiffrement OU une autre paire, placez chaque clé de condition dans une instruction de politique distincte. L'exemple de politique de clé suivant nécessite des paires Department=IT
ou Project=Alpha
, ou les deux. D'autres paires de contexte de chiffrement sont autorisées, mais non exigées.
{ "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" } } }
Pour exiger des paires de chiffrement particulières et exclure toutes les autres paires de contextes de chiffrement, utilisez à la fois kms: EncryptionContext : clé de contexte et kms:EncryptionContextKeysdans la déclaration de politique. La déclaration de politique clé suivante utilise la condition kms: EncryptionContext :context-key pour exiger un contexte de chiffrement avec Department=IT
les Project=Alpha
deux paires. Elle utilise une clé de condition kms:EncryptionContextKeys
avec l'opérateur d'ensemble ForAllValues
pour n'autoriser que les clés de contexte de chiffrement Department
et Project
.
L'opérateur d'ensemble ForAllValues
limite les clés de contexte de chiffrement dans la demande à Department
et Project
. S'il était utilisé seul dans une condition, cet opérateur set autoriserait les requêtes sans contexte de chiffrement, mais dans cette configuration, la clé de contexte kms: EncryptionContext : échouerait dans cette condition.
{ "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" ] } } }
Vous pouvez également interdire plusieurs paires de contexte de chiffrement. L'exemple de déclaration de politique de clé suivant utilise un Deny
effet pour interdire au principal d'utiliser les KMS clés si le contexte de chiffrement de la demande inclut a Stage=Restricted
ou Stage=Production
.pair.
Plusieurs valeurs (Restricted
et Production
) pour la même clé (kms:EncryptionContext:Stage
) sont implicitement connectés par un OR. Pour plus de détails, consultez la section Logique d'évaluation des conditions comportant plusieurs clés ou valeurs dans le guide de IAM l'utilisateur.
{ "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Stage": [ "Restricted", "Production" ] } } }
Sensibilité à la casse de la condition de contexte de chiffrement
Le contexte de chiffrement indiqué dans une opération de déchiffrement doit correspondre exactement au contexte de chiffrement précisé dans l'opération de chiffrement (en tenant compte des minuscules/majuscules). Seul l'ordre des paires dans un contexte de chiffrement avec plusieurs paire peut varier.
En revanche, dans les conditions des politiques, la clé de condition n'est pas sensible à la casse. Le respect de la casse de la valeur de condition est déterminée par l'opérateur de condition de politique que vous utilisez, comme StringEquals
ou StringEqualsIgnoreCase
.
En tant que telle, la clé de condition, qui comprend le kms:EncryptionContext:
préfixe et le
remplacement, ne fait pas la distinction majuscules/majuscules. Une politique qui utilise cette condition ne vérifie pas la casse des éléments de la clé de condition. La distinction majuscules/majuscules de la valeur, c'est-à-dire touche contextuelle
le remplacement, est déterminé par l'opérateur des conditions de la politique.valeur contextuelle
Par exemple, l'instruction de politique suivante autorise l'opération lorsque le contexte de chiffrement inclut une clé Appname
, quelle que soit sa capitalisation. La condition StringEquals
nécessite que ExampleApp
soit capitalisé tel qu'il est spécifié.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Appname": "ExampleApp" } } }
Pour exiger une clé contextuelle de chiffrement distinguant majuscules et minuscules, utilisez la condition kms : EncryptionContextKeys policy avec un opérateur de condition sensible aux majuscules et minuscules, tel que. StringEquals
Dans cette condition de politique, étant donné que la clé de contexte de chiffrement est la valeur de cette condition de politique, sa sensibilité à la casse est déterminée par l'opérateur de condition.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "AppName" } } }
Pour exiger une évaluation sensible aux majuscules et minuscules de la clé et de la valeur du contexte de chiffrement, utilisez les conditions de politique de clé de contexte kms:EncryptionContextKeys
et kms: EncryptionContext : ensemble dans la même déclaration de politique. L'opérateur de condition sensible à la casse (tel que StringEquals
) s'applique toujours à la valeur de la condition. La clé de contexte de chiffrement (telle que AppName
) est la valeur de la condition kms:EncryptionContextKeys
. La valeur du contexte de chiffrement (telle queExampleApp
) est la valeur de la condition kms: EncryptionContext : clé de contexte.
Par exemple, dans l'exemple suivant d'instruction de politique de clé, étant donné que l'opérateur StringEquals
est sensible à la casse, la clé de contexte de chiffrement et la valeur de contexte de chiffrement sont toutes deux sensibles à la casse.
{ "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" } } }
Utilisation de variables dans une condition de contexte de chiffrement
La clé et la valeur d'une paire de contexte de chiffrement doivent être des chaînes littérales simples. Il ne peut pas s'agir d'entiers ou d'objets, ou d'un type qui n'est pas entièrement résolu. Si vous utilisez un autre type, tel qu'un entier ou un flottant, il est AWS KMS interprété comme une chaîne littérale.
"encryptionContext": { "department": "10103.0" }
Cependant, la valeur de la clé de kms:EncryptionContext:context-key
condition peut être une variable IAM de politique. Ces variables de politique sont résolues lors de l'exécution en fonction des valeurs de la demande. Par exemple, aws:CurrentTime
est résolue à l'heure de la demande et aws:username
est résolue au nom convivial de l'appelant.
Vous pouvez utiliser ces variables de politique pour créer une instruction de politique avec une condition qui nécessite des informations très spécifiques dans un contexte de chiffrement, comme le nom d'utilisateur de l'appelant. Comme elle contient une variable, vous pouvez utiliser la même instruction de politique pour tous les utilisateurs qui peuvent assumer le rôle. Vous n'avez pas besoin d'écrire une instruction de politique distincte pour chaque utilisateur.
Imaginons une situation dans laquelle vous souhaitez que tous les utilisateurs pouvant assumer un rôle utilisent la même KMS clé pour chiffrer et déchiffrer leurs données. Cependant, vous souhaitez leur permettre de déchiffrer uniquement les données qu'ils ont chiffrées. Commencez par exiger que chaque demande AWS KMS inclue un contexte de chiffrement dans lequel la clé est le nom d'utilisateur de l'appelant user
et dont la valeur est le nom AWS d'utilisateur, tel que le suivant.
"encryptionContext": { "user": "bob" }
Ensuite, pour appliquer cette exigence, vous pouvez utiliser une instruction de politique comme celle de l'exemple suivant. Cette déclaration de politique donne au TestTeam
rôle l'autorisation de chiffrer et de déchiffrer les données avec la KMS clé. Toutefois, l'autorisation est uniquement valable lorsque le contexte de chiffrement de la demande inclut une paire "user":
"
. Pour représenter le nom d'utilisateur, la condition utilise la variable de politique <username>
"aws:username
.
Lorsque la demande est évaluée, le nom d'utilisateur de l'appelant remplace la variable dans la condition. Ainsi, la condition nécessite un contexte de chiffrement "user":
"bob"
pour « bob » et "user": "alice"
pour « alice ».
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/TestTeam" }, "Action": [ "kms:Decrypt", "kms:Encrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:user": "${aws:username}" } } }
Vous ne pouvez utiliser une variable de IAM politique que dans la valeur de la clé de kms:EncryptionContext:context-key
condition. Vous ne pouvez pas utiliser une variable dans la clé.
Vous pouvez également utiliser des clés de contexte spécifiques au fournisseur dans des variables. Ces clés contextuelles identifient de manière unique les utilisateurs qui se sont connectés à AWS l'aide de la fédération d'identité Web.
Comme toutes les variables, celles-ci peuvent être utilisées uniquement dans la condition de politique kms:EncryptionContext:context-key
, et non dans le contexte de chiffrement réel. Et elles peuvent être utilisées uniquement dans la valeur de la condition, pas dans la clé.
Par exemple, l'instruction de politique de clé suivante est similaire à la précédente. Toutefois, la condition nécessite un contexte de chiffrement où la clé est sub
et la valeur identifie de façon unique un utilisateur connecté à un groupe d'utilisateurs Amazon Cognito. Pour en savoir plus sur l'identification des utilisateurs et des rôles dans Amazon Cognito, consultez la section IAMRôles du guide du développeur 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}" } } }
Voir aussi
km : EncryptionContextKeys
AWS KMS clés de condition | Type de condition | Type de la valeur | APIopérations | Type de stratégie |
---|---|---|---|---|
|
Chaîne (liste) |
Multi-valeurs |
|
Stratégies de clé et stratégies IAM |
Vous pouvez utiliser la clé de kms:EncryptionContextKeys
condition pour contrôler l'accès à une KMSclé de chiffrement symétrique en fonction du contexte de chiffrement dans une demande d'opération cryptographique. Utilisez cette clé de condition pour évaluer uniquement la clé dans chaque paire de contexte de chiffrement. Utilisez la clé de condition kms:EncryptionContext:context-key
afin d'évaluer à la fois la clé et la valeur dans le contexte de chiffrement.
Vous ne pouvez pas spécifier de contexte de chiffrement dans une opération cryptographique avec une clé asymétrique ou une KMS HMAC KMS clé. Les algorithmes asymétriques et les MAC algorithmes ne prennent pas en charge un contexte de chiffrement.
Note
Les valeurs des clés de condition, y compris une clé de contexte de chiffrement, doivent être conformes aux règles de caractères et de codage des politiques AWS KMS clés. Vous ne pourrez peut-être pas utiliser cette clé de condition pour exprimer toutes les clés du contexte de chiffrement valides. Pour plus d'informations sur les règles de document de politique de clé, voir Format de politique de clé. Pour plus de détails sur les règles relatives aux documents de IAM politique, consultez les exigences relatives aux IAM noms dans le guide de IAM l'utilisateur.
Il s'agit d'une clé de condition multi-valeurs. Vous pouvez spécifier plusieurs paires de contextes de chiffrement dans chaque API demande. kms:EncryptionContextKeys
compare les clés de contexte de chiffrement de la demande à l'ensemble de clés de contexte de chiffrement de la politique. Pour déterminer comment ces ensembles sont comparés, vous devez fournir un opérateur d'ensemble ForAnyValue
ou ForAllValues
dans la condition de politique. Pour plus de détails sur les opérateurs définis, reportez-vous à la section Utilisation de plusieurs clés et valeurs dans le Guide de IAM l'utilisateur.
-
ForAnyValue
: au moins une clé de contexte de chiffrement dans la demande doit correspondre à une clé de contexte de chiffrement dans la condition de politique. D'autres clés de contexte de chiffrement sont autorisées. Si la demande n'a aucun contexte de chiffrement, la condition n'est pas remplie. -
ForAllValues
: chaque clé de contexte de chiffrement de la demande doit correspondre à une clé de contexte de chiffrement dans la condition de politique. Cet opérateur d'ensemble limite les clés de contexte de chiffrement à celles de la condition de politique. Il ne nécessite aucune clé de contexte de chiffrement, mais il interdit les clés de contexte de chiffrement non spécifiées.
L'exemple d'instruction de politique de clé suivant utilise la clé de condition kms:EncryptionContextKeys
avec l'opérateur d'ensemble ForAnyValue
. Cette déclaration de politique autorise l'utilisation d'une KMS clé pour les opérations spécifiées, mais uniquement lorsqu'au moins une des paires de contextes de chiffrement de la demande inclut la AppName
clé, quelle que soit sa valeur.
Par exemple, cette instruction de politique de clé autorise une demande GenerateDataKey
avec deux paires de contexte de chiffrement, AppName=Helper
et Project=Alpha
, car la première paire de contexte de chiffrement répond à la condition. Une demande avec uniquement Project=Alpha
ou sans contexte de chiffrement échouerait.
Comme l'opération StringEqualsconditionnelle distingue les majuscules et minuscules, cette déclaration de politique requiert l'orthographe et les majuscules de la clé contextuelle de chiffrement. Toutefois, vous pouvez utiliser un opérateur de condition qui ignore la casse de la clé, par exemple StringEqualsIgnoreCase
.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": [ "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "AppName" } } }
Vous pouvez également utiliser la clé de kms:EncryptionContextKeys
condition pour exiger un contexte de chiffrement (n'importe quel contexte de chiffrement) dans les opérations cryptographiques qui utilisent la KMS clé ;.
L'exemple d'énoncé de politique de clé suivant utilise la clé de kms:EncryptionContextKeys
condition associée à l'opérateur de condition Null pour autoriser l'accès à une KMS clé uniquement lorsque le contexte de chiffrement de la API demande n'est pas nul. Cette condition ne vérifie pas les clés ou les valeurs du contexte de chiffrement. Elle vérifie uniquement que le contexte de chiffrement existe.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": [ "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "Null": { "kms:EncryptionContextKeys": false } } }
Voir aussi
km : ExpirationModel
AWS KMS clés de condition | Type de condition | Type de la valeur | APIopérations | Type de stratégie |
---|---|---|---|---|
|
Chaîne |
À valeur unique |
|
Stratégies de clé et stratégies IAM |
La clé de kms:ExpirationModel
condition contrôle l'accès à l'ImportKeyMaterialopération en fonction de la valeur du ExpirationModelparamètre dans la demande.
ExpirationModel
est un paramètre facultatif qui détermine si les éléments de clé importés arrivent à expiration. Les valeurs valides sont KEY_MATERIAL_EXPIRES
et KEY_MATERIAL_DOES_NOT_EXPIRE
. La valeur par défaut est KEY_MATERIAL_EXPIRES
.
La date et l'heure d'expiration sont déterminées par la valeur du ValidToparamètre. Le paramètre ValidTo
est obligatoire, sauf si la valeur du paramètre ExpirationModel
est KEY_MATERIAL_DOES_NOT_EXPIRE
. Vous pouvez également utiliser la clé de ValidTo condition kms : pour exiger une date d'expiration particulière comme condition d'accès.
L'exemple de déclaration de politique suivant utilise la clé de kms:ExpirationModel
condition pour permettre aux utilisateurs d'importer des éléments clés dans une KMS clé uniquement lorsque la demande inclut le ExpirationModel
paramètre et que sa valeur estKEY_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" } } }
Vous pouvez également utiliser la clé de condition kms:ExpirationModel
pour autoriser les utilisateurs à importer les éléments de clé uniquement lorsque ceux-ci expirent. L'exemple d'instruction de politique de clé suivant utilise la clé de condition kms:ExpirationModel
avec l'opérateur de condition Null pour autoriser les utilisateurs à importer les éléments de clé uniquement lorsque la demande ne dispose pas de paramètre ExpirationModel
. La valeur par défaut pour ExpirationModel estKEY_MATERIAL_EXPIRES
.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:ImportKeyMaterial", "Resource": "*", "Condition": { "Null": { "kms:ExpirationModel": true } } }
Voir aussi
km : GrantConstraintType
AWS KMS clés de condition | Type de condition | Type de la valeur | APIopérations | Type de stratégie |
---|---|---|---|---|
|
Chaîne |
À valeur unique |
|
Stratégies de clé et stratégies IAM |
Vous pouvez utiliser cette clé de condition pour contrôler l'accès à l'CreateGrantopération en fonction du type de contrainte d'autorisation figurant dans la demande.
Lorsque vous créez un octroi, vous pouvez éventuellement spécifier une contrainte d'octroi pour autoriser les opérations permises par l'octroi seulement lorsqu'un contexte de chiffrement particulier est présent. La contrainte d'octroi peut être de deux types : EncryptionContextEquals
ou EncryptionContextSubset
. Vous pouvez utiliser cette clé de condition pour vérifier que la demande contient un type ou l'autre.
Important
N'incluez pas d'informations confidentielles ou sensibles dans ce champ. Ce champ peut être affiché en texte brut dans les CloudTrail journaux et autres sorties.
L'exemple d'instruction de politique de clé suivant utilise la clé de condition kms:GrantConstraintType
pour autoriser les utilisateurs à créer des octrois uniquement lorsque la demande inclut une contrainte d'octroi EncryptionContextEquals
. L'exemple suivant montre une instruction de politique dans une politique de clé.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:GrantConstraintType": "EncryptionContextEquals" } } }
Voir aussi
km : GrantIsFor AWSResource
AWS KMS clés de condition | Type de condition | Type de la valeur | APIopérations | Type de stratégie |
---|---|---|---|---|
|
Booléen |
À valeur unique |
|
Stratégies de clé et stratégies IAM |
Autorise ou refuse l'autorisation pour les RevokeGrantopérations CreateGrantListGrants, ou uniquement lorsqu'un AWS service intégré AWS KMS
L'exemple suivant d'instruction de politique de clé utilise la clé de condition kms:GrantIsForAWSResource
. Il permet aux AWS services intégrés AWS KMS, tels qu'AmazonEBS, de créer des subventions sur cette KMS clé au nom du principal spécifié.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } }
Voir aussi
km : GrantOperations
AWS KMS clés de condition | Type de condition | Type de la valeur | APIopérations | Type de stratégie |
---|---|---|---|---|
|
Chaîne |
Multi-valeurs |
|
Stratégies de clé et stratégies IAM |
Vous pouvez utiliser cette clé de condition pour contrôler l'accès à l'CreateGrantopération en fonction des opérations d'autorisation figurant dans la demande. Par exemple, vous pouvez autoriser les utilisateurs à créer des octrois qui délèguent l'autorisation de chiffrer mais pas de déchiffrer. Pour plus d'informations sur les octrois, veuillez consulter Utilisation d'octrois.
Il s'agit d'une clé de condition multi-valeurs. kms:GrantOperations
compare l'ensemble d'opérations d'octrois dans la demande CreateGrant
à l'ensemble d'opérations d'octrois dans la politique. Pour déterminer comment ces ensembles sont comparés, vous devez fournir un opérateur d'ensemble ForAnyValue
ou ForAllValues
dans la condition de politique. Pour plus de détails sur les opérateurs définis, reportez-vous à la section Utilisation de plusieurs clés et valeurs dans le Guide de IAM l'utilisateur.
-
ForAnyValue
: au moins une opération d'octroi dans la demande doit correspondre à l'une des opérations d'octrois dans la condition de politique. D'autres opérations d'octrois sont autorisées. -
ForAllValues: Chaque opération de subvention figurant dans la demande doit correspondre à une opération de subvention figurant dans la condition de politique. Cet opérateur d'ensemble limite les opérations d'octrois à celles spécifiées dans la condition de politique. Il ne nécessite aucune opération d'octroi, mais il interdit les opérations d'octrois non spécifiées.
ForAllValues renvoie également true lorsqu'il n'y a aucune opération de subvention dans la demande, mais
CreateGrant
ne l'autorise pas. Si le paramètreOperations
manque ou qu'il a une valeur nulle, la demandeCreateGrant
échoue.
L'exemple d'instruction de politique de clé suivant utilise la clé de condition kms:GrantOperations
pour créer des octrois uniquement lorsque les opérations d'octrois sont Encrypt
, ReEncryptTo
ou les deux. Si l'octroi inclut toute autre opération, la demande CreateGrant
échoue.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Encrypt", "ReEncryptTo" ] } } }
Si vous changez l'opérateur d'ensemble dans la condition de politique en ForAnyValue
, l'instruction de politique exigerait qu'au moins une des opérations d'octrois dans l'octroi soit Encrypt
ou ReEncryptTo
, mais elle autoriserait d'autres opérations d'octrois, telles que Decrypt
ou ReEncryptFrom
.
Voir aussi
km : GranteePrincipal
AWS KMS clés de condition | Type de condition | Type de la valeur | APIopérations | Type de stratégie |
---|---|---|---|---|
|
Chaîne |
À valeur unique |
|
IAM et stratégies de clé |
Vous pouvez utiliser cette clé de condition pour contrôler l'accès à l'CreateGrantopération en fonction de la valeur du GranteePrincipalparamètre dans la demande. Par exemple, vous pouvez créer des subventions pour utiliser une KMS clé uniquement lorsque le principal du bénéficiaire indiqué dans la CreateGrant
demande correspond au principal spécifié dans la déclaration de condition.
Pour spécifier le principal du bénéficiaire, utilisez le Amazon Resource Name (ARN) d'un AWS principal. Les principes valides incluent les IAM utilisateurs Comptes AWS, les IAM rôles, les utilisateurs fédérés et les utilisateurs des rôles assumés. Pour obtenir de l'aide sur la ARN syntaxe d'un principal, consultez IAMARNsle guide de IAM l'utilisateur.
L'exemple de déclaration de politique clé suivant utilise la clé de kms:GranteePrincipal
condition pour créer des subventions pour une KMS clé uniquement lorsque le principal titulaire de la subvention est leLimitedAdminRole
.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:GranteePrincipal": "arn:aws:iam::111122223333:role/LimitedAdminRole" } } }
Voir aussi
km : KeyAgreementAlgorithm
AWS KMS clés de condition | Type de condition | Type de la valeur | APIopérations | Type de stratégie |
---|---|---|---|---|
|
Chaîne |
À valeur unique |
|
Stratégies de clé et stratégies IAM |
Vous pouvez utiliser la clé de kms:KeyAgreementAlgorithm
condition pour contrôler l'accès à l'DeriveSharedSecretopération en fonction de la valeur du KeyAgreementAlgorithm
paramètre dans la demande. La seule valeur valide pour KeyAgreementAlgorithm
estECDH
.
Par exemple, la déclaration de politique clé suivante utilise la clé de kms:KeyAgreementAlgorithm
condition pour refuser tout accès à DeriveSharedSecret moins que ce ne KeyAgreementAlgorithm
soit le casECDH
.
{ "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:DeriveSharedSecret", "Resource": "*", "Condition": { "StringNotEquals": { "kms:KeyAgreementAlgorithm": "ECDH" } } }
Voir aussi
km : KeyOrigin
AWS KMS clés de condition | Type de condition | Type de la valeur | APIopérations | Type de stratégie |
---|---|---|---|---|
|
Chaîne |
À valeur unique |
KMSopérations liées aux ressources clés |
IAMpolitiques Stratégies de clé et stratégies IAM |
La clé de kms:KeyOrigin
condition contrôle l'accès aux opérations en fonction de la valeur de la Origin
propriété de la KMS clé créée ou utilisée dans l'opération. Elle fonctionne comme une condition de ressource ou une condition de demande.
Vous pouvez utiliser cette clé de condition pour contrôler l'accès à l'CreateKeyopération en fonction de la valeur du paramètre Origin dans la demande. Les valeurs valides pour Origin
sont AWS_KMS
, AWS_CLOUDHSM
et EXTERNAL
.
Par exemple, vous pouvez créer une KMS clé uniquement lorsque le matériau clé est généré dans AWS KMS (AWS_KMS
), uniquement lorsque le matériau clé est généré dans un AWS CloudHSM cluster associé à un magasin de clés personnalisé (AWS_CLOUDHSM
), ou uniquement lorsque le matériau clé est importé d'une source externe (EXTERNAL
).
L'exemple de déclaration de politique clé suivant utilise la clé de kms:KeyOrigin
condition pour créer une KMS clé uniquement lors de la AWS KMS création du matériel clé.
{ "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" } } } ] }
Vous pouvez également utiliser la clé de kms:KeyOrigin
condition pour contrôler l'accès aux opérations qui utilisent ou gèrent une KMS clé en fonction de la Origin
propriété de la KMS clé utilisée pour l'opération. L'opération doit être une opération sur une ressource KMS clé, c'est-à-dire une opération autorisée pour une KMS clé particulière. Pour identifier les KMS principales opérations liées aux ressources, dans le tableau Actions et ressources, recherchez la valeur de KMS key
dans la Resources
colonne correspondant à l'opération.
Par exemple, la IAM politique suivante permet aux principaux d'effectuer les opérations sur les ressources KMS clés spécifiées, mais uniquement avec KMS les clés du compte créées dans un magasin de clés personnalisé.
{ "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" } } }
Voir aussi
km : KeySpec
AWS KMS clés de condition | Type de condition | Type de la valeur | APIopérations | Type de stratégie |
---|---|---|---|---|
|
Chaîne |
À valeur unique |
KMSopérations liées aux ressources clés |
IAMpolitiques Stratégies de clé et stratégies IAM |
La clé de kms:KeySpec
condition contrôle l'accès aux opérations en fonction de la valeur de la KeySpec
propriété de la KMS clé créée ou utilisée dans l'opération.
Vous pouvez utiliser cette clé de condition dans une IAM politique pour contrôler l'accès à l'CreateKeyopération en fonction de la valeur du KeySpecparamètre dans une CreateKey
demande. Par exemple, vous pouvez utiliser cette condition pour autoriser les utilisateurs à créer uniquement des KMS clés de chiffrement symétriques ou uniquement des HMAC KMS clés.
L'exemple de déclaration IAM de politique suivant utilise la clé de kms:KeySpec
condition pour permettre aux principaux de créer uniquement des clés RSA asymétriquesKMS. L'autorisation n'est valide que lorsque la valeur KeySpec
dans la demande commence par RSA_
.
{ "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringLike": { "kms:KeySpec": "RSA_*" } } }
Vous pouvez également utiliser la clé de kms:KeySpec
condition pour contrôler l'accès aux opérations qui utilisent ou gèrent une KMS clé en fonction de la KeySpec
propriété de la KMS clé utilisée pour l'opération. L'opération doit être une opération sur une ressource KMS clé, c'est-à-dire une opération autorisée pour une KMS clé particulière. Pour identifier les KMS principales opérations liées aux ressources, dans le tableau Actions et ressources, recherchez la valeur de KMS key
dans la Resources
colonne correspondant à l'opération.
Par exemple, la IAM politique suivante permet aux principaux d'effectuer les opérations sur les ressources KMS clés spécifiées, mais uniquement avec des KMS clés de chiffrement symétriques dans le compte.
{ "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" } } }
Voir aussi
km : KeyUsage
AWS KMS clés de condition | Type de condition | Type de la valeur | APIopérations | Type de stratégie |
---|---|---|---|---|
|
Chaîne |
À valeur unique |
KMSopérations liées aux ressources clés |
IAMpolitiques Stratégies de clé et stratégies IAM |
La clé de kms:KeyUsage
condition contrôle l'accès aux opérations en fonction de la valeur de la KeyUsage
propriété de la KMS clé créée ou utilisée dans l'opération.
Vous pouvez utiliser cette clé de condition pour contrôler l'accès à l'CreateKeyopération en fonction de la valeur du KeyUsageparamètre dans la demande. Les valeurs valides pour KeyUsage
sont ENCRYPT_DECRYPT
SIGN_VERIFY
,GENERATE_VERIFY_MAC
, etKEY_AGREEMENT
.
Par exemple, vous pouvez créer une KMS clé uniquement lorsque KeyUsage
c'est le cas ENCRYPT_DECRYPT
ou refuser l'autorisation à un utilisateur lorsque KeyUsage
c'est le casSIGN_VERIFY
.
L'exemple de déclaration IAM de politique suivant utilise la clé de kms:KeyUsage
condition pour créer une KMS clé uniquement lorsque KeyUsage
c'est le casENCRYPT_DECRYPT
.
{ "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringEquals": { "kms:KeyUsage": "ENCRYPT_DECRYPT" } } }
Vous pouvez également utiliser la clé de kms:KeyUsage
condition pour contrôler l'accès aux opérations qui utilisent ou gèrent une KMS clé en fonction de la KeyUsage
propriété de la KMS clé dans l'opération. L'opération doit être une opération sur une ressource KMS clé, c'est-à-dire une opération autorisée pour une KMS clé particulière. Pour identifier les KMS principales opérations liées aux ressources, dans le tableau Actions et ressources, recherchez la valeur de KMS key
dans la Resources
colonne correspondant à l'opération.
Par exemple, la IAM politique suivante permet aux principaux d'effectuer les opérations sur les ressources KMS clés spécifiées, mais uniquement avec KMS les clés du compte utilisées pour la signature et la vérification.
{ "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" } } }
Voir aussi
km : MacAlgorithm
AWS KMS clés de condition | Type de condition | Type de la valeur | APIopérations | Type de stratégie |
---|---|---|---|---|
|
Chaîne |
À valeur unique |
|
Stratégies de clé et stratégies IAM |
Vous pouvez utiliser la clé de kms:MacAlgorithm
condition pour contrôler l'accès aux VerifyMacopérations GenerateMacet en fonction de la valeur du MacAlgorithm
paramètre dans la demande.
L'exemple de politique de clé suivant permet aux utilisateurs qui peuvent assumer le testers
rôle d'utiliser la HMAC KMS clé pour générer et vérifier des HMAC balises uniquement lorsque l'MACalgorithme de la demande est HMAC_SHA_384
ouHMAC_SHA_512
. Cette politique utilise deux instructions de politique distinctes ayant chacune leur propre condition. Si vous spécifiez plusieurs MAC algorithmes dans une seule instruction de condition, la condition requiert les deux algorithmes, au lieu de l'un ou l'autre.
{ "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" } } } ] }
Voir aussi
km : MessageType
AWS KMS clés de condition | Type de condition | Type de la valeur | APIopérations | Type de stratégie |
---|---|---|---|---|
|
Chaîne |
À valeur unique |
|
Stratégies de clé et stratégies IAM |
La clé de condition kms:MessageType
contrôle l'accès aux opérations Sign et Verify en fonction de la valeur du paramètre MessageType
de la demande. Les valeurs valides pour MessageType
sont RAW
et DIGEST
.
Par exemple, la déclaration de politique clé suivante utilise la clé de kms:MessageType
condition pour utiliser une KMS clé asymétrique afin de signer un message, mais pas un résumé de message.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:Sign", "Resource": "*", "Condition": { "StringEquals": { "kms:MessageType": "RAW" } } }
Voir aussi
km : MultiRegion
AWS KMS clés de condition | Type de condition | Type de la valeur | APIopérations | Type de stratégie |
---|---|---|---|---|
|
Booléen |
À valeur unique |
KMSopérations liées aux ressources clés |
Stratégies de clé et stratégies IAM |
Vous pouvez utiliser cette clé de condition pour autoriser les opérations uniquement sur des clés à région unique ou uniquement sur des clés multi-région. La clé de kms:MultiRegion
condition contrôle l'accès aux AWS KMS opérations sur KMS les clés et à l'CreateKeyopération en fonction de la valeur de la MultiRegion
propriété de la KMS clé. Les valeurs valides sont true
(multi-région) et false
(région unique). Toutes les KMS clés ont une MultiRegion
propriété.
Par exemple, la déclaration de IAM politique suivante utilise la clé de kms:MultiRegion
condition pour permettre aux principaux de créer uniquement des clés à région unique.
{ "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "Bool": { "kms:MultiRegion": false } } }
km : MultiRegionKeyType
AWS KMS clés de condition | Type de condition | Type de la valeur | APIopérations | Type de stratégie |
---|---|---|---|---|
|
Chaîne |
À valeur unique |
KMSopérations liées aux ressources clés |
Stratégies de clé et stratégies IAM |
Vous pouvez utiliser cette clé de condition pour autoriser les opérations uniquement sur des clés primaires multi-région ou uniquement sur des clés de réplica multi-région. La clé de kms:MultiRegionKeyType
condition contrôle l'accès aux AWS KMS opérations sur KMS les clés et l'CreateKeyopération en fonction de la MultiRegionKeyType
propriété de la KMS clé. Les valeurs valides sont PRIMARY
et REPLICA
. Seules les clés multi-région ont une propriété MultiRegionKeyType
.
Généralement, vous utilisez la clé de kms:MultiRegionKeyType
condition dans une IAM politique pour contrôler l'accès à plusieurs KMS clés. Toutefois, comme une clé multi-région donnée peut se changer en primaire ou en réplica, vous devrez peut-être utiliser cette condition dans une politique de clé pour autoriser une opération uniquement lorsque la clé multi-région particulière est une clé primaire ou réplica.
Par exemple, la déclaration de IAM politique suivante utilise la clé de kms:MultiRegionKeyType
condition pour permettre aux principaux de planifier et d'annuler la suppression de clés uniquement sur les répliques de clés multirégionales spécifiées. Compte AWS
{ "Effect": "Allow", "Action": [ "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "arn:aws:kms:*:111122223333:key/*", "Condition": { "StringEquals": { "kms:MultiRegionKeyType": "REPLICA" } } }
Pour autoriser ou refuser l'accès à toutes les clés multi-région, vous pouvez utiliser les deux valeurs ou une valeur nulle avec kms:MultiRegionKeyType
. Cependant, la clé de MultiRegion condition kms : est recommandée à cette fin.
km : PrimaryRegion
AWS KMS clés de condition | Type de condition | Type de la valeur | APIopérations | Type de stratégie |
---|---|---|---|---|
|
Chaîne (liste) |
À valeur unique |
|
Stratégies de clé et stratégies IAM |
Vous pouvez utiliser cette clé de condition pour limiter les régions de destination dans une UpdatePrimaryRegionopération. Ce sont eux Régions AWS qui peuvent héberger vos clés primaires multirégionales.
La touche de kms:PrimaryRegion
condition contrôle l'accès à l'UpdatePrimaryRegionopération en fonction de la valeur du PrimaryRegion
paramètre. Le PrimaryRegion
paramètre spécifie la clé Région AWS de réplique multirégionale qui est promue au rang de clé principale. La valeur de la condition est un ou plusieurs Région AWS noms, tels que us-east-1
ouap-southeast-2
, ou des modèles de noms de région, tels que eu-*
Par exemple, l'instruction de politique de clé suivante utilise la clé de condition kms:PrimaryRegion
afin de permettre aux principaux de mettre à jour la région primaire d'une clé multi-région vers une des quatre régions spécifiées.
{ "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" ] } } }
km : ReEncryptOnSameKey
AWS KMS clés de condition | Type de condition | Type de la valeur | APIopérations | Type de stratégie |
---|---|---|---|---|
|
Booléen |
À valeur unique |
|
Stratégies de clé et stratégies IAM |
Vous pouvez utiliser cette clé de condition pour contrôler l'accès à l'ReEncryptopération selon que la demande spécifie ou non une KMS clé de destination identique à celle utilisée pour le chiffrement d'origine.
Par exemple, la déclaration de politique de clé suivante utilise la clé de kms:ReEncryptOnSameKey
condition to pour rechiffrer uniquement lorsque la KMS clé de destination est la même que celle utilisée pour le chiffrement d'origine.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:ReEncrypt*", "Resource": "*", "Condition": { "Bool": { "kms:ReEncryptOnSameKey": true } } }
km : RequestAlias
AWS KMS clés de condition | Type de condition | Type de la valeur | APIopérations | Type de stratégie |
---|---|---|---|---|
|
Chaîne (liste) |
À valeur unique |
Stratégies de clé et stratégies IAM |
Vous pouvez utiliser cette clé de condition pour autoriser une opération uniquement lorsque la demande utilise un alias particulier pour identifier la KMS clé. La clé de kms:RequestAlias
condition contrôle l'accès à une KMS clé utilisée dans une opération cryptographique ou en DescribeKey
fonction de l'alias identifiant cette KMS clé dans la demande. GetPublicKey
(Cette condition de politique n'a aucun effet sur l'GenerateRandomopération car celle-ci n'utilise ni KMS clé ni alias.)
Cette condition prend en charge le contrôle d'accès basé sur les attributs (ABAC) dans AWS KMS, qui vous permet de contrôler l'accès aux KMS clés en fonction des balises et des alias d'une clé. KMS Vous pouvez utiliser des balises et des alias pour autoriser ou refuser l'accès à une KMS clé sans modifier les politiques ou les autorisations. Pour plus de détails, consultez ABACpour AWS KMS.
Pour spécifier l'alias dans cette condition de politique, utilisez un nom d'alias, tel que alias/project-alpha
, ou un modèle de nom d'alias, tel que alias/*test*
. Vous ne pouvez pas spécifier d'alias ARN dans la valeur de cette clé de condition.
Pour satisfaire à cette condition, la valeur du KeyId
paramètre dans la demande doit être un nom d'alias ou un alias correspondantARN. Si la demande utilise un identifiant de clé différent, elle ne satisfait pas à la condition, même si elle identifie la même KMS clé.
Par exemple, la déclaration de politique clé suivante permet au principal d'appeler l'GenerateDataKeyopération sur la KMS clé. Toutefois, cela n'est autorisé que lorsque la valeur du KeyId
paramètre dans la demande est alias/finance-key
ou un alias ARN portant ce nom d'alias, tel quearn: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" } } }
Vous ne pouvez pas utiliser cette clé de condition pour contrôler l'accès aux opérations d'alias, telles que CreateAliasou DeleteAlias. Pour de plus amples informations sur le contrôle de l'accès aux opérations d'alias, veuillez consulter Contrôle de l'accès aux alias.
km : ResourceAliases
AWS KMS clés de condition | Type de condition | Type de la valeur | APIopérations | Type de stratégie |
---|---|---|---|---|
|
Chaîne (liste) |
Multi-valeurs | KMSopérations liées aux ressources clés |
Stratégies IAM uniquement |
Utilisez cette clé de condition pour contrôler l'accès à une KMS clé en fonction des alias associés à la KMS clé. L'opération doit être une opération sur une ressource KMS clé, c'est-à-dire une opération autorisée pour une KMS clé particulière. Pour identifier les KMS principales opérations liées aux ressources, dans le tableau Actions et ressources, recherchez la valeur de KMS key
dans la Resources
colonne correspondant à l'opération.
Cette condition prend en charge le contrôle d'accès basé sur les attributs (ABAC) dans. AWS KMS AvecABAC, vous pouvez contrôler l'accès aux KMS clés en fonction des balises attribuées à une KMS clé et des alias associés à une KMS clé. Vous pouvez utiliser des balises et des alias pour autoriser ou refuser l'accès à une KMS clé sans modifier les politiques ou les autorisations. Pour plus de détails, consultez ABACpour AWS KMS.
Un alias doit être unique dans une région Compte AWS et, mais cette condition vous permet de contrôler l'accès à plusieurs KMS clés dans la même région (à l'aide de l'opérateur de StringLike
comparaison) ou à plusieurs KMS clés différentes Régions AWS de chaque compte.
Note
La ResourceAliases condition kms : n'est effective que lorsque la KMS clé est conforme aux alias par quota de KMS clé. Si une KMS clé dépasse ce quota, les principaux autorisés à utiliser la KMS clé conformément à cette kms:ResourceAliases
condition se voient refuser l'accès à la KMS clé.
Pour spécifier l'alias dans cette condition de politique, utilisez un nom d'alias, tel que alias/project-alpha
, ou un modèle de nom d'alias, tel que alias/*test*
. Vous ne pouvez pas spécifier d'alias ARN dans la valeur de cette clé de condition. Pour satisfaire cette condition, la KMS clé utilisée dans l'opération doit avoir l'alias spécifié. Peu importe si ou comment la KMS clé est identifiée dans la demande d'opération.
Il s'agit d'une clé de condition à valeurs multiples qui compare l'ensemble d'alias associé à une KMS clé à l'ensemble d'alias de la politique. Pour déterminer comment ces ensembles sont comparés, vous devez fournir un opérateur d'ensemble ForAnyValue
ou ForAllValues
dans la condition de politique. Pour plus de détails sur les opérateurs définis, reportez-vous à la section Utilisation de plusieurs clés et valeurs dans le Guide de IAM l'utilisateur.
-
ForAnyValue: Au moins un alias associé à la KMS clé doit correspondre à un alias figurant dans la condition de politique. D'autres alias sont autorisés. Si la KMS clé n'a pas d'alias, la condition n'est pas satisfaite.
-
ForAllValues: Chaque alias associé à la KMS clé doit correspondre à un alias indiqué dans la politique. Cet opérateur d'ensemble limite les alias associés à la KMS clé à ceux correspondant à la condition de politique. Il ne nécessite aucun alias, mais il interdit les alias non spécifiés.
Par exemple, l'instruction de IAM politique suivante permet au principal d'appeler l'GenerateDataKeyopération sur n'importe quelle KMS touche associée à l'finance-key
alias dans le champ spécifié Compte AWS . (Les politiques relatives aux KMS clés concernées doivent également autoriser le compte du principal à les utiliser pour cette opération.) Pour indiquer que la condition est satisfaite lorsque l'un des nombreux alias susceptibles d'être associés à la KMS clé l'estalias/finance-key
, la condition utilise l'opérateur ForAnyValue
set.
Étant donné que la kms:ResourceAliases
condition est basée sur la ressource et non sur la demande, un appel à est GenerateDataKey
réussi pour toute KMS clé associée à l'finance-key
alias, même si la demande utilise un identifiant de clé ou une clé ARN pour identifier la KMS clé.
{ "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" } } }
L'exemple de déclaration IAM de politique suivant permet au principal d'activer et de désactiver les KMS clés, mais uniquement lorsque tous les alias des KMS clés incluent « »Test
. La présente déclaration de politique repose sur deux conditions. La condition associée à l'opérateur ForAllValues
set exige que tous les alias associés à la KMS clé incluent « Test ». La condition associée à l'opérateur ForAnyValue
set nécessite que la KMS clé possède au moins un alias avec « Test ». Sans cette ForAnyValue
condition, cette déclaration de politique aurait autorisé le principal à utiliser KMS des clés sans alias.
{ "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*" ] } } }
km : ReplicaRegion
AWS KMS clés de condition | Type de condition | Type de la valeur | APIopérations | Type de stratégie |
---|---|---|---|---|
|
Chaîne (liste) |
À valeur unique |
|
Stratégies de clé et stratégies IAM |
Vous pouvez utiliser cette clé de condition pour limiter la Régions AWS capacité d'un principal à répliquer une clé multirégionale. La clé de kms:ReplicaRegion
condition contrôle l'accès à l'ReplicateKeyopération en fonction de la valeur du ReplicaRegionparamètre dans la demande. Ce paramètre spécifie la Région AWS
pour la nouvelle clé de réplica.
La valeur de la condition est un ou plusieurs Région AWS noms, tels que us-east-1
ouap-southeast-2
, ou des modèles de noms, tels queeu-*
. Pour obtenir la liste des noms de Régions AWS ces AWS KMS supports, consultez la section AWS Key Management Service Points de terminaison et quotas dans le Références générales AWS.
Par exemple, la déclaration de politique clé suivante utilise la clé de kms:ReplicaRegion
condition pour permettre aux principaux d'appeler l'ReplicateKeyopération uniquement lorsque la valeur du ReplicaRegion
paramètre est l'une des régions spécifiées.
{ "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" ] } } }
Cette clé de condition contrôle uniquement l'accès à l'ReplicateKeyopération. Pour contrôler l'accès à l'UpdatePrimaryRegionopération, utilisez la clé de PrimaryRegion condition kms :.
km : RetiringPrincipal
AWS KMS clés de condition | Type de condition | Type de la valeur | APIopérations | Type de stratégie |
---|---|---|---|---|
|
Chaîne (liste) |
À valeur unique |
|
Stratégies de clé et stratégies IAM |
Vous pouvez utiliser cette clé de condition pour contrôler l'accès à l'CreateGrantopération en fonction de la valeur du RetiringPrincipalparamètre dans la demande. Par exemple, vous pouvez créer des autorisations pour utiliser une KMS clé uniquement lorsque le RetiringPrincipal
contenu de la CreateGrant
demande correspond RetiringPrincipal
à celui de l'instruction de condition.
Pour spécifier le principal sortant, utilisez le nom de ressource Amazon (ARN) d'un AWS principal. Les principes valides incluent les IAM utilisateurs Comptes AWS, les IAM rôles, les utilisateurs fédérés et les utilisateurs des rôles assumés. Pour obtenir de l'aide sur la ARN syntaxe d'un principal, consultez IAMARNsle guide de IAM l'utilisateur.
L'exemple de déclaration de politique clé suivant permet à un utilisateur de créer des autorisations pour la KMS clé. La clé de kms:RetiringPrincipal
condition restreint l'autorisation aux CreateGrant
demandes pour lesquelles le principal sortant de la subvention est le. 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" } } }
Voir aussi
km : RotationPeriodInDays
AWS KMS clés de condition | Type de condition | Type de la valeur | APIopérations | Type de stratégie |
---|---|---|---|---|
|
Numérique |
À valeur unique |
|
Stratégies de clé et stratégies IAM |
Vous pouvez utiliser cette clé de condition pour limiter les valeurs que les principaux peuvent spécifier dans le RotationPeriodInDays
paramètre d'une EnableKeyRotationdemande.
RotationPeriodInDays
Spécifie le nombre de jours entre chaque date de rotation automatique des clés. AWS KMS vous permet de spécifier une période de rotation comprise entre 90 et 2560 jours, mais vous pouvez utiliser la clé de kms:RotationPeriodInDays
condition pour restreindre davantage la période de rotation, par exemple en imposant une période de rotation minimale dans la plage valide.
Par exemple, la déclaration de politique clé suivante utilise la clé de kms:RotationPeriodInDays
condition pour empêcher les directeurs d'activer la rotation des clés si la période de rotation est inférieure ou égale à 180 jours.
{ "Effect": "Deny", "Action": "kms:EnableKeyRotation", "Principal": "*", "Resource": "*", "Condition" : { "NumericLessThanEquals" : { "kms:RotationPeriodInDays" : "180" } } }
km : ScheduleKeyDeletionPendingWindowInDays
AWS KMS clés de condition | Type de condition | Type de la valeur | APIopérations | Type de stratégie |
---|---|---|---|---|
|
Numérique |
À valeur unique |
|
Stratégies de clé et stratégies IAM |
Vous pouvez utiliser cette clé de condition pour limiter les valeurs que les principaux peuvent spécifier dans le PendingWindowInDays
paramètre d'une ScheduleKeyDeletiondemande.
PendingWindowInDays
Spécifie le nombre de jours à AWS KMS attendre avant de supprimer une clé. AWS KMS vous permet de spécifier une période d'attente comprise entre 7 et 30 jours, mais vous pouvez utiliser la clé de kms:ScheduleKeyDeletionPendingWindowInDays
condition pour limiter davantage la période d'attente, par exemple en imposant une période d'attente minimale comprise dans la plage valide.
Par exemple, l'instruction de politique de clé suivante utilise la clé de condition kms:ScheduleKeyDeletionPendingWindowInDays
pour empêcher les principaux de planifier la suppression des clés si le délai d'attente est inférieur ou égal à 21 jours.
{ "Effect": "Deny", "Action": "kms:ScheduleKeyDeletion", "Principal": "*", "Resource": "*", "Condition" : { "NumericLessThanEquals" : { "kms:ScheduleKeyDeletionPendingWindowInDays" : "21" } } }
km : SigningAlgorithm
AWS KMS clés de condition | Type de condition | Type de la valeur | APIopérations | Type de stratégie |
---|---|---|---|---|
|
Chaîne |
À valeur unique |
|
Stratégies de clé et stratégies IAM |
Vous pouvez utiliser la clé de kms:SigningAlgorithm
condition pour contrôler l'accès aux opérations de signature et de vérification en fonction de la valeur du SigningAlgorithmparamètre dans la demande. Cette clé de condition n'a aucun effet sur les opérations effectuées en dehors de AWS KMS, telles que la vérification des signatures avec la clé publique dans une paire de KMS clés asymétrique en dehors de AWS KMS.
L'exemple de politique clé suivant permet aux utilisateurs qui peuvent assumer le testers
rôle d'utiliser la KMS clé pour signer des messages uniquement lorsque l'algorithme de signature utilisé pour la demande est un PSS algorithme RSASSA _, tel queRSASSA_PSS_SHA512
.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/testers" }, "Action": "kms:Sign", "Resource": "*", "Condition": { "StringLike": { "kms:SigningAlgorithm": "RSASSA_PSS*" } } }
Voir aussi
km : ValidTo
AWS KMS clés de condition | Type de condition | Type de la valeur | APIopérations | Type de stratégie |
---|---|---|---|---|
|
Horodatage |
À valeur unique |
|
Stratégies de clé et stratégies IAM |
La clé de kms:ValidTo
condition contrôle l'accès à l'ImportKeyMaterialopération en fonction de la valeur du ValidToparamètre dans la demande, qui détermine la date d'expiration du matériel clé importé. La valeur est exprimée en heure Unix
Par défaut, le paramètre ValidTo
est obligatoire dans une demande ImportKeyMaterial
. Toutefois, si la valeur du ExpirationModelparamètre estKEY_MATERIAL_DOES_NOT_EXPIRE
, le ValidTo
paramètre n'est pas valide. Vous pouvez également utiliser la clé de ExpirationModel condition kms : pour demander le ExpirationModel
paramètre ou une valeur de paramètre spécifique.
L'exemple de déclaration de politique suivant permet à un utilisateur d'importer des éléments clés dans une KMS clé. La clé de condition kms:ValidTo
limite l'autorisation aux requêtes ImportKeyMaterial
où la valeur ValidTo
est inférieure ou égale à 1546257599.0
(31 décembre 2018 11:59:59 PM).
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:ImportKeyMaterial", "Resource": "*", "Condition": { "NumericLessThanEquals": { "kms:ValidTo": "1546257599.0" } } }
Voir aussi
km : ViaService
AWS KMS clés de condition | Type de condition | Type de la valeur | APIopérations | Type de stratégie |
---|---|---|---|---|
|
Chaîne |
À valeur unique |
KMSopérations liées aux ressources clés |
Stratégies de clé et stratégies IAM |
La clé de kms:ViaService
condition limite l'utilisation d'une KMS clé aux demandes émanant de AWS services spécifiques. Vous pouvez spécifier un ou plusieurs services dans chaque clé de condition kms:ViaService
. L'opération doit être une opération sur une ressource KMS clé, c'est-à-dire une opération autorisée pour une KMS clé particulière. Pour identifier les KMS principales opérations liées aux ressources, dans le tableau Actions et ressources, recherchez la valeur de KMS key
dans la Resources
colonne correspondant à l'opération.
Par exemple, la déclaration de politique clé suivante utilise la clé de kms:ViaService
condition pour autoriser l'utilisation d'une clé gérée par le client pour les actions spécifiées uniquement lorsque la demande provient d'Amazon EC2 ou d'Amazon RDS dans la région de l'ouest des États-Unis (Oregon) pour le compte deExampleRole
.
{ "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" ] } } }
Vous pouvez également utiliser une clé de kms:ViaService
condition pour refuser l'autorisation d'utiliser une KMS clé lorsque la demande provient de services particuliers. Par exemple, l'instruction suivante de politique d'une politique de clé utilise une clé de condition kms:ViaService
pour empêcher une clé gérée par le client d'être utilisée pour les opérations Encrypt
lorsque la demande provient de AWS Lambda au nom 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" ] } } }
Important
Lorsque vous utilisez la clé de condition kms:ViaService
, le service effectue la demande au nom d'un principal dans le Compte AWS. Ces principaux doivent disposer des autorisations suivantes :
-
Autorisation d'utiliser la KMS clé. Le principal doit accorder ces autorisations au service intégré pour que celui-ci puisse utiliser la clé gérée par le client au nom du principal. Pour de plus amples informations, veuillez consulter Utilisation du AWS KMS chiffrement avec les AWS services.
-
L'autorisation d'utiliser le service intégré. Pour en savoir plus sur l'accès des utilisateurs à un AWS service intégré AWS KMS, consultez la documentation du service intégré.
Toutes les Clés gérées par AWS utilisent une clé de condition kms:ViaService
dans leur document de politique de clé. Cette condition permet à la KMS clé d'être utilisée uniquement pour les demandes provenant du service qui a créé la KMS clé. Pour voir la politique clé d'un Clé gérée par AWS, utilisez l'GetKeyPolicyopération.
La clé de kms:ViaService
condition est valide dans IAM les principales déclarations de politique. Les services que vous spécifiez doivent être intégrés à AWS KMSkms:ViaService
.
Services prenant en charge la clé de condition kms:ViaService
Le tableau suivant répertorie les AWS services intégrés AWS KMS et prenant en charge l'utilisation de la clé de kms:ViaService
condition dans les clés gérées par le client. Les services de ce tableau peuvent ne pas être disponibles dans toutes les régions. Utilisez le .amazonaws.com
suffixe du AWS KMS ViaService nom dans toutes les AWS partitions.
Note
Il peut être nécessaire de faire défiler horizontalement ou verticalement pour afficher toutes les données de ce tableau.
Nom du service | AWS KMS ViaService nom |
---|---|
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. |
Passerelle AWS Backup | backup-gateway. |
Copie du modèle Amazon Bedrock | bedrock. |
Amazon Chime SDK | chimevoiceconnector. |
AWS Clean Rooms ML | cleanrooms-ml. |
AWS CodeArtifact | codeartifact. |
CodeGuru Réviseur Amazon | codeguru-reviewer. |
Amazon Comprehend | comprehend. |
Amazon Connect | connect. |
Profils des clients Amazon Connect | 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. |
Boutique Amazon Elastic Block (AmazonEBS) | ec2. (EBSuniquement) |
Amazon Elastic Container Registry (AmazonECR) | ecr. |
Amazon Elastic File System (AmazonEFS) | elasticfilesystem. |
Amazon ElastiCache |
Incluez les deux ViaService noms dans la valeur de la clé de condition :
|
AWS Elemental MediaTailor | mediatailor. |
AWS Résolution de l'entité | 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 (pour 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 Tests d'applications | apptest. |
Amazon Managed Blockchain | managedblockchain. |
Amazon Managed Streaming pour Apache Kafka (Amazon) MSK | kafka. |
Flux de travail gérés par Amazon pour Apache Airflow () MWAA | airflow. |
Amazon MemoryDB | memorydb. |
Amazon Monitron | monitron. |
Amazon MQ | mq. |
Amazon Neptune | rds. |
Amazon Nimble Studio | nimble. |
AWS HealthOmics | omics. |
Amazon OpenSearch Service | es. ,
aoss. |
AWS Proton | proton. |
Base de données Amazon Quantum Ledger (AmazonQLDB) | qldb. |
Amazon RDS Performance Insights | rds. |
Amazon Redshift | redshift. |
Ouvrez l'éditeur de requête V2 Amazon Redshift. | sqlworkbench. |
Amazon Redshift Serverless | redshift-serverless. |
Amazon Rekognition | rekognition. |
Amazon Relational Database Service (AmazonRDS) | rds. |
Stockage de données répliquées Amazon | ards. |
Amazon SageMaker | sagemaker. |
AWS Secrets Manager | secretsmanager. |
Amazon Security Lake | securitylake. |
Amazon Simple Email Service (AmazonSES) | ses. |
Service de notification simple d'Amazon (AmazonSNS) | sns. |
Service de file d'attente Amazon Simple (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 Contacts | ssm-contacts. |
Amazon Timestream | timestream. |
Amazon Translate | translate. |
Accès vérifié par AWS | verified-access. |
Amazon WorkMail | workmail. |
Amazon WorkSpaces | workspaces. |
Amazon WorkSpaces Thin Client | thinclient. |
WorkSpaces Site Web d'Amazon | workspaces-web. |
AWS X-Ray | xray. |
km : WrappingAlgorithm
AWS KMS clés de condition | Type de condition | Type de la valeur | APIopérations | Type de stratégie |
---|---|---|---|---|
|
Chaîne |
À valeur unique |
|
Stratégies de clé et stratégies IAM |
Cette clé de condition contrôle l'accès à l'GetParametersForImportopération en fonction de la valeur du WrappingAlgorithmparamètre dans la demande. Vous pouvez utiliser cette condition pour exiger des principaux qu'ils utilisent un algorithme particulier pour chiffrer des matériaux clé au cours du processus d'importation. Les demandes de clé publique requise et du jeton d'importation échouent lorsqu'un algorithme d'encapsulage est spécifié.
L'exemple d'instruction de politique de clé suivant utilise la clé de condition kms:WrappingAlgorithm
pour donner à l'utilisateur de l'exemple l'autorisation d'appeler l'opération GetParametersForImport
, mais l'empêche d'utiliser l'algorithme d'encapsulage RSAES_OAEP_SHA_1
. Lorsque WrappingAlgorithm
dans la requête GetParametersForImport
indique RSAES_OAEP_SHA_1
, l'opération échoue.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:GetParametersForImport", "Resource": "*", "Condition": { "StringNotEquals": { "kms:WrappingAlgorithm": "RSAES_OAEP_SHA_1" } } }
Voir aussi
km : WrappingKeySpec
AWS KMS clés de condition | Type de condition | Type de la valeur | APIopérations | Type de stratégie |
---|---|---|---|---|
|
Chaîne |
À valeur unique |
|
Stratégies de clé et stratégies IAM |
Cette clé de condition contrôle l'accès à l'GetParametersForImportopération en fonction de la valeur du WrappingKeySpecparamètre dans la demande. Vous pouvez utiliser cette condition pour exiger des principaux qu'ils utilisent un type particulier de clé publique au cours du processus d'importation. Si la requête spécifie un autre type de clé, elle échoue.
Étant donné que la seule valeur valide comme valeur du paramètre WrappingKeySpec
est RSA_2048
, les utilisateurs ne peuvent pas employer cette valeur de façon efficace, ce qui les empêche d'utiliser l'opération GetParametersForImport
.
L'exemple d'instruction de politique suivant utilise la clé de condition kms:WrappingAlgorithm
pour exiger que la valeur du paramètre WrappingKeySpec
de la demande soit RSA_4096
.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:GetParametersForImport", "Resource": "*", "Condition": { "StringEquals": { "kms:WrappingKeySpec": "RSA_4096" } } }
Voir aussi