Clés de condition pour AWS KMS
Vous pouvez spécifier des conditions dans les politiques de clé et les politiques AWS Identity and Access Management (politiques IAM) qui contrôlent l'accès aux ressources AWS KMS. L'Instruction de politique est en vigueur uniquement lorsque les conditions sont vérifiées. Par exemple, il est possible d'appliquer une instruction de politique après une date spécifique. Ou, vous pouvez faire en sorte qu'une instruction de politique contrôle l'accès uniquement lorsqu'une valeur spécifique apparaît dans une demande d'API.
Pour spécifier des conditions, utilisez les clés de condition dans l'élément Condition
d'une instruction de politique avec des opérateurs de condition IAM. Certaines clés de condition s'appliquent généralement à AWS et d'autres sont spécifiques à AWS KMS.
Les valeurs clé de condition doivent respecter les règles de caractère et de codage pour les politiques de clé AWS KMS et les politiques IAM. 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.
Rubriques
Clés de condition globales AWS
AWS définit des clés de condition globales, un ensemble de clés de condition de politique pour tous les services AWS qui utilisent IAM pour le contrôle d'accès. AWS KMS prend en charge toutes les clés de condition globales. Vous pouvez les utiliser dans les politiques de clés AWS KMS et les politiques IAM.
Par exemple, vous pouvez utiliser la clé de condition globale aws:PrincipalArn pour autoriser l'accès à une AWS KMS key (clé KMS) uniquement lorsque le principal dans la demande est représenté par l'Amazon Resource Name (ARN) dans la valeur de clé de condition. Pour prendre en charge le contrôle d'accès basé sur les attributs (ABAC) dans AWS KMS , vous pouvez utiliser la clé de condition globale aws:ResourceTag/tag-key dans une politique IAM, afin d'autoriser l'accès aux clés KMS avec une identification particulière.
Pour éviter qu'un service AWS soit utilisé à son insu dans une politique où le principal est un principal de service AWS, vous pouvez utiliser les clés de condition globales aws:SourceArn ou aws:SourceAccount. Pour plus d'informations, consultez Utilisation des clés de condition aws:SourceArn ou aws:SourceAccount.
Pour plus d'informations sur les clés de condition globale AWS, y compris les types de demandes dans lesquelles elles sont disponibles, veuillez consulter Clés de contexte de condition globale AWS dans le Guide de l'utilisateur IAM. Pour accéder à des exemples d'utilisation des clés de condition globale dans des politiques IAM, veuillez consulter Contrôle de l'accès aux demandes et Contrôle des clés de balise dans le Guide de l'utilisateur IAM.
Les rubriques suivantes fournissent des conseils spéciaux pour l'utilisation des clés de condition basées sur les adresses IP et les points de terminaison VPC.
Rubriques
Utilisation de la condition d'adresse IP dans les politiques avec autorisations AWS KMS
Vous pouvez utiliser AWS KMS pour protéger vos données dans un service AWS intégré. Cependant, soyez prudent lorsque vous indiquez les opérateurs de condition d'adresse IP ou la clé de condition aws:SourceIp
dans cette même instruction de politique qui autorise ou refuse l'accès à AWS KMS. Par exemple, la politique dans AWS : refuse l'accès à AWS en fonction de l'adresse IP source restreint les actions AWS aux demandes provenant de la plage d'adresses IP spécifiée.
Envisagez le scénario suivant :
-
Vous attachez une politique comme celle illustrée dans AWS : refuse l'accès à AWS en fonction de l'adresse IP source à un utilisateur IAM. Vous définissez la valeur de la clé de condition
aws:SourceIp
sur la plage d'adresses IP de la société de l'utilisateur. Cet utilisateur IAM a d'autres politiques attachées qui lui permettent d'utiliser Amazon EBS, Amazon EC2 et AWS KMS. -
L'utilisateur tente d'attacher un volume EBS chiffré à une instance EC2. Cette action échoue avec une erreur d'autorisation bien que l'utilisateur soit autorisé à utiliser l'ensemble des services concernés.
L'étape 2 échoue, car la demande adressée à AWS KMS pour déchiffrer la clé de données chiffrée du volume provient d'une adresse IP qui est associée à l'infrastructure Amazon EC2. Pour que l'opération aboutisse, la requête doit provenir de l'adresse IP de l'utilisateur d'origine. Étant donné que la politique à l'étape 1 refuse explicitement toutes les demandes provenant d'adresses IP autres que celles spécifiées, Amazon EC2 n'est pas autorisé à déchiffrer la clé de données chiffrée du volume EBS.
Par ailleurs, la clé de condition aws:sourceIP
n'est pas en vigueur lorsque la demande provient d'un point de terminaison d'un VPC Amazon. Pour restreindre les demandes à un point de terminaison VPC, y compris à un point de terminaison VPC AWS KMS, utilisez les clés de condition aws:sourceVpce
ou aws:sourceVpc
. Pour plus d'informations, consultez Points de terminaison d'un VPC - Contrôle de l'utilisation de points de terminaison dans le manuel Guide d'utilisateur Amazon VPC.
Utilisation de conditions de point de terminaison d'un VPC dans des politiques avec des autorisations AWS KMS
AWS KMS prend désormais en charge les points de terminaison Amazon Virtual Private Cloud (Amazon VPC) à technologie AWS PrivateLink. Vous pouvez utiliser les clés de condition globale dans des politiques de clé et des politiques IAM afin de contrôler l'accès aux ressources AWS KMS lorsque la demande provient d'un VPC ou utilise un point de terminaison d'un VPC. Pour plus de détails, veuillez consulter Utilisation d'un point de terminaison VPC dans une déclaration de politique.
-
aws:SourceVpc
limite l'accès aux requêtes à partir du VPC spécifié. -
aws:SourceVpce
limite l'accès aux requêtes à partir du point de terminaison d'un VPC spécifié.
Si vous utilisez ces clés de condition pour contrôler l'accès aux clés KMS, vous risquez de refuser par inadvertance l'accès aux services AWS qui utilisent AWS KMS en votre nom.
Prenez soin d'éviter une situation comme dans l'exemple des clés de condition d'adresse IP. Si vous restreignez les demandes d'une clé KMS à un VPC ou un point de terminaison d'un VPC, les appels vers AWS KMS depuis un service intégré, tel que Amazon S3 ou Amazon EBS, peuvent échouer. Cela peut se produire même si la requête source provient au final du VPC ou du point de terminaison d'un VPC.
Clés de condition AWS KMS
AWS KMS fournit un ensemble de clés de condition que vous pouvez utiliser dans les politiques de clé 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
La plupart des clés de condition AWS KMS contrôlent l'accès à une clé KMS en fonction de la valeur d'un paramètre dans la demande d'une opération AWS KMS. Par exemple, vous pouvez utiliser la clé de condition kms:KeySpec dans une politique IAM pour autoriser l'utilisation de l'opération CreateKey uniquement lorsque la valeur du paramètre KeySpec
dans la demande CreateKey
est RSA_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 condition kms:KeySpec pour permettre aux utilisateurs d'utiliser l'opération CreateKey
uniquement lorsque la valeur du paramètre KeySpec
est SYMMETRIC_DEFAULT
(il s'agit de 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 condition AWS KMS 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 condition kms:KeyOrigin pour autoriser les principaux à appeler GenerateDataKey sur une clé KMS uniquement lorsque le paramètre Origin
de la clé KMS a pour valeur AWS_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 de clé KMS particulière, telle que ListKeys, l'autorisation n'est pas effective, car la condition ne sera jamais 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 condition AWS KMS et incluent des exemples d'instructions de politique qui illustrent la syntaxe d'une politique.
Utilisation d'opérateurs d'ensemble avec des clés de condition
Lorsqu'une condition de politique compare deux ensembles de valeurs, telles que l'ensemble de balises dans une demande et l'ensemble de balises dans une politique, vous devez indiquer à AWScomment 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 condition AWS KMS est à valeur unique ou multi-valeurs, veuillez consulter la colonne Value type (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, puisque chaque appel d'API peut provenir d'un seul 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:ResourceAliasespeut 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.
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 d'ensemble ForAllValues
avec les clés de condition kms:EncryptionContext:context-key ou aws:RequestTag/tag-key
, 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 les risques de l'utilisation de l'opérateur d'ensemble ForAllValues
avec une condition à valeur unique, veuillez consulter Avertissement de sécurité : ForAllValues avec clé à valeur unique dans le Guide de l'utilisateur IAM.
Rubriques
- kms:BypassPolicyLockoutSafetyCheck
- kms:CallerAccount
- kms:CustomerMasterKeySpec (obsolète)
- kms:CustomerMasterKeyUsage (obsolète)
- kms:DataKeyPairSpec
- kms:EncryptionAlgorithm
- kms:EncryptionContext:context-key
- kms:EncryptionContextKeys
- kms:ExpirationModel
- kms:GrantConstraintType
- kms:GrantIsForAWSResource
- kms:GrantOperations
- kms:GranteePrincipal
- kms:KeyOrigin
- kms:KeySpec
- kms:KeyUsage
- kms:MacAlgorithm
- kms:MessageType
- kms:MultiRegion
- kms:MultiRegionKeyType
- kms:PrimaryRegion
- kms:ReEncryptOnSameKey
- kms:RequestAlias
- kms:ResourceAliases
- kms:ReplicaRegion
- kms:RetiringPrincipal
- kms:SigningAlgorithm
- kms:ValidTo
- kms:ViaService
- kms:WrappingAlgorithm
- kms:WrappingKeySpec
kms:BypassPolicyLockoutSafetyCheck
Clés de condition AWS KMS | Type de condition | Type de la valeur | Opérations d'API | Type de politique |
---|---|---|---|---|
|
Booléen |
À valeur unique |
|
Politiques IAM uniquement Politiques de clé et politiques IAM |
La clé de condition kms:BypassPolicyLockoutSafetyCheck
contrôle l'accès aux opérations CreateKey et PutKeyPolicy en fonction de la valeur du paramètre BypassPolicyLockoutSafetyCheck
de 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": "Allow", "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
kms:CallerAccount
Clés de condition AWS KMS | Type de condition | Type de la valeur | Opérations d'API | Type de politique |
---|---|---|---|---|
|
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 IAM) dans 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. Cependant, vous pouvez obtenir cet effet en associant cette clé de condition à un élément Principal
qui spécifie toutes les identités AWS.
Vous pouvez l'utiliser pour contrôler l'accès à n'importe quelle opération de ressource de clé KMS, c'est-à-dire, toute opération AWS KMS qui utilise 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 instruction de politique est dans la politique de clé pour la Clé gérée par AWS d'Amazon EBS. Elle combine un élément Principal
qui spécifie toutes les identités AWS avec la clé de condition kms:CallerAccount
pour autoriser réellement l'accès à toutes les identités dans le Compte AWS 111122223333. Elle contient une clé de condition AWS KMS supplémentaire (kms:ViaService
) afin de limiter encore les autorisations en autorisant uniquement les demandes qui transitent par Amazon EBS. Pour plus d'informations, consultez kms:ViaService.
{ "Sid": "Allow access through EBS for all principals in the account that are authorized to use EBS", "Effect": "Allow", "Principal": {"AWS": "*"}, "Condition": { "StringEquals": { "kms:CallerAccount": "111122223333", "kms:ViaService": "ec2.us-west-2.amazonaws.com" } }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "*" }
kms:CustomerMasterKeySpec (obsolète)
La clé de condition kms:CustomerMasterKeySpec
est obsolète. Utilisez à la place la clé de condition kms:KeySpec.
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 de perturber 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 à la place la clé de condition kms:KeyUsage.
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 de perturber les modifications, AWS KMS prend en charge les deux clés de condition.
kms:DataKeyPairSpec
Clés de condition AWS KMS | Type de condition | Type de la valeur | Opérations d'API | Type de politique |
---|---|---|---|---|
|
Chaîne |
À valeur unique |
|
Politiques de clé et politiques IAM |
Vous pouvez utiliser cette clé de condition pour contrôler l'accès aux opérations GenerateDataKeyPair et GenerateDataKeyPairWithoutPlaintext en fonction de la valeur du paramètre KeyPairSpec
dans la demande. Par exemple, vous pouvez autoriser un utilisateur à 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 un utilisateur à utiliser la clé KMS uniquement pour générer des paires de clés de données RSA.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": [ "kms:GenerateDataKeyPair", "kms:GenerateDataKeyPairWithoutPlaintext" ], "Resource": "*", "Condition": { "StringLike": { "kms:DataKeyPairSpec": "RSA*" } } }
Voir aussi
kms:EncryptionAlgorithm
Clés de condition AWS KMS | Type de condition | Type de la valeur | Opérations d'API | Type de politique |
---|---|---|---|---|
|
Chaîne |
À valeur unique |
|
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 opérations Encrypt, Decrypt et ReEncrypt, elle contrôle l'accès en fonction de la valeur du paramètre EncryptionAlgorithm 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étriques en dehors de AWS KMS.
Paramètre EncryptionAlgorithm 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. L'inclusion de GenerateDataKey*
ajoute GenerateDataKey, GenerateDataKeyWithoutPlaintext, GenerateDataKeyPair et GenerateDataKeyPairWithoutPlaintext aux 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:context-key
Clés de condition AWS KMS | Type de condition | Type de la valeur | Opérations d'API | Type de politique |
---|---|---|---|---|
|
Chaîne |
À valeur unique |
|
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 condition kms:EncryptionContextKeys.
Cette clé de condition est valide dans les instructions de politique de clé et les instructions de politique IAM, même si elle n'apparaît pas dans la console IAM ou dans la référence d'autorisations de service IAM.
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é context-key
avec la clé de contexte 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.
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 d'ensemble ForAllValues
avec kms:EncryptionContext:context-key, 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 contexte de chiffrement et interdire toutes les autres paires de contexte de chiffrement, utilisez kms:EncryptionContext:context-key et kms:EncryptionContextKeys dans l'instruction 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::712816755609:user/alice" }, "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.
Les versions antérieures de cette rubrique affichaient des instructions de politique qui utilisaient les opérateurs d'ensemble ForAnyValue
et ForAllValues
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 examiner vos politiques et supprimer l'opérateur d'ensemble de toute condition avec kms:EncryptionContext:context-key. 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 contexte de chiffrement, utilisez kms:EncryptionContext:context-key et kms:EncryptionContextKeys dans l'instruction de politique. L'instruction de politique de clé suivante utilise la condition kms:EncryptionContext:context-key pour exiger un contexte de chiffrement avec des paires Department=IT
et Project=Alpha
. 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 de jeu autoriserait les demandes sans contexte de chiffrement, mais dans cette configuration, kms:EncryptionContext:context-key dans cette condition échouerait.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::712816755609:user/alice" }, "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
, 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-key
, est déterminé par l'opérateur de condition de la politique.context-value
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é de contexte de chiffrement sensible à la casse, utilisez la condition de politique kms:EncryptionContextKeys avec un opérateur de condition sensible à la casse, par exemple 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 à la casse de la clé de contexte de chiffrement et de la valeur, utilisez les conditions de politique kms:EncryptionContextKeys
et kms:EncryptionContext:context-key ensemble dans la même instruction 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 de contexte de chiffrement (telle que ExampleApp
) est la valeur de la condition kms:EncryptionContext:context-key.
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 type différent, tel qu'un nombre entier ou à virgule flottante, AWS KMS l'interprète 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 où la clé est user
et la valeur est le nom d'utilisateur AWS de l'appelant, comme 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":
"
. 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 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 de contexte identifient de façon 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
kms:EncryptionContextKeys
Clés de condition AWS KMS | Type de condition | Type de la valeur | Opérations d'API | Type de politique |
---|---|---|---|---|
|
Chaîne (liste) |
Multi-valeurs |
|
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.
Les valeurs clé de condition, y compris une clé de contexte de chiffrement, doivent être conformes aux règles de caractères et de codage pour les politiques de clé AWS KMS. 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.
Puisque l'opération de condition StringEquals est sensible à la casse, cette instruction de politique nécessite l'orthographe et la casse de la clé de contexte 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
kms:ExpirationModel
Clés de condition AWS KMS | Type de condition | Type de la valeur | Opérations d'API | Type de politique |
---|---|---|---|---|
|
Chaîne |
À valeur unique |
|
Politiques de clé et politiques IAM |
La clé de condition kms:ExpirationModel
contrôle l'accès à l'opération ImportKeyMaterial en fonction de la valeur du paramètre ExpirationModel de 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 paramètre ValidTo. 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 condition kms:ValidTo pour exiger une date d'expiration spécifique en tant que condition d'accès.
L'exemple d'instruction de politique suivant utilise la clé de condition kms:ExpirationModel
pour autoriser un utilisateur à 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:user/ExampleUser" }, "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 un utilisateur à 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 un utilisateur à importer les éléments de clé uniquement lorsque la demande ne dispose pas de paramètre ExpirationModel
. La valeur par défaut de ExpirationModel est KEY_MATERIAL_EXPIRES
.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:ImportKeyMaterial", "Resource": "*", "Condition": { "Null": { "kms:ExpirationModel": true } } }
Voir aussi
kms:GrantConstraintType
Clés de condition AWS KMS | Type de condition | Type de la valeur | Opérations d'API | Type de politique |
---|---|---|---|---|
|
Chaîne |
À valeur unique |
|
Politiques de clé et politiques IAM |
Vous pouvez utiliser cette clé de condition pour contrôler l'accès à l'opération CreateGrant en fonction du type de contrainte d'octroi dans la requête.
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.
L'exemple d'instruction de politique de clé suivant utilise la clé de condition kms:GrantConstraintType
pour autoriser un utilisateur à 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:user/ExampleUser" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:GrantConstraintType": "EncryptionContextEquals" } } }
Voir aussi
kms:GrantIsForAWSResource
Clés de condition AWS KMS | Type de condition | Type de la valeur | Opérations d'API | Type de politique |
---|---|---|---|---|
|
Booléen |
À valeur unique |
|
Politiques de clé et politiques IAM |
Autorise ou interdit les opérations CreateGrant, ListGrants ou RevokeGrant uniquement lorsqu'un service intégré AWS avec AWS KMS
L'exemple suivant d'instruction de politique de clé utilise la clé de condition kms:GrantIsForAWSResource
. Il permet aux services AWS qui sont intégrés à AWS KMS, tels qu'Amazon EBS, de créer des octrois sur cette clé KMS pour le compte du principal spécifié.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } }
Voir aussi
kms:GrantOperations
Clés de condition AWS KMS | Type de condition | Type de la valeur | Opérations d'API | Type de politique |
---|---|---|---|---|
|
Chaîne |
Multi-valeurs |
|
Politiques de clé et politiques IAM |
Vous pouvez utiliser cette clé de condition pour contrôler l'accès à l'opération CreateGrant en fonction des opérations d'octroi dans la demande. Par exemple, vous pouvez autoriser un utilisateur à 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 d'octroi dans la demande doit correspondre à une opération d'octroi 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 pas d'opérations d'octrois dans la demande, mais
CreateGrant
ne le permet 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 autoriser un utilisateur à 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:user/ExampleUser" }, "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
kms:GranteePrincipal
Clés de condition AWS KMS | Type de condition | Type de la valeur | Opérations d'API | Type de politique |
---|---|---|---|---|
|
Chaîne |
À valeur unique |
|
Politiques de clé et IAM |
Vous pouvez utiliser cette clé de condition pour contrôler l'accès à l'opération CreateGrant en fonction de la valeur du paramètre GranteePrincipal dans la demande. Par exemple, vous pouvez autoriser un utilisateur à créer des octrois pour utiliser une clé KMS uniquement lorsque le principal bénéficiaire dans la demande CreateGrant
correspond au principal spécifié dans l'instruction de condition.
L'exemple d'instruction de politique de clé suivant utilise la clé de condition kms:GranteePrincipal
pour autoriser un utilisateur à 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:user/ExampleUser" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:GranteePrincipal": "arn:aws:iam::111122223333:role/LimitedAdminRole" } } }
Voir aussi
kms:KeyOrigin
Clés de condition AWS KMS | Type de condition | Type de la valeur | Opérations d'API | Type de politique |
---|---|---|---|---|
|
Chaîne |
À valeur unique |
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'opération CreateKey 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 autoriser un utilisateur à créer une clé KMS uniquement lorsque les éléments de clé sont générés dans AWS KMS (AWS_KMS
), dans un cluster AWS CloudHSM qui est associé à un magasin de clés personnalisé (AWS_CLOUDHSM
), ou lorsque les éléments de clé sont importés depuis une source externe (EXTERNAL
).
L'exemple d'instruction de politique de clé suivant utilise la clé de condition kms:KeyOrigin
pour autoriser un utilisateur à créer une clé KMS uniquement lorsque AWS KMS crée les éléments de clé.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringEquals": { "kms:KeyOrigin": "AWS_KMS" } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "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
kms:KeySpec
Clés de condition AWS KMS | Type de condition | Opérations d'API | Type de politique |
---|---|---|---|
|
Chaîne |
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'opération CreateKey en fonction de la valeur du paramètre KeySpec dans une demande CreateKey
. 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
kms:KeyUsage
Clés de condition AWS KMS | Type de condition | Opérations d'API | Type de politique |
---|---|---|---|
|
Chaîne |
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'opération CreateKey en fonction de la valeur du paramètre KeyUsage dans la demande. Les valeurs valides pour KeyUsage
sont ENCRYPT_DECRYPT
, SIGN_VERIFY
et GENERATE_VERIFY_MAC
.
Par exemple, vous pouvez autoriser un utilisateur à 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 autoriser un utilisateur à 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
kms:MacAlgorithm
Clés de condition AWS KMS | Type de condition | Type de la valeur | Opérations d'API | Type de politique |
---|---|---|---|---|
|
Chaîne |
À valeur unique |
|
Politiques de clé et politiques IAM |
Vous pouvez utiliser la clé de condition kms:MacAlgorithm
pour contrôler l'accès aux opérations GenerateMac et VerifyMac en fonction de la valeur du paramètre MacAlgorithm
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
kms:MessageType
Clés de condition AWS KMS | Type de condition | Type de la valeur | Opérations d'API | Type de politique |
---|---|---|---|---|
|
Chaîne |
À valeur unique |
|
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
pour permettre à un utilisateur 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:user/ExampleUser" }, "Action": "kms:Sign", "Resource": "*", "Condition": { "StringEquals": { "kms:MessageType": "RAW" } } }
Voir aussi
kms:MultiRegion
Clés de condition AWS KMS | Type de condition | Opérations d'API | Type de politique |
---|---|---|---|
|
Booléen |
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 condition kms:MultiRegion
contrôle l'accès aux opérations AWS KMS sur les clés KMS et aux opérations CreateKey en fonction de la valeur de la propriété MultiRegion
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 } } }
kms:MultiRegionKeyType
Clés de condition AWS KMS | Type de condition | Opérations d'API | Type de politique |
---|---|---|---|
|
Chaîne |
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 condition kms:MultiRegionKeyType
contrôle l'accès aux opérations AWS KMS sur les clés KMS et l'opération CreateKey en fonction de la propriété MultiRegionKeyType
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 AWS spé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 condition kms:MultiRegion est recommandée à cette fin.
kms:PrimaryRegion
Clés de condition AWS KMS | Type de condition | Opérations d'API | Type de politique |
---|---|---|---|
|
Chaîne (liste) |
|
Politiques de clé et politiques IAM |
Vous pouvez utiliser cette clé de condition pour limiter les régions de destination dans une opération UpdatePrimaryRegion. Voici les Régions AWS qui peuvent héberger vos clés primaires multi-région.
La clé de condition kms:PrimaryRegion
contrôle l'accès à l'opération UpdatePrimaryRegion en fonction de la valeur du paramètre PrimaryRegion
. Le paramètre PrimaryRegion
spécifie le Région AWS de la clé de réplica multi-région qui est promue en clé primaire. La valeur de la condition est un ou plusieurs noms de Région AWS, tels que us-east-1
ou ap-southeast-2
, ou modèles de noms de régions, 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" ] } } }
kms:ReEncryptOnSameKey
Clés de condition AWS KMS | Type de condition | Type de la valeur | Opérations d'API | Type de politique |
---|---|---|---|---|
|
Booléen |
À valeur unique |
|
Politiques de clé et politiques IAM |
Vous pouvez utiliser cette clé de condition pour contrôler l'accès à l'opération ReEncrypt selon que la demande spécifie ou non une clé KMS de destination qui est 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 autoriser un utilisateur à 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:user/ExampleUser" }, "Action": "kms:ReEncrypt*", "Resource": "*", "Condition": { "Bool": { "kms:ReEncryptOnSameKey": true } } }
kms:RequestAlias
Clés de condition AWS KMS | Type de condition | Type de la valeur | Opérations d'API | Type de politique |
---|---|---|---|---|
|
Chaîne (liste) |
À valeur unique |
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'opération GenerateRandom, car l'opération n'utilise pas de clé KMS ou d'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 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, l'instruction de politique de clé suivante autorise le principal à appeler l'opération GenerateDataKey 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 CreateAlias ou 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.
kms:ResourceAliases
Clés de condition AWS KMS | Type de condition | Type de la valeur | Opérations d'API | Type de politique |
---|---|---|---|---|
|
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 un Compte AWS et une région, 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 de comparaison StringLike
) ou à plusieurs clés KMS dans plusieurs Régions AWS de chaque compte.
La condition kms:ResourceAliases est efficace uniquement lorsque la clé KMS est conforme au quota d'alias par 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 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 de 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, l'instruction de politique IAM suivante permet au principal d'appeler l'opération GenerateDataKey sur toute clé KMS dans le Compte AWS spécifié associé à l'alias finance-key
. (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*" ] } } }
kms:ReplicaRegion
Clés de condition AWS KMS | Type de condition | Opérations d'API | Type de politique |
---|---|---|---|
|
Chaîne (liste) |
|
Politiques de clé et politiques IAM |
Vous pouvez utiliser cette clé de condition pour limiter les Régions AWS dans lesquelles un principal peut répliquer une clé muti-régions. La clé de condition kms:ReplicaRegion
contrôle l'accès à l'opération ReplicateKey en fonction de la valeur du paramètre ReplicaRegion de 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 noms de Région AWS, tels que us-east-1
ou ap-southeast-2
, ou modèles de noms, tels que eu-*
. Pour obtenir la liste des noms de Régions AWS prises en charge par AWS KMS, veuillez consulter Points de terminaison et quotas AWS Key Management Service dans Référence générale AWS.
Par exemple, l'instruction de politique de clé suivante utilise la clé de condition kms:ReplicaRegion
pour autoriser les principaux à appeler l'opération ReplicateKey uniquement lorsque la valeur du paramètre ReplicaRegion
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'opération ReplicateKey. Pour contrôler l'accès à l'opération UpdatePrimaryRegion, utilisez la clé de condition kms:PrimaryRegion.
kms:RetiringPrincipal
Clés de condition AWS KMS | Type de condition | Type de la valeur | Opérations d'API | Type de politique |
---|---|---|---|---|
|
Chaîne (liste) |
À valeur unique |
|
Politiques de clé et politiques IAM |
Vous pouvez utiliser cette clé de condition pour contrôler l'accès à l'opération CreateGrant en fonction de la valeur du paramètre RetiringPrincipal dans la demande. Par exemple, vous pouvez autoriser un utilisateur à créer des octrois d'utilisation d'une clé KMS uniquement lorsque le RetiringPrincipal
dans la demande CreateGrant
correspond au RetiringPrincipal
spécifié dans l'instruction de condition.
L'exemple suivant de politique de clé autorise un utilisateur à créer des octrois pour la clé KMS. La clé de condition kms:RetiringPrincipal
restreint l'autorisation aux demandes CreateGrant
, lorsque le principal de retrait dans l'octroi est l'utilisateur LimitedAdminRole
ou OpsAdmin
.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:RetiringPrincipal": [ "arn:aws:iam::111122223333:role/LimitedAdminRole", "arn:aws:iam::111122223333:user/OpsAdmin" ] } } }
Voir aussi
kms:SigningAlgorithm
Clés de condition AWS KMS | Type de condition | Type de la valeur | Opérations d'API | Type de politique |
---|---|---|---|---|
|
Chaîne |
À valeur unique |
|
Politiques de clé et politiques IAM |
Vous pouvez utiliser la clé de condition kms:SigningAlgorithm
pour contrôler l'accès aux opérations Sign et Verify en fonction de la valeur du paramètre SigningAlgorithm 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étriques 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
kms:ValidTo
Clés de condition AWS KMS | Type de condition | Type de la valeur | Opérations d'API | Type de politique |
---|---|---|---|---|
|
Horodatage |
À valeur unique |
|
Politiques de clé et politiques IAM |
La clé de condition kms:ValidTo
contrôle l'accès à l'opération ImportKeyMaterial en fonction de la valeur du paramètre ValidTo dans la demande, qui détermine quand l'élément de clé expire. 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 paramètre ExpirationModel est KEY_MATERIAL_DOES_NOT_EXPIRE
, le paramètre ValidTo
n'est pas valide. Vous pouvez également utiliser la condition de clé kms:ExpirationModel pour exiger le paramètre ExpirationModel
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:user/ExampleUser" }, "Action": "kms:ImportKeyMaterial", "Resource": "*", "Condition": { "NumericLessThanEquals": { "kms:ValidTo": "1546257599.0" } } }
Voir aussi
kms:ViaService
Clés de condition AWS KMS | Type de condition | Type de la valeur | Opérations d'API | Type de politique |
---|---|---|---|---|
|
Chaîne |
À valeur unique |
Opérations liées aux ressources de clé KMS |
Politiques de clé et politiques IAM |
La clé de condition kms:ViaService
limite l'utilisation d'une AWS KMS key AWS KMS (clé KMS) aux demandes provenant de services AWS spécifiés. 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 ExampleUser
.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:ListGrants", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "ec2.us-west-2.amazonaws.com", "rds.us-west-2.amazonaws.com" ] } } }
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 ExampleUser
.
{ "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": [ "kms:Encrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "lambda.us-west-2.amazonaws.com" ] } } }
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 plus d'informations, consultez Comment les services AWS utilisent AWS KMS.
-
L'autorisation d'utiliser le service intégré. Pour plus d'informations sur l'attribution aux utilisateurs de l'accès à un service AWS qui s'intègre à AWS KMS, consultez la documentation relative au 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 afficher la politique de clé d'une Clé gérée par AWS, utilisez l'opération GetKeyPolicy.
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 KMSkms:ViaService
.
Services prenant en charge la clé de condition kms:ViaService
Le tableau suivant répertorie les services AWS intégrés à AWS KMS et prenant en charge l'utilisation de la clé de condition kms:ViaService
dans les clés gérées par le client. Les services de ce tableau sont susceptibles de ne pas être disponibles dans toutes les régions. Utilisez le suffixe .amazonaws.com
du nom ViaService AWS KMS dans toutes les partitions AWS.
Vous devrez peut-être faire défiler horizontalement ou verticalement pour voir toutes les données de ce tableau.
Nom du service | Nom ViaService AWS KMS |
---|---|
AWS App Runner | apprunner. |
Amazon AppFlow | appflow. |
Amazon Application Migration Service | mgn. |
Amazon Athena | athena. |
AWS Audit Manager | auditmanager. |
Amazon Aurora | rds. |
AWS Backup | backup. |
Passerelle AWS Backup | backup-gateway. |
AWS CodeArtifact | codeartifact. |
Amazon CodeGuru Reviewer | codeguru-reviewer. |
Amazon Comprehend | comprehend. |
Amazon Connect | connect. |
Amazon Connect Customer Profiles | profile. |
Amazon Connect Wisdom | wisdom. |
AWS Database Migration Service (AWS DMS) | dms. |
AWS Directory Service | directoryservice. |
Amazon DynamoDB | dynamodb. |
Amazon EC2 Systems Manager (SSM) | ssm. |
Amazon Elastic Block Store (Amazon EBS) | ec2. (EBS uniquement) |
Amazon Elastic Container Registry (Amazon ECR) | ecr. |
Amazon Elastic File System (Amazon EFS) | elasticfilesystem. |
Amazon Elastic Kubernetes Service (Amazon EKS) | eks. |
Amazon ElastiCache |
Inclure les deux noms ViaService dans la valeur clé de condition :
|
Service Amazon OpenSearch (Service OpenSearch) | es. |
AWS Elemental MediaTailor | mediatailor. |
Amazon FinSpace | finspace. |
Amazon Forecast | forecast. |
Amazon FSx | fsx. |
Amazon GuardDuty | malware-protection. |
AWS Glue | glue. |
Amazon HealthLake | healthlake. |
AWS IoT SiteWise | iotsitewise. |
Amazon Kendra | kendra. |
Amazon Keyspaces (for Apache Cassandra) | cassandra. |
Amazon Kinesis | kinesis. |
Amazon Kinesis 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. |
Amazon Managed Blockchain | managedblockchain. |
Amazon Managed Streaming for Apache Kafka (Amazon MSK) | kafka. |
Amazon Managed Workflows for Apache Airflow (MWAA) | airflow. |
Amazon MemoryDB | memorydb. |
Amazon Monitron | monitron. |
Amazon MQ | mq. |
Amazon Neptune | rds. |
Amazon Nimble Studio | nimble. |
AWS Proton | proton. |
Amazon Quantum Ledger Database (Amazon QLDB) | 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 (Amazon RDS) | rds. |
AWS Secrets Manager | secretsmanager. |
Amazon Simple Email Service (Amazon SES) | ses. |
Amazon Simple Notification Service (Amazon SNS) | sns. |
Amazon Simple Queue Service (Amazon SQS) | sqs. |
Amazon Simple Storage Service (Amazon S3) | s3. |
AWS Snowball | importexport. |
AWS Storage Gateway | storagegateway. |
AWS Systems Manager Incident Manager | ssm-incidents. |
Contacts AWS Systems Manager Incident Manager | ssm-contacts. |
Amazon Timestream | timestream. |
Amazon Translate | translate. |
Amazon WorkMail | workmail. |
Amazon WorkSpaces | workspaces. |
Amazon WorkSpaces Web | workspaces-web. |
AWS X-Ray | xray. |
kms:WrappingAlgorithm
Clés de condition AWS KMS | Type de condition | Type de la valeur | Opérations d'API | Type de politique |
---|---|---|---|---|
|
Chaîne |
À valeur unique |
|
Politiques de clé et politiques IAM |
Cette clé de condition contrôle l'accès à l'opération GetParametersForImport en fonction de la valeur du paramètre WrappingAlgorithm de 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:user/ExampleUser" }, "Action": "kms:GetParametersForImport", "Resource": "*", "Condition": { "StringNotEquals": { "kms:WrappingAlgorithm": "RSAES_OAEP_SHA_1" } } }
Voir aussi
kms:WrappingKeySpec
Clés de condition AWS KMS | Type de condition | Type de la valeur | Opérations d'API | Type de politique |
---|---|---|---|---|
|
Chaîne |
À valeur unique |
|
Politiques de clé et politiques IAM |
Cette clé de condition contrôle l'accès à l'opération GetParametersForImport en fonction de la valeur du paramètre WrappingKeySpec de 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_2048
.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:GetParametersForImport", "Resource": "*", "Condition": { "StringEquals": { "kms:WrappingKeySpec": "RSA_2048" } } }
Voir aussi
Clés de condition AWS KMS pour AWS Nitro Enclaves
AWS Nitro Enclaves est une fonctionnalité Amazon EC2 qui vous permet de créer des environnements de calcul isolés appelés enclaves pour protéger et traiter les données hautement sensibles. AWS KMS fournit des clés de condition pour prendre en charge AWS Nitro Enclaves. Ces clés de conditions ne fonctionnent que lorsqu'une demande d'opération AWS KMS provient d'une enclave.
Lorsque vous appelez les API kms-decrypt
, kms-generate-data-key
ou kms-generate-random
du kit SDK AWS Nitro Enclaves
Les clés de condition suivantes vous permettent de limiter les autorisations pour ces opérations en fonction du contenu du document d'attestation signé. Avant d'autoriser une opération, AWS KMS compare le document d'attestation de l'enclave aux valeurs de ces clés de condition AWS KMS.
kms:RecipientAttestation:ImageSha384
Clés de condition AWS KMS | Type de condition | Type de la valeur | Opérations d'API | Type de politique |
---|---|---|---|---|
|
Chaîne |
À valeur unique |
|
Politiques de clé et politiques IAM |
La clé de condition kms:RecipientAttestation:ImageSha384
autorise les demandes kms-decrypt
, kms-generate-data-key
et kms-generate-random
provenant d'une enclave uniquement lorsque le hachage de l'image du document d'attestation signé dans la demande correspond à la valeur de la clé de condition. La valeur ImageSha384
correspond au PCR[0] du document d'attestation. Cette clé de condition n'est efficace que lorsque vous appelez les API de kit SDK AWS Nitro Enclaves depuis une enclave.
Cette clé de condition est valide dans les instructions de politique de clé et les instructions de politique IAM, même si elle n'apparaît pas dans la console IAM ou dans la référence d'autorisations de service IAM.
Par exemple, l'instruction de politique de clé suivante autorise le rôle data-processing
à utiliser la clé KMS pour les opérations kms-decrypt
(Decrypt), kms-generate-data-key
(GenerateDataKey) et kms-generate-random
(GenerateRandom). La clé de condition kms:RecipientAttestation:ImageSha384
permet les opérations uniquement lorsque la valeur de hachage de l'image (PCR[0]) du document d'attestation de la demande correspond à la valeur de hachage de l'image de la condition.
Si la demande n'inclut aucun document d'attestation, l'autorisation est refusée, car cette condition n'est pas remplie.
{ "Sid" : "Enable enclave data processing", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:role/data-processing" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey", "kms:GenerateRandom" ], "Resource" : "*", "Condition": { "StringEqualsIgnoreCase": { "kms:RecipientAttestation:ImageSha384": "9fedcba8abcdef7abcdef6abcdef5abcdef4abcdef3abcdef2abcdef1abcdef1abcdef0abcdef1abcdef2abcdef3abcdef4abcdef5abcdef6abcdef7abcdef99" } } }
kms:RecipientAttestation:PCR<PCR_ID>
Clés de condition AWS KMS | Type de condition | Type de la valeur | Opérations d'API | Type de politique |
---|---|---|---|---|
|
Chaîne |
À valeur unique |
|
Politiques de clé et politiques IAM |
La clé de condition kms:RecipientAttestation:PCR<PCR_ID>
autorise les demandes kms-decrypt
, kms-generate-data-key
et kms-generate-random
provenant d'une enclave uniquement lorsque les registres de configuration de plateforme (PCR) du document d'attestation signé de la demande correspondent aux PCR de la clé de condition. Cette clé de condition n'est efficace que lorsque vous appelez les API de kit SDK AWS Nitro Enclaves depuis une enclave.
Cette clé de condition est valide dans les instructions de politique de clé et les instructions de politique IAM, même si elle n'apparaît pas dans la console IAM ou dans la référence d'autorisations de service IAM.
Pour spécifier une valeur PCR, utilisez le format suivant. Concaténez l'ID de PCR au nom de clé de condition. La valeur PCR doit être une chaîne hexadécimale en minuscules de 96 octets maximum.
"kms:RecipientAttestation:PCR
PCR_ID
": "PCR_value
"
Par exemple, la clé de condition suivante spécifie une valeur particulière pour PCR[1], qui correspond au hachage du noyau utilisé pour l'enclave et le processus d'amorçage.
kms:RecipientAttestation:PCR1: "0x1abcdef2abcdef3abcdef4abcdef5abcdef6abcdef7abcdef8abcdef9abcdef8abcdef7abcdef6abcdef5abcdef4abcdef3abcdef2abcdef1abcdef0abcde"
Par exemple, l'instruction de politique de clé suivante autorise le rôle data-processing
à utiliser la clé KMS pour l'opération kms-decrypt
(Decrypt).
La clé de condition kms:RecipientAttestation:PCR
de cette instruction autorise l'opération uniquement lorsque la valeur PCR1 du document d'attestation signé dans la demande correspond à la valeur kms:RecipientAttestation:PCR1
de la condition. Utilisez l'opérateur de politique StringEqualsIgnoreCase
pour exiger une comparaison insensible à la casse des valeurs PCR.
Si la demande n'inclut pas de document d'attestation, l'autorisation est refusée, car cette condition n'est pas remplie.
{ "Sid" : "Enable enclave data processing", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:role/data-processing" }, "Action": "kms:Decrypt", "Resource" : "*", "Condition": { "StringEqualsIgnoreCase": { "kms:RecipientAttestation:PCR1": "0x1de4f2dcf774f6e3b679f62e5f120065b2e408dcea327bd1c9dddaea6664e7af7935581474844767453082c6f1586116376cede396a30a39a611b9aad7966c87" } } }