AWS KMS clés de condition - AWS Key Management Service

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 clés et les politiques IAM. Ces clés de condition sont spécifiques à AWS KMS. Par exemple, vous pouvez utiliser la clé de condition kms:EncryptionContext:context-key pour exiger un contexte de chiffrement particulier lorsque vous contrôlez l'accès à une clé KMS de chiffrement symétrique.

Conditions pour une demande d'opération d'API

De nombreuses clés de AWS KMS condition contrôlent l'accès à une clé KMS 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 politique IAM 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'CreateKeyopé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 pour les clés KMS utilisées dans les opérations d'API

Certaines clés de AWS KMS condition peuvent contrôler l'accès aux opérations en fonction d'une propriété de la clé KMS utilisée dans l'opération. Par exemple, vous pouvez utiliser la KeyOrigin condition kms : pour autoriser les principaux à appeler GenerateDataKeyune clé KMS uniquement lorsque Origin la clé KMS 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 de ressource de clé KMS, c'est-à-dire une opération autorisée pour une clé KMS particulière. Pour identifier les opérations de ressources de clés KMS, dans la table Actions and Resources (Actions et ressources), recherchez la valeur de KMS key dans la colonne Resources de 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 clé KMS particulière, par exemple ListKeys, l'autorisation n'est pas effective car la condition ne peut jamais être satisfaite. Aucune ressource de clé KMS n'est impliquée dans l'autorisation de l'opération ListKeys ni aucune propriété KeySpec.

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. IAM définit deux opérateurs d'ensemble, ForAnyValue et ForAllValues, à 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 appel d'API 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 clé KMS 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 set avec les clés de contexte ou de aws:RequestTag/tag-key condition kms EncryptionContext : :, AWS KMS renvoie le message d'erreur suivant :

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 de plus amples informations sur les opérateurs d'ensemble ForAnyValue et ForAllValues, veuillez consulter Utilisation de plusieurs clés et valeurs dans le Guide de l'utilisateur IAM. 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'utilisateur IAM.

km : BypassPolicyLockoutSafetyCheck

AWS KMS clés de condition Type de condition Type de la valeur Opérations d’API Type de stratégie

kms:BypassPolicyLockoutSafetyCheck

Booléen

À valeur unique

CreateKey

PutKeyPolicy

Politiques IAM uniquement

Politiques de clé et politiques 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 d'instruction de politique IAM suivant empêche les utilisateurs de contourner le contrôle de sécurité du verrouillage de la politique en leur refusant l'autorisation de créer des clés KMS lorsque la valeur du paramètre BypassPolicyLockoutSafetyCheck dans la demande CreateKey est true..

{ "Effect": "Deny", "Action": [ "kms:CreateKey", "kms:PutKeyPolicy" ], "Resource": "*", "Condition": { "Bool": { "kms:BypassPolicyLockoutSafetyCheck": true } } }

Vous pouvez également utiliser la clé de condition kms:BypassPolicyLockoutSafetyCheck dans une politique IAM ou une politique de clé pour contrôler l'accès à l'opération PutKeyPolicy. L'exemple d'instruction de politique suivant dans une politique de clé empêche les utilisateurs de contourner le contrôle de sécurité du verrouillage de la politique lors de la modification de la politique d'une clé KMS.

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 Opérations d’API Type de stratégie

kms:CallerAccount

Chaîne

À valeur unique

Opérations liées aux ressources de clé KMS

Opérations liées au magasin de clés personnalisé

Politiques de clé et politiques 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 de clé KMS, c'est-à-dire toute AWS KMS opération utilisant une clé KMS particulière. Pour identifier les opérations de ressources de clés KMS, dans la table Actions and Resources (Actions et ressources), recherchez la valeur de KMS key dans la colonne Resources de 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'Amazon EBS. 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'Amazon EBS. 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 Opérations d’API Type de stratégie

kms:DataKeyPairSpec

Chaîne

À valeur unique

GenerateDataKeyPair

GenerateDataKeyPairWithoutPlaintext

Politiques de clé et politiques 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 suivant d'instruction de politique de clé utilise la clé de condition kms:DataKeyPairSpec pour autoriser les utilisateurs à utiliser la clé KMS afin de générer uniquement des paires de clés de données RSA.

