Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
AWS KMS politique clé et autorisations pour chiffrer les résultats de CloudFormation Hooks au repos
Cette rubrique explique comment configurer la politique de AWS KMS clés et les autorisations dont vous avez besoin lorsque vous spécifiez une clé gérée par le client pour chiffrer les données d'annotations Hooks disponibles depuis l'GetHookResultAPI.
Note
CloudFormation Hooks n'a pas besoin d'autorisation supplémentaire pour utiliser la valeur par défaut Clé détenue par AWS pour chiffrer les données d'annotations de votre compte.
Rubriques
Aperçu
Les éléments suivants AWS KMS keys peuvent être utilisés pour chiffrer les données d'annotations Hook :
-
Clé détenue par AWS— Par défaut, CloudFormation utilise un Clé détenue par AWS pour chiffrer les données. Vous ne pouvez ni afficher, ni gérer, ni utiliser Clés détenues par AWS, ni auditer leur utilisation. Cependant, il n'est pas nécessaire d'effectuer une configuration explicite pour protéger la clé utilisée pour chiffrer vos données. Clés détenues par AWS sont fournis gratuitement (sans frais mensuels ni frais d'utilisation). À moins que vous ne soyez obligé d'auditer ou de contrôler la clé de chiffrement qui protège les données de vos annotations, un Clé détenue par AWS est un bon choix.
-
Clé gérée par le client : CloudFormation prend en charge l'utilisation d'une clé symétrique gérée par le client que vous créez, détenez et gérez pour ajouter une deuxième couche de chiffrement à la clé existante Clé détenue par AWS. AWS KMS des frais s'appliquent. Pour plus d'informations, consultez Création des clés dans le Guide du développeur AWS Key Management Service . Pour gérer votre clé, utilisez le AWS Key Management Service (AWS KMS) dans la AWS KMS console
AWS CLI, le ou l' AWS KMS API. Pour plus d’informations, consultez le Manuel du développeur AWS Key Management Service.
Vous pouvez configurer les clés gérées par le client lors de la création et de la mise à jour des Hooks. Lorsque vous fournissez la clé gérée par le client, CloudFormation utilisez cette clé pour chiffrer les données d'annotations avant de les stocker. Lorsque les données d'annotations sont consultées ultérieurement pendant l'opération de l'GetHookResultAPI, les CloudFormation déchiffre automatiquement. Pour plus d'informations sur la configuration de votre clé de chiffrement pour les Hooks, consultezRéférence syntaxique du schéma de configuration Hook.
Important
Notez que l'KmsKeyIdoption permettant de spécifier une clé gérée par le client n'est actuellement disponible que lorsque vous utilisez le AWS CLI pour configurer votre Hook.
Utilisation du contexte de chiffrement pour contrôler l'accès à votre clé gérée par le client
CloudFormation Hooks inclut automatiquement le contexte de chiffrement à chaque opération de stockage et de récupération d'annotations. Cela vous permet de définir des conditions de contexte de chiffrement dans votre politique de clé afin de garantir que la clé ne peut être utilisée que pour des Hooks spécifiques :
-
kms:EncryptionContext:aws:cloudformation:hooks:service— Garantit que la clé n'est utilisée que par le service CloudFormation Hooks. -
kms:EncryptionContext:aws:cloudformation:account-id— Empêche l'utilisation de clés entre comptes en faisant correspondre votre Compte AWS identifiant. -
kms:EncryptionContext:aws:cloudformation:arn— Limitez l'utilisation à des Hooks spécifiques à l'aide de modèles d'ARN.
Ces conditions fournissent une protection supplémentaire contre les attaques secondaires confuses en liant cryptographiquement les données cryptées au contexte Hook spécifique.
Stratégie de clé KMS gérée par le client
Lorsque vous créez votre clé gérée par le client, vous devez définir sa politique clé pour permettre au service CloudFormation Hooks d'effectuer AWS KMS des opérations. Pour appliquer la politique clé suivante, remplacez-la placeholder values par vos propres informations.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnableIAMUserDescribeKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "cloudformation.us-east-1.amazonaws.com" } } }, { "Sid": "EnableIAMUserGenerateDataKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "cloudformation.us-east-1.amazonaws.com", "kms:EncryptionContext:aws:cloudformation:hooks:service": "hooks.cloudformation.amazonaws.com", "kms:EncryptionContext:aws:cloudformation:account-id": "111122223333" }, "StringLike": { "kms:EncryptionContext:aws:cloudformation:arn": "arn:aws:cloudformation:*:111122223333:hook/*" } } }, { "Sid": "EnableIAMUserDecrypt", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "cloudformation.us-east-1.amazonaws.com" } } }, { "Sid": "AllowHooksServiceDescribeKey", "Effect": "Allow", "Principal": { "Service": "hooks.cloudformation.amazonaws.com" }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "StringLike": { "aws:SourceArn": "arn:aws:cloudformation:*:111122223333:hook/*" } } }, { "Sid": "AllowHooksService", "Effect": "Allow", "Principal": { "Service": "hooks.cloudformation.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333", "kms:EncryptionContext:aws:cloudformation:hooks:service": "hooks.cloudformation.amazonaws.com", "kms:EncryptionContext:aws:cloudformation:account-id": "111122223333" }, "StringLike": { "aws:SourceArn": "arn:aws:cloudformation:*:111122223333:hook/*", "kms:EncryptionContext:aws:cloudformation:arn": "arn:aws:cloudformation:*:111122223333:hook/*" } } } ] }
Cette politique accorde des autorisations à la fois aux rôles IAM (trois premières instructions) et au service CloudFormation Hooks (deux dernières instructions). La clé de kms:ViaService condition garantit que la clé KMS ne peut être utilisée que par le biais CloudFormation, empêchant ainsi les appels directs à l'API KMS. Les principales opérations sont les suivantes :
-
kms:DescribeKey— Valide les propriétés et les métadonnées clés. Cette opération figure dans des instructions distinctes car elle ne peut pas être utilisée avec des conditions de contexte de chiffrement. -
kms:GenerateDataKey— Génère des clés de chiffrement des données pour chiffrer les annotations avant leur stockage. Cette opération inclut les conditions de contexte de chiffrement pour le contrôle d'accès délimité. -
kms:Decrypt— Déchiffre les données d'annotations précédemment chiffrées. Pour les rôles IAM, cela inclut lakms:ViaServicecondition. Pour le principal de service, cela inclut les conditions de contexte de chiffrement.
Les touches de aws:SourceArn condition aws:SourceAccount et fournissent la protection principale contre les attaques secondaires confuses. Les conditions de contexte de chiffrement fournissent des couches de validation supplémentaires. Pour plus d'informations, consultez la section Utilisation aws:SourceArn ou aws:SourceAccount condition des clés dans le Guide du AWS Key Management Service développeur.
Important
Les rôles d'exécution de Hook n'ont pas besoin d' AWS KMS autorisations. Le directeur du service CloudFormation Hooks effectue toutes les AWS KMS opérations.
Autorisations KMS pour SetTypeConfiguration l'API
Au cours de l'appel d'SetTypeConfigurationAPI, CloudFormation valide les autorisations de l'utilisateur pour chiffrer les données d'annotations avec la clé spécifiée. AWS KMS Ajoutez la politique IAM suivante à l'utilisateur ou au rôle qui configurera le chiffrement à l'aide de l'SetTypeConfigurationAPI. Remplacez-le par l'ARN de votre clé gérée par le client.arn:aws:kms:us-east-1:123456789012:key/abc-123
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cloudformation:SetTypeConfiguration", "Resource": "*" }, { "Effect": "Allow", "Action": "kms:DescribeKey", "Resource": "arn:aws:kms:us-east-1:123456789012:key/abc-123" }, { "Effect": "Allow", "Action": "kms:GenerateDataKey", "Resource": "arn:aws:kms:us-east-1:123456789012:key/abc-123", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:cloudformation:hooks:service": "hooks.cloudformation.amazonaws.com", "kms:EncryptionContext:aws:cloudformation:account-id": "123456789012" }, "StringLike": { "kms:EncryptionContext:aws:cloudformation:arn": "arn:aws:cloudformation:*:123456789012:hook/*" } } } ] }
Autorisations KMS pour GetHookResult l'API
GetHookResultPour appeler des Hooks qui utilisent votre clé gérée par le client, les utilisateurs doivent être kms:Decrypt autorisés à utiliser cette clé. Ajoutez la politique IAM suivante à l'utilisateur ou au rôle qui GetHookResult appellera. Remplacez-le par l'ARN de votre clé gérée par le client.arn:aws:kms:us-east-1:123456789012:key/abc-123
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cloudformation:GetHookResult", "Resource": "*" }, { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:us-east-1:123456789012:key/abc-123" } ] }