{ "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 Opérations d’API Type de stratégie

kms:EncryptionAlgorithm

Chaîne

À valeur unique

Decrypt

Encrypt

GenerateDataKey

GenerateDataKeyPair

GenerateDataKeyPairWithoutPlaintext

GenerateDataKeyWithoutPlaintext

ReEncrypt

Politiques de clé et politiques 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 clés KMS asymétrique en dehors de. AWS KMS

EncryptionAlgorithm paramètre dans une demande

Pour autoriser les utilisateurs à utiliser uniquement un algorithme de chiffrement particulier avec une clé KMS, utilisez une instruction de politique avec un effet Deny et un opérateur de condition StringNotEquals. Par exemple, l'exemple suivant d'instruction de politique de clé interdit aux principaux pouvant endosser le rôle ExampleRole d'utiliser cette clé KMS dans les opérations de chiffrement spécifiées, sauf si l'algorithme de chiffrement de la demande est RSAES_OAEP_SHA_256. un algorithme de chiffrement asymétrique utilisé avec des clés KMS RSA.

Contrairement à une instruction de politique permettant à un utilisateur d'utiliser un algorithme de chiffrement particulier, une instruction de politique avec un double négatif comme celui-ci empêche les autres politiques et octrois associés à cette clé KMS d'autoriser ce rôle à utiliser d'autres algorithmes de chiffrement. Le paramètre Deny dans cette instruction de politique de clé prévaut sur toute politique de clé ou politique IAM ayant un effet Allow. Il prévaut également sur tous les octrois associés à cette clé KMS et à ses principaux.

{ "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 clés KMS de chiffrement symétriques et l'algorithme SYMMETRIC_DEFAULT.

Par exemple, cette politique IAM limite ses principaux au chiffrement symétrique. Elle interdit l'accès à toute clé KMS dans l'exemple de compte pour les opérations de chiffrement, 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 Opérations d’API Type de stratégie

kms:EncryptionContext:context-key

Chaîne

À valeur unique

CreateGrant

Encrypt

Decrypt

GenerateDataKey

GenerateDataKeyPair

GenerateDataKeyPairWithoutPlaintext

GenerateDataKeyWithoutPlaintext

ReEncrypt

Politiques de clé et politiques IAM

Vous pouvez utiliser la clé de condition kms:EncryptionContext:context-key pour contrôler l'accès à une clé KMS de chiffrement symétrique en fonction du contexte de chiffrement d'une demande d'opération de chiffrement. 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 clé de condition doivent respecter les règles de caractère pour les politiques de clé et les politiques IAM. 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 d'informations sur les règles du document de politique IAM, veuillez consulter Exigences relatives aux noms IAM dans le Guide de l'utilisateur IAM.

Vous ne pouvez pas spécifier de contexte de chiffrement dans une opération de chiffrement avec une clé KMS asymétrique ou une clé KMS HMAC. Les algorithmes asymétriques et les algorithmes MAC ne prennent pas en charge un contexte de chiffrement.

Pour utiliser la clé de condition kms : EncryptionContext : context-key, remplacez l'espace réservé à la clé contextuelle par la clé contextuelle de chiffrement. Remplacez l'espace réservé context-value par 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 contexte de chiffrement dans chaque demande d'API, la paire de contexte de chiffrement avec le paramètre context-key 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 contextuelle 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 d'instruction de politique de clé suivant autorise les principaux qui peuvent endosser le rôle à utiliser la clé KMS dans une demande GenerateDataKey, uniquement lorsque le contexte de chiffrement de la demande inclut la paire AppName:ExampleApp. 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, veuillez consulter 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 la clé de contexte kms EncryptionContext : : 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 d'ensemble ForAllValues, veuillez consulter Utilisation de plusieurs clés et valeurs dans le Guide de l'utilisateur IAM.

{ "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 clé KMS pour une opération particulière. L'exemple d'instruction de politique de clé suivant utilise un effet Deny pour interdire au principal d'utiliser la clé KMS si le contexte de chiffrement de la demande inclut une paire de contexte de chiffrement Stage=Restricted. 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, veuillez consulter Création d'une condition avec plusieurs clés ou valeurs dans le Guide de l'utilisateur IAM.

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 : : context-key. 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 contextuelle kms EncryptionContext : :. 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. Puisque les conditions ont des clés différentes (kms:EncryptionContext:Department et kms:EncryptionContext:Project), elles sont implicitement connectées par un opérateur AND. 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 la clé de contexte kms EncryptionContext : : et kms:EncryptionContextKeysdans la déclaration de politique. La déclaration de politique clé suivante utilise la condition de clé de contexte kms EncryptionContext : : 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 : : dans cette condition échouerait.

{ "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 d'instruction de politique de clé suivant utilise un effet Deny pour interdire au principal d'utiliser les clés KMS si le contexte de chiffrement de la demande inclut une paire Stage=Restricted ou Stage=Production.

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, veuillez consulter Logique d'évaluation pour les conditions avec plusieurs clés ou valeurs dans le Guide de l'utilisateur IAM.

{ "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.

À ce titre, la clé de condition, qui comprend le préfixe kms:EncryptionContext: et le remplacement context-key, n'est pas sensible à la casse. Une politique qui utilise cette condition ne vérifie pas la casse des éléments de la clé de condition. Le respect de la casse de la valeur, à savoir, le remplacement context-value, est déterminé par l'opérateur de condition de la politique.

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 distinguant 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 de clé de contexte kms EncryptionContext : :.

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" }

Toutefois, la valeur de la clé de condition kms:EncryptionContext:context-key peut être une variable de politique IAM. 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.

Prenons un exemple : vous voulez que tous les utilisateurs qui peuvent endosser un rôle utilisent la même clé KMS 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 instruction de politique accorde au rôle TestTeam l'autorisation de chiffrer et de déchiffrer les données avec la clé KMS. Toutefois, l'autorisation est uniquement valable lorsque le contexte de chiffrement de la demande inclut une paire "user": "<username>". Pour représenter le nom d'utilisateur, la condition utilise la variable de politique 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 pouvez utiliser une variable de politique IAM uniquement dans la valeur de la clé de condition kms:EncryptionContext:context-key. 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 plus de détails sur l'identification des utilisateurs et les rôles dans Amazon Cognito, veuillez consulter Rôles IAM dans le 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 Opérations d’API Type de stratégie

kms:EncryptionContextKeys

Chaîne (liste)

Multi-valeurs

CreateGrant

Decrypt

Encrypt

GenerateDataKey

GenerateDataKeyPair

GenerateDataKeyPairWithoutPlaintext

GenerateDataKeyWithoutPlaintext

ReEncrypt

Politiques de clé et politiques IAM

Vous pouvez utiliser la clé de condition kms:EncryptionContextKeys pour contrôler l'accès à une clé KMS de chiffrement symétrique en fonction du contexte de chiffrement d'une demande d'opération de chiffrement. 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 de chiffrement avec une clé KMS asymétrique ou une clé KMS HMAC. Les algorithmes asymétriques et les algorithmes MAC 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 d'informations sur les règles du document de politique IAM, veuillez consulter Exigences relatives aux noms IAM dans le Guide de l'utilisateur IAM.

Il s'agit d'une clé de condition multi-valeurs. Vous pouvez spécifier plusieurs paires de contexte de chiffrement dans chaque demande d'API. kms:EncryptionContextKeys compare les clés de contexte de chiffrement dans la demande à l'ensemble des clés de contexte de chiffrement 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'ensemble, veuillez consulter Utilisation de plusieurs clés et valeurs dans le Guide de l'utilisateur IAM.

  • 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 instruction de politique autorise l'utilisation d'une clé KMS pour les opérations spécifiées, mais uniquement si au moins une des paires de contexte de chiffrement de la demande inclut la clé AppName, peu importe 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 condition kms:EncryptionContextKeys pour exiger un contexte de chiffrement (tout contexte de chiffrement) dans les opérations de cryptographiques qui utilisent la clé KMS.

L'exemple d'instruction de politique de clé suivant utilise la clé de condition kms:EncryptionContextKeys avec l'opérateur de condition Null pour autoriser l'accès à une clé KMS uniquement lorsque le contexte de chiffrement de la demande d'API 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 Opérations d’API Type de stratégie

kms:ExpirationModel

Chaîne

À valeur unique

ImportKeyMaterial

Politiques de clé et politiques 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 d'instruction de politique suivant utilise la clé de condition kms:ExpirationModel pour autoriser les utilisateurs à importer les éléments de clé dans une clé KMS uniquement lorsque la demande inclut le paramètre ExpirationModel et que sa valeur est 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" } } }

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 Opérations d’API Type de stratégie

kms:GrantConstraintType

Chaîne

À valeur unique

CreateGrant

Politiques de clé et politiques 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 Opérations d’API Type de stratégie

kms:GrantIsForAWSResource

Booléen

À valeur unique

CreateGrant

ListGrants

RevokeGrant

Politiques de clé et politiques IAM

Autorise ou refuse l'autorisation pour les RevokeGrantopérations CreateGrantListGrants, ou uniquement lorsqu'un AWS service intégré AWS KMS appelle l'opération au nom de l'utilisateur. Cette condition de politique ne permet pas à l'utilisateur d'appeler ces opérations d'octroi directement.

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'Amazon EBS, de créer des subventions sur cette clé KMS 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 Opérations d’API Type de stratégie

kms:GrantOperations

Chaîne

Multi-valeurs

CreateGrant

Politiques de clé et politiques 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'ensemble, veuillez consulter Utilisation de plusieurs clés et valeurs dans le Guide de l'utilisateur IAM.

  • 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ètre Operations manque ou qu'il a une valeur nulle, la demande CreateGrant é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 Opérations d’API Type de stratégie

kms:GranteePrincipal

Chaîne

À valeur unique

CreateGrant

Politiques de clé et IAM

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 octrois pour utiliser une clé KMS uniquement lorsque le principal bénéficiaire de la demande CreateGrant correspond au principal spécifié dans l'instruction de condition.

Pour spécifier le principal du bénéficiaire, utilisez le Amazon Resource Name (ARN) d'un AWS principal. Les principaux valides incluent les utilisateurs IAM Comptes AWS, les rôles IAM, les utilisateurs fédérés et les utilisateurs des rôles assumés. Pour obtenir de l'aide sur la syntaxe ARN d'un principal, consultez la section ARN IAM dans le guide de l'utilisateur IAM.

L'exemple d'instruction de politique de clé suivant utilise la clé de condition kms:GranteePrincipal afin de créer des octrois pour une clé KMS uniquement lorsque le principal bénéficiaire de l'octroi est le 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" } } }

Voir aussi

km : KeyOrigin

AWS KMS clés de condition Type de condition Type de la valeur Opérations d’API Type de stratégie

kms:KeyOrigin

Chaîne

À valeur unique

CreateKey

Opérations liées aux ressources de clé KMS

Politiques IAM

Politiques de clé et politiques IAM

La clé de condition kms:KeyOrigin contrôle l'accès aux opérations en fonction de la valeur de la propriété Origin de la clé KMS créée par l'opération ou utilisée dans cette dernière. 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 clé KMS uniquement lorsque le contenu 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é depuis une source externe (EXTERNAL).

L'exemple de déclaration de politique clé suivant utilise la clé de kms:KeyOrigin condition pour créer une clé KMS 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 condition kms:KeyOrigin pour contrôler l'accès aux opérations qui utilisent ou gèrent une clé KMS en fonction de la propriété Origin de la clé KMS utilisée pour l'opération. L'opération doit être une opération de ressource de clé KMS, c'est-à-dire une opération autorisée pour une clé KMS particulière. Pour identifier les opérations de ressources de clés KMS, dans la table Actions and Resources (Actions et ressources), recherchez la valeur de KMS key dans la colonne Resources de l'opération.

Par exemple, la politique IAM suivante permet aux principaux d'effectuer les opérations de ressources de clé KMS spécifiées, mais uniquement avec les clés KMS du compte qui ont été 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 Opérations d’API Type de stratégie

kms:KeySpec

Chaîne

À valeur unique

CreateKey

Opérations liées aux ressources de clé KMS

Politiques IAM

Politiques de clé et politiques IAM

La clé de condition kms:KeySpec contrôle l'accès aux opérations en fonction de la valeur de la propriété KeySpec de la clé KMS créée par l'opération ou utilisée dans cette dernière.

Vous pouvez utiliser cette clé de condition dans une politique IAM 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 clés KMS de chiffrement symétriques ou des clés KMS HMAC.

L'exemple d'instruction de politique IAM suivant utilise la clé de condition kms:KeySpec pour autoriser les principaux à créer des clés KMS asymétriques RSA uniquement. 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 condition kms:KeySpec pour contrôler l'accès aux opérations qui utilisent ou gèrent une clé KMS en fonction de la propriété KeySpec de la clé KMS utilisée pour l'opération. L'opération doit être une opération de ressource de clé KMS, c'est-à-dire une opération autorisée pour une clé KMS particulière. Pour identifier les opérations de ressources de clés KMS, dans la table Actions and Resources (Actions et ressources), recherchez la valeur de KMS key dans la colonne Resources de l'opération.

Par exemple, la politique IAM suivante permet aux principaux d'effectuer les opérations de ressources de clé KMS spécifiées, mais uniquement avec les clés KMS de chiffrement symétriques du 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 Opérations d’API Type de stratégie

kms:KeyUsage

Chaîne

À valeur unique

CreateKey

Opérations liées aux ressources de clé KMS

Politiques IAM

Politiques de clé et politiques IAM

La clé de condition kms:KeyUsage contrôle l'accès aux opérations en fonction de la valeur de la propriété KeyUsage de la clé KMS créée par l'opération ou utilisée dans cette dernière.

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 et GENERATE_VERIFY_MAC.

Par exemple, vous pouvez créer une clé KMS uniquement lorsque KeyUsage a pour valeur ENCRYPT_DECRYPT ou refuser à un utilisateur cette autorisation lorsque KeyUsage a pour valeur SIGN_VERIFY.

L'exemple d'instruction de politique IAM suivant utilise la clé de condition kms:KeyUsage pour créer une clé KMS uniquement lorsque le paramètre KeyUsage a pour valeur ENCRYPT_DECRYPT.

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

Vous pouvez également utiliser la clé de condition kms:KeyUsage pour contrôler l'accès aux opérations qui utilisent ou gèrent une clé KMS en fonction de la propriété KeyUsage de la clé KMS utilisée pour l'opération. L'opération doit être une opération de ressource de clé KMS, c'est-à-dire une opération autorisée pour une clé KMS particulière. Pour identifier les opérations de ressources de clés KMS, dans la table Actions and Resources (Actions et ressources), recherchez la valeur de KMS key dans la colonne Resources de l'opération.

Par exemple, la politique IAM suivante permet aux principaux d'effectuer les opérations de ressources de clé KMS spécifiées, mais uniquement avec les clés KMS du compte qui sont 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 Opérations d’API Type de stratégie

kms:MacAlgorithm

Chaîne

À valeur unique

GenerateMac

VerifyMac

Politiques de clé et politiques 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 endosser le rôle testers d'utiliser la clé KMS HMAC pour générer et vérifier les balises HMAC uniquement lorsque l'algorithme MAC de la requête est HMAC_SHA_384 ou HMAC_SHA_512. Cette politique utilise deux instructions de politique distinctes ayant chacune leur propre condition. Si vous spécifiez plusieurs algorithmes MAC dans une seule instruction de condition, la condition nécessite les deux algorithmes, au lieu de l'un ou de 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 Opérations d’API Type de stratégie

kms:MessageType

Chaîne

À valeur unique

Sign

Verify

Politiques de clé et politiques 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, l'instruction de politique de clé suivante utilise la clé de condition kms:MessageType afin d'utiliser une clé KMS asymétrique pour signer un message, mais pas un condensé du 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 Opérations d’API Type de stratégie

kms:MultiRegion

Booléen

À valeur unique

CreateKey

Opérations liées aux ressources de clé KMS

Politiques de clé et politiques 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 les clés KMS et à l'CreateKeyopération en fonction de la valeur de la MultiRegion propriété de la clé KMS. Les valeurs valides sont true (multi-région) et false (région unique). Toutes les clés KMS ont une propriété MultiRegion.

Par exemple, l'instruction de politique IAM suivante utilise la clé de condition kms:MultiRegion afin d'autoriser les principaux à 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 Opérations d’API Type de stratégie

kms:MultiRegionKeyType

Chaîne

À valeur unique

CreateKey

Opérations liées aux ressources de clé KMS

Politiques de clé et politiques 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 les clés KMS et l'CreateKeyopération en fonction de la MultiRegionKeyType propriété de la clé KMS. Les valeurs valides sont PRIMARY et REPLICA. Seules les clés multi-région ont une propriété MultiRegionKeyType.

En général, vous utilisez la clé de condition kms:MultiRegionKeyType dans une politique IAM pour contrôler l'accès à plusieurs clés KMS. 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, l'instruction de politique IAM suivante utilise la clé de condition kms:MultiRegionKeyType pour permettre aux principaux de planifier et d'annuler la suppression des clés uniquement sur les clés de réplica multi-région dans le Compte AWSspécifié.

{ "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 Opérations d’API Type de stratégie

kms:PrimaryRegion

Chaîne (liste)

À valeur unique

UpdatePrimaryRegion

Politiques de clé et politiques IAM

Vous pouvez utiliser cette clé de condition pour limiter les régions de destination dans une UpdatePrimaryRegionopération. Ils Régions AWS 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 Opérations d’API Type de stratégie

kms:ReEncryptOnSameKey

Booléen

À valeur unique

ReEncrypt

Politiques de clé et politiques 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 clé KMS de destination identique à celle utilisée pour le chiffrement d'origine.

Par exemple, l'instruction de politique de clé suivante utilise la clé de condition kms:ReEncryptOnSameKey pour rechiffrer uniquement lorsque la clé KMS de destination est identique à 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 Opérations d’API Type de stratégie

kms:RequestAlias

Chaîne (liste)

À valeur unique

Opérations cryptographiques

DescribeKey

GetPublicKey

Politiques de clé et politiques IAM

Vous pouvez utiliser cette clé de condition pour autoriser une opération uniquement lorsque la demande utilise un alias particulier pour identifier la clé KMS. La clé de condition kms:RequestAlias contrôle l'accès à une clé KMS utilisée lors d'une opération cryptographique, GetPublicKey, ou DescribeKey en fonction de l'alias qui identifie cette clé KMS dans la demande. (Cette condition de politique n'a aucun effet sur l'GenerateRandomopération car celle-ci n'utilise pas de clé ou d'alias KMS.)

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 clés KMS 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 clé KMS sans modifier les politiques ou les octrois. Pour plus de détails, veuillez consulter ABAC pour 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 un ARN d'alias dans la valeur de cette clé de condition.

Pour satisfaire à cette condition, la valeur du paramètre KeyId dans la demande doit être un nom d'alias ou un ARN d'alias correspondant. Si la demande utilise un identifiant de clé, elle ne satisfait pas à la condition, même si elle identifie la même clé KMS.

Par exemple, la déclaration de politique clé suivante permet au principal d'appeler l'GenerateDataKeyopération sur la clé KMS. Cependant, cela n'est autorisé que lorsque la valeur du paramètre KeyId dans la demande est alias/finance-key ou un ARN d'alias avec ce nom d'alias, tel que 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" } } }

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 Opérations d’API Type de stratégie

kms:ResourceAliases

Chaîne (liste)

Multi-valeurs Opérations liées aux ressources de clé KMS

Politiques IAM uniquement

Utilisez cette clé de condition pour contrôler l'accès à une clé KMS en fonction des alias associés à la clé KMS. L'opération doit être une opération de ressource de clé KMS, c'est-à-dire une opération autorisée pour une clé KMS particulière. Pour identifier les opérations de ressources de clés KMS, dans la table Actions and Resources (Actions et ressources), recherchez la valeur de KMS key dans la colonne Resources de l'opération.

Cette condition prend en charge le contrôle d'accès basé sur les attributs (ABAC) dans AWS KMS. Avec l'ABAC, vous pouvez contrôler l'accès aux clés KMS en fonction des balises attribuées à une clé KMS et des alias associés à une clé KMS. Vous pouvez utiliser des balises et des alias pour autoriser ou refuser l'accès à une clé KMS sans modifier les politiques ou les octrois. Pour plus de détails, veuillez consulter ABAC pour 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 clés KMS dans la même région (à l'aide de l'opérateur Régions AWS de StringLike comparaison) ou à plusieurs clés KMS dans différents comptes.

Note

La ResourceAliases condition kms : n'est effective que lorsque la clé KMS est conforme aux alias par quota de clé KMS. Si une clé KMS dépasse ce quota, les principaux autorisés à utiliser la clé KMS par la condition kms:ResourceAliases se voient refuser l'accès à la clé 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 un ARN d'alias dans la valeur de cette clé de condition. Pour satisfaire à cette condition, la clé KMS utilisée dans l'opération doit avoir l'alias spécifié. Peu importe si ou comment la clé KMS est identifiée dans la demande pour l'opération.

Il s'agit d'une clé de condition multi-valeurs qui compare l'ensemble d'alias associé à une clé KMS à 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'ensemble, veuillez consulter Utilisation de plusieurs clés et valeurs dans le Guide de l'utilisateur IAM.

  • ForAnyValue: Au moins un alias associé à la clé KMS doit correspondre à un alias figurant dans la condition de politique. D'autres alias sont autorisés. Si la clé KMS n'a pas d'alias, la condition n'est pas remplie.

  • ForAllValues: Chaque alias associé à la clé KMS doit correspondre à un alias indiqué dans la politique. Cet opérateur d'ensemble limite les alias associés à la clé KMS à ceux de la condition de politique. Il ne nécessite aucun alias, mais il interdit les alias non spécifiés.

Par exemple, la déclaration de politique IAM suivante permet au principal d'appeler l'GenerateDataKeyopération sur n'importe quelle clé KMS spécifiée Compte AWS associée à l'finance-keyalias. (Les politiques de clé des clés KMS affectées doivent également permettre au compte du principal de les utiliser pour cette opération.) Pour indiquer que la condition est remplie lorsque l'un des nombreux alias qui peuvent être associés à la clé KMS est alias/finance-key, la condition utilise l'opérateur d'ensemble ForAnyValue.

Puisque la condition kms:ResourceAliases est basée sur la ressource et non pas sur la demande, un appel vers GenerateDataKey réussit pour toute clé KMS associée à l'alias finance-key, même si la demande utilise un ID de clé ou un ARN de clé pour identifier la clé KMS.

{ "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 suivant de politique IAM permet au principal d'activer et de désactiver les clés KMS, mais uniquement lorsque tous les alias des clés KMS incluent « Test ». Cette instruction de politique utilise deux conditions. La condition avec l'opérateur d'ensemble ForAllValues exige que tous les alias associés à la clé KMS incluent « Test ». La condition avec l'opérateur d'ensemble ForAnyValue exige que la clé KMS ait au moins un alias avec « Test ». Sans la condition ForAnyValue, cette instruction de politique aurait autorisé le principal à utiliser les clés KMS 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 Opérations d’API Type de stratégie

kms:ReplicaRegion

Chaîne (liste)

À valeur unique

ReplicateKey

Politiques de clé et politiques 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 Opérations d’API Type de stratégie

kms:RetiringPrincipal

Chaîne (liste)

À valeur unique

CreateGrant

Politiques de clé et politiques 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 octrois d'utilisation d'une clé KMS uniquement lorsque le RetiringPrincipal de la demande CreateGrant correspond au RetiringPrincipal spécifié dans l'instruction de condition.

Pour spécifier le principal sortant, utilisez le Amazon Resource Name (ARN) d'un AWS principal. Les principaux valides incluent les utilisateurs IAM Comptes AWS, les rôles IAM, les utilisateurs fédérés et les utilisateurs des rôles assumés. Pour obtenir de l'aide sur la syntaxe ARN d'un principal, consultez la section ARN IAM dans le guide de l'utilisateur IAM.

L'exemple de déclaration de politique clé suivant permet à un utilisateur de créer des autorisations pour la clé KMS. 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 : ScheduleKeyDeletionPendingWindowInDays

AWS KMS clés de condition Type de condition Type de la valeur Opérations d’API Type de stratégie

kms:ScheduleKeyDeletionPendingWindowInDays

Numérique

À valeur unique

ScheduleKeyDeletion

Politiques de clé et politiques 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.

PendingWindowInDaysSpé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 Opérations d’API Type de stratégie

kms:SigningAlgorithm

Chaîne

À valeur unique

Sign

Verify

Politiques de clé et politiques 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 clés KMS asymétrique en dehors de AWS KMS.

L'exemple de politique de clé suivant permet aux utilisateurs pouvant endosser le rôle testers d'utiliser la clé KMS pour signer des messages uniquement lorsque l'algorithme de signature utilisé pour la demande est un algorithme RSASSA_PSS, tel que RSASSA_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 Opérations d’API Type de stratégie

kms:ValidTo

Horodatage

À valeur unique

ImportKeyMaterial

Politiques de clé et politiques 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 d'instruction de politique suivant autorise un utilisateur à importer des éléments de clé dans une clé KMS. 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 Opérations d’API Type de stratégie

kms:ViaService

Chaîne

À valeur unique

Opérations liées aux ressources de clé KMS

Politiques de clé et politiques IAM

La clé de kms:ViaService condition limite l'utilisation d'une clé KMS aux demandes provenant 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 de ressource de clé KMS, c'est-à-dire une opération autorisée pour une clé KMS particulière. Pour identifier les opérations de ressources de clés KMS, dans la table Actions and Resources (Actions et ressources), recherchez la valeur de KMS key dans la colonne Resources de l'opération.

Par exemple, l'instruction de politique de clé suivante utilise la clé de condition kms:ViaService 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 Amazon RDS dans la région USA Ouest (Oregon), au nom de ExampleRole.

{ "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 condition kms:ViaService pour refuser l'autorisation d'utiliser une clé KMS 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 clé KMS. 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 Comment les services AWS utilisent AWS KMS.

  • 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 clé KMS d'être utilisée uniquement pour les demandes qui proviennent du service qui a créé la clé KMS. Pour voir la politique clé d'un Clé gérée par AWS, utilisez l'GetKeyPolicyopération.

La clé de condition kms:ViaService est valide dans les instructions de la politique IAM et de la politique de clé. Les services que vous spécifiez doivent être intégrés à AWS KMS et prendre en charge la clé de condition kms:ViaService.

Services prenant en charge la clé de condition kms:ViaService

Le tableau suivant répertorie les AWS services intégrés à la clé de kms:ViaService condition dans les clés gérées par le client AWS KMS et prenant en charge son utilisation. 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_region.amazonaws.com
AWS AppFabric appfabric.AWS_region.amazonaws.com
Amazon AppFlow appflow.AWS_region.amazonaws.com
AWS Application Migration Service mgn.AWS_region.amazonaws.com
Amazon Athena athena.AWS_region.amazonaws.com
AWS Audit Manager auditmanager.AWS_region.amazonaws.com
Amazon Aurora rds.AWS_region.amazonaws.com
AWS Backup backup.AWS_region.amazonaws.com
PasserelleAWS Backup backup-gateway.AWS_region.amazonaws.com
Kit SDK Amazon Chime chimevoiceconnector.AWS_region.amazonaws.com
AWS CodeArtifact codeartifact.AWS_region.amazonaws.com
CodeGuru Réviseur Amazon codeguru-reviewer.AWS_region.amazonaws.com
Amazon Comprehend comprehend.AWS_region.amazonaws.com
Amazon Connect connect.AWS_region.amazonaws.com
Profils des clients Amazon Connect profile.AWS_region.amazonaws.com
Amazon Q in Connect wisdom.AWS_region.amazonaws.com
AWS Database Migration Service (AWS DMS) dms.AWS_region.amazonaws.com
AWS Directory Service directoryservice.AWS_region.amazonaws.com
Amazon DynamoDB dynamodb.AWS_region.amazonaws.com
Amazon DocumentDB docdb-elastic.AWS_region.amazonaws.com
Amazon EC2 Systems Manager (SSM) ssm.AWS_region.amazonaws.com
Amazon Elastic Block Store (Amazon EBS) ec2.AWS_region.amazonaws.com (EBS uniquement)
Amazon Elastic Container Registry (Amazon ECR) ecr.AWS_region.amazonaws.com
Amazon Elastic File System (Amazon EFS) elasticfilesystem.AWS_region.amazonaws.com
Amazon ElastiCache

Incluez les deux ViaService noms dans la valeur de la clé de condition :

  • elasticache.AWS_region.amazonaws.com

  • dax.AWS_region.amazonaws.com

AWS Elemental MediaTailor mediatailor.AWS_region.amazonaws.com
AWS Résolution de l'entité entityresolution.AWS_region.amazonaws.com
Amazon FinSpace finspace.AWS_region.amazonaws.com
Amazon Forecast forecast.AWS_region.amazonaws.com
Amazon FSx fsx.AWS_region.amazonaws.com
AWS Glue glue.AWS_region.amazonaws.com
AWS Ground Station groundstation.AWS_region.amazonaws.com
Amazon GuardDuty malware-protection.AWS_region.amazonaws.com
AWS HealthLake healthlake.AWS_region.amazonaws.com
AWS IoT SiteWise iotsitewise.AWS_region.amazonaws.com
Amazon Kendra kendra.AWS_region.amazonaws.com
Amazon Keyspaces (pour Apache Cassandra) cassandra.AWS_region.amazonaws.com
Amazon Kinesis kinesis.AWS_region.amazonaws.com
Amazon Data Firehose firehose.AWS_region.amazonaws.com
Amazon Kinesis Video Streams kinesisvideo.AWS_region.amazonaws.com
AWS Lambda lambda.AWS_region.amazonaws.com
Amazon Lex lex.AWS_region.amazonaws.com
AWS License Manager license-manager.AWS_region.amazonaws.com
Amazon Location Service geo.AWS_region.amazonaws.com
Amazon Lookout for Equipment lookoutequipment.AWS_region.amazonaws.com
Amazon Lookout for Metrics lookoutmetrics.AWS_region.amazonaws.com
Amazon Lookout for Vision lookoutvision.AWS_region.amazonaws.com
Amazon Macie macie.AWS_region.amazonaws.com
AWS Mainframe Modernization m2.AWS_region.amazonaws.com
Amazon Managed Blockchain managedblockchain.AWS_region.amazonaws.com
Amazon Managed Streaming for Apache Kafka (Amazon MSK) kafka.AWS_region.amazonaws.com
Amazon Managed Workflows for Apache Airflow (MWAA) airflow.AWS_region.amazonaws.com
Amazon MemoryDB for Redis memorydb.AWS_region.amazonaws.com
Amazon Monitron monitron.AWS_region.amazonaws.com
Amazon MQ mq.AWS_region.amazonaws.com
Amazon Neptune rds.AWS_region.amazonaws.com
Amazon Nimble Studio nimble.AWS_region.amazonaws.com
AWS HealthOmics omics.AWS_region.amazonaws.com
Amazon OpenSearch Service es.AWS_region.amazonaws.com, aoss.AWS_region.amazonaws.com
AWS Proton proton.AWS_region.amazonaws.com
Amazon Quantum Ledger Database (Amazon QLDB) qldb.AWS_region.amazonaws.com
Analyse des performances d’Amazon RDS rds.AWS_region.amazonaws.com
Amazon Redshift redshift.AWS_region.amazonaws.com
Ouvrez l'éditeur de requête V2 Amazon Redshift. sqlworkbench.AWS_region.amazonaws.com
Amazon Redshift Serverless redshift-serverless.AWS_region.amazonaws.com
Amazon Rekognition rekognition.AWS_region.amazonaws.com
Amazon Relational Database Service (Amazon RDS) rds.AWS_region.amazonaws.com
Stockage de données répliquées Amazon ards.AWS_region.amazonaws.com
Amazon SageMaker sagemaker.AWS_region.amazonaws.com
AWS Secrets Manager secretsmanager.AWS_region.amazonaws.com
Amazon Security Lake securitylake.AWS_region.amazonaws.com
Amazon Simple Email Service (Amazon SES) ses.AWS_region.amazonaws.com
Amazon Simple Notification Service (Amazon SNS) sns.AWS_region.amazonaws.com
Amazon Simple Queue Service (Amazon SQS) sqs.AWS_region.amazonaws.com
Amazon Simple Storage Service (Amazon S3) s3.AWS_region.amazonaws.com
AWS Snowball importexport.AWS_region.amazonaws.com
AWS Storage Gateway storagegateway.AWS_region.amazonaws.com
AWS Systems Manager Incident Manager ssm-incidents.AWS_region.amazonaws.com
AWS Systems Manager Incident Manager Contacts ssm-contacts.AWS_region.amazonaws.com
Amazon Timestream timestream.AWS_region.amazonaws.com
Amazon Translate translate.AWS_region.amazonaws.com
Accès vérifié par AWS verified-access.AWS_region.amazonaws.com
Amazon WorkMail workmail.AWS_region.amazonaws.com
Amazon WorkSpaces workspaces.AWS_region.amazonaws.com
Amazon WorkSpaces Thin Client thinclient.AWS_region.amazonaws.com
WorkSpaces Site Web d'Amazon workspaces-web.AWS_region.amazonaws.com
AWS X-Ray xray.AWS_region.amazonaws.com

km : WrappingAlgorithm

AWS KMS clés de condition Type de condition Type de la valeur Opérations d’API Type de stratégie

kms:WrappingAlgorithm

Chaîne

À valeur unique

GetParametersForImport

Politiques de clé et politiques 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 Opérations d’API Type de stratégie

kms:WrappingKeySpec

Chaîne

À valeur unique

GetParametersForImport

Politiques de clé et politiques 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