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.
Chiffrement et déchiffrement secrets dans AWS Secrets Manager
Secrets Manager utilise le chiffrement d'enveloppe avec les clés AWS KMS et des clés de données pour protéger les valeurs de secret. Chaque fois que la valeur secrète d'un secret change, Secrets Manager demande une nouvelle clé de données à AWS KMS pour le protéger. La clé de données est chiffrée sous une clé KMS et ensuite stockée dans les métadonnées du secret. Pour déchiffrer le secret, Secrets Manager déchiffre d'abord la clé de données chiffrée à l'aide de la clé KMS dans. AWS KMS
Secrets Manager n'utilise pas la clé KMS pour chiffrer la valeur du secret directement. Au lieu de cela, il utilise la clé KMS pour générer et chiffrer une symétrique AES (Advanced Encryption Standard) 256 bits Clé de données et utilise la clé de données pour chiffrer la valeur du secret. Secrets Manager utilise la clé de données en texte brut pour chiffrer la valeur secrète en dehors de AWS KMS, puis la supprime de la mémoire. Il stocke la copie chiffrée de la clé de données dans les métadonnées du secret.
Rubriques
Choisir une AWS KMS clé
Lorsque vous créez un secret, vous pouvez choisir n'importe quelle clé de chiffrement symétrique gérée par le client dans la région Compte AWS et, ou vous pouvez utiliser le Clé gérée par AWS for Secrets Manager (aws/secretsmanager
). Si vous choisissez le Clé gérée par AWS
aws/secretsmanager
et qu'il n'existe pas encore, Secrets Manager le crée et l'associe au secret. Vous pouvez utiliser la même clé KMS ou d'autres clés KMS pour chaque secret dans votre compte. Vous pouvez utiliser différentes clés KMS pour définir des autorisations personnalisées sur les clés d'un groupe de secrets, ou si vous souhaitez contrôler des opérations spécifiques pour ces clés. Secrets Manager ne prend en charge que les clés KMS de chiffrement symétriques. Si vous utilisez une clé KMS dans une boutique de clés externe, les opérations cryptographiques sur la clé KMS peuvent prendre plus de temps et être moins fiables et durables, car la demande doit être transmise à l'extérieur d' AWS.
Pour plus d'informations sur la modification de la clé de chiffrement d'un secret, consultez la section Modifier la clé de chiffrement d'un AWS Secrets Manager secret.
Lorsque vous modifiez la clé de chiffrement, Secrets Manager le chiffre à nouveau AWSCURRENT
et AWSPENDING
les AWSPREVIOUS
versions utilisant la nouvelle clé. Pour ne pas vous empêcher d'accéder au secret, Secrets Manager crypte toutes les versions existantes avec la clé précédente. Cela signifie que vous pouvez déchiffrer AWSCURRENT
AWSPENDING
les AWSPREVIOUS
versions avec la clé précédente ou la nouvelle clé. Si vous n'êtes pas kms:Decrypt
autorisé à accéder à la clé précédente, lorsque vous modifiez la clé de chiffrement, Secrets Manager ne peut pas déchiffrer les versions secrètes pour les rechiffrer. Dans ce cas, les versions existantes ne sont pas rechiffrées.
Pour qu'il ne AWSCURRENT
puisse être déchiffré que par la nouvelle clé de chiffrement, créez une nouvelle version du secret avec la nouvelle clé. Ensuite, pour pouvoir déchiffrer la version AWSCURRENT
secrète, vous devez avoir l'autorisation d'utiliser la nouvelle clé.
Vous pouvez refuser l'autorisation Clé gérée par AWS aws/secretsmanager
et exiger que les secrets soient chiffrés à l'aide d'une clé gérée par le client. Pour de plus amples informations, veuillez consulter Exemple : refuser une AWS KMS clé spécifique pour chiffrer des secrets.
Pour trouver la clé KMS associée à un secret, consultez le secret dans la console ou appelez ListSecretsou DescribeSecret. Lorsque le secret est associé au Clé gérée par AWS for Secrets Manager (aws/secretsmanager
), ces opérations ne renvoient pas d'identifiant de clé KMS.
Qu'est-ce qui est chiffré ?
Secrets Manager chiffre la valeur secrète, mais il ne chiffre pas les éléments suivants :
-
Le nom et la description du secret
-
Paramètres de rotation
-
L'ARN de la clé KMS associée au secret
-
Toutes les AWS étiquettes jointes
Processus de chiffrement et déchiffrement
Pour chiffrer la valeur de secret dans un secret, Secrets Manager utilise le processus suivant.
-
Secrets Manager appelle l' AWS KMS GenerateDataKeyopération en indiquant l'ID de la clé KMS associée au secret et en demandant une clé symétrique AES 256 bits. AWS KMS renvoie une clé de données en texte brut et une copie de cette clé de données chiffrée sous la clé KMS.
-
Secrets Manager utilise la clé de données en texte brut et l'algorithme Advanced Encryption Standard (AES) pour chiffrer la valeur secrète en dehors de. AWS KMS Il supprime la clé en texte brut de la mémoire dès que possible après l'avoir utilisée.
-
Secrets Manager stocke la clé de données chiffrée dans les métadonnées du secret afin qu'elle soit disponible pour déchiffrer la valeur du secret. Cependant, aucun des Secrets Manager ne APIs renvoie le secret chiffré ou la clé de données chiffrée.
Pour déchiffrer une valeur de secret chiffrée :
-
Secrets Manager lance l'opération de AWS KMS déchiffrement et transmet la clé de données chiffrée.
-
AWS KMS utilise la clé KMS comme secret pour déchiffrer la clé de données. Il renvoie la clé de données en texte brut.
-
Secrets Manager utilise la clé de données en texte brut pour déchiffrer la valeur du secret. Puis il supprime la clé de données de la mémoire dès que possible.
Autorisations pour la clé KMS
Lorsque Secrets Manager utilise une clé KMS dans les opérations de chiffrement, il agit au nom de l'utilisateur qui accède à la valeur de secret ou la met à jour. Vous pouvez accorder ces autorisations dans une politique IAM ou une stratégie de clé. Les opérations suivantes de Secrets Manager nécessitent AWS KMS des autorisations.
Pour autoriser l'utilisation de la clé KMS uniquement pour les demandes provenant de Secrets Manager, dans la politique d'autorisations, vous pouvez utiliser la clé de ViaService condition kms : avec la secretsmanager.
valeur.<Region>
.amazonaws.com
Vous pouvez également utiliser les clés ou les valeurs du contexte de chiffrement comme condition d'utilisation de la clé KMS pour les opérations de chiffrement. Par exemple, vous pouvez utiliser un opérateur de condition de chaîne dans un document de stratégie IAM ou de clé, ou utiliser une contrainte d'octroi dans un octroi. La propagation des autorisations de clés KMS peut prendre jusqu'à cinq minutes. Pour de plus amples informations, veuillez consulter CreateGrant.
Comment Secrets Manager utilise votre clé KMS
Secrets Manager effectue les AWS KMS opérations suivantes à l'aide de votre clé KMS.
- GenerateDataKey
-
Secrets Manager appelle l' AWS KMS GenerateDataKeyopération en réponse aux opérations suivantes du Gestionnaire de secrets.
-
CreateSecret— Si le nouveau secret inclut une valeur secrète, Secrets Manager demande une nouvelle clé de données pour le chiffrer.
-
PutSecretValue— Secrets Manager demande une nouvelle clé de données pour chiffrer la valeur secrète spécifiée.
-
ReplicateSecretToRegions— Pour chiffrer le secret répliqué, Secrets Manager demande une clé de données pour la clé KMS dans la région de réplication.
-
UpdateSecret— Si vous modifiez la valeur secrète ou la clé KMS, Secrets Manager demande une nouvelle clé de données pour chiffrer la nouvelle valeur secrète.
L'RotateSecretopération n'appelle pas
GenerateDataKey
, car elle ne modifie pas la valeur secrète. Toutefois, siRotateSecret
invoque une fonction de rotation Lambda qui modifie la valeur du secret, son appel à l'opérationPutSecretValue
déclenche une requêteGenerateDataKey
. -
- Decrypt
-
Secrets Manager appelle l'opération Decrypt en réponse aux opérations Secrets Manager.
-
GetSecretValueet BatchGetSecretValue— Secrets Manager déchiffre la valeur secrète avant de la renvoyer à l'appelant. Pour déchiffrer une valeur secrète chiffrée, Secrets Manager appelle l'opération AWS KMS Decrypt pour déchiffrer la clé de données chiffrée contenue dans le secret. Ensuite, il utilise la clé de données en texte brut pour déchiffrer la valeur du secret chiffrée. Pour les commandes par lots, Secrets Manager peut réutiliser la clé déchiffrée, de sorte que tous les appels n'aboutissent pas à une demande
Decrypt
. -
PutSecretValueet UpdateSecret— La plupart des
UpdateSecret
demandesPutSecretValue
et ne déclenchent aucuneDecrypt
opération. Toutefois, lorsqu'une demandePutSecretValue
ouUpdateSecret
tente de modifier la valeur de secret dans une version existante d'un secret, Secrets Manager déchiffre la valeur du secret existante et la compare à la valeur du secret dans la demande afin de confirmer qu'elles sont identiques. Cette action permet de s'assurer que les opérations de Secrets Manager sont idempotentes. Pour déchiffrer une valeur secrète chiffrée, Secrets Manager appelle l'opération AWS KMS Decrypt pour déchiffrer la clé de données chiffrée contenue dans le secret. Ensuite, il utilise la clé de données en texte brut pour déchiffrer la valeur du secret chiffrée. -
ReplicateSecretToRegions— Secrets Manager déchiffre d'abord la valeur secrète dans la région principale avant de la rechiffrer avec la clé KMS dans la région de réplication.
-
- Encrypt
-
Secrets Manager appelle l'opération Encrypt en réponse aux opérations suivantes de Secrets Manager :
-
UpdateSecret— Si vous modifiez la clé KMS, Secrets Manager chiffre à nouveau la clé de données qui protège les versions
AWSCURRENT
AWSPREVIOUS
, etAWSPENDING
secrète avec la nouvelle clé. -
ReplicateSecretToRegions— Secrets Manager chiffre à nouveau la clé de données lors de la réplication à l'aide de la clé KMS dans la région de réplication.
-
- DescribeKey
-
Secrets Manager lance l'DescribeKeyopération pour déterminer s'il convient de répertorier la clé KMS lorsque vous créez ou modifiez un secret dans la console Secrets Manager.
- Validation de l'accès à la clé KMS
-
Lorsque vous établissez ou modifiez la clé KMS associée au secret,
GenerateDataKey
appelle les opérations Secrets Manager etDecrypt
avec la clé KMS spécifiée. Ces appels confirment que l'appelant a l'autorisation d'utiliser la clé KMS pour ces opérations. Secrets Manager ignore les résultats de ces opérations ; il ne les utilise pas dans les opérations de chiffrement.Vous pouvez identifier ces appels de validation, car la valeur de la clé
SecretVersionId
de contexte de chiffrement dans ces requêtes estRequestToValidateKeyAccess
.Note
Par le passé, les appels de validation Secrets Manager n'incluaient pas de contexte de chiffrement. Il est possible que vous trouviez des appels sans contexte de chiffrement dans les anciens AWS CloudTrail journaux.
Stratégie de clé de Clé gérée par AWS
(aws/secretsmanager
)
La politique clé du Clé gérée par AWS for Secrets Manager (aws/secretsmanager
) autorise les utilisateurs à utiliser la clé KMS pour des opérations spécifiques uniquement lorsque Secrets Manager fait la demande au nom de l'utilisateur. La politique de clé n'autorise pas les utilisateurs à utiliser la clé KMS directement.
Cette politique de clé, comme les politiques de toutes les Clés gérées par AWS, est établie par le service. Vous ne pouvez pas modifier la politique de clé, mais vous pouvez l'afficher à tout moment. Pour plus d'informations, consultez Affichage d'une stratégie de clé.
Les instructions de politique de la politique de clé ont l'effet suivant :
-
Elles autorisent les utilisateurs du compte à utiliser la clé KMS pour les opérations de chiffrement uniquement lorsque la demande vient de Secrets Manager en leur nom. La clé de condition
kms:ViaService
applique cette restriction. -
Permet au AWS compte de créer des politiques IAM qui permettent aux utilisateurs de consulter les propriétés des clés KMS et de révoquer les autorisations.
-
Bien que Secrets Manager n'utilise pas d'octrois pour obtenir l'accès à la clé KMS, la stratégie autorise également Secrets Manager à créer des octrois pour la clé KMS au nom de l'utilisateur et autorise le compte à révoquer tous les octrois qui autorisent Secrets Manager à utiliser la clé KMS. Ce sont des éléments standard du document de politique pour un Clé gérée par AWS.
Voici une politique clé à titre d'exemple Clé gérée par AWS pour Secrets Manager.
{ "Id": "auto-secretsmanager-2", "Version": "2012-10-17", "Statement": [ { "Sid": "Allow access through AWS Secrets Manager for all principals in the account that are authorized to use AWS Secrets Manager", "Effect": "Allow", "Principal": { "AWS": [ "*" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:CallerAccount": "111122223333", "kms:ViaService": "secretsmanager.us-west-2.amazonaws.com" } } }, { "Sid": "Allow access through AWS Secrets Manager for all principals in the account that are authorized to use AWS Secrets Manager", "Effect": "Allow", "Principal": { "AWS": [ "*" ] }, "Action": "kms:GenerateDataKey*", "Resource": "*", "Condition": { "StringEquals": { "kms:CallerAccount": "111122223333" }, "StringLike": { "kms:ViaService": "secretsmanager.us-west-2.amazonaws.com" } } }, { "Sid": "Allow direct access to key metadata to the account", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root" ] }, "Action": [ "kms:Describe*", "kms:Get*", "kms:List*", "kms:RevokeGrant" ], "Resource": "*" } ] }
Contexte de chiffrement de Secrets Manager
Un contexte de chiffrement est un ensemble de paires clé-valeur contenant des données arbitraires non secrètes. Lorsque vous incluez un contexte de chiffrement dans une demande de chiffrement de données, lie AWS KMS cryptographiquement le contexte de chiffrement aux données chiffrées. Pour déchiffrer les données, vous devez transmettre le même contexte de chiffrement.
Dans ses requêtes GenerateDataKeyet Decrypt à AWS KMS, Secrets Manager utilise un contexte de chiffrement avec deux paires nom-valeur qui identifient le secret et sa version, comme illustré dans l'exemple suivant. Les noms ne varient pas, mais les valeurs de contexte de chiffrement combinées sont différentes pour chaque valeur de secret.
"encryptionContext": { "SecretARN": "arn:aws:secretsmanager:us-east-2:111122223333:secret:test-secret-a1b2c3", "SecretVersionId": "EXAMPLE1-90ab-cdef-fedc-ba987SECRET1" }
Vous pouvez utiliser le contexte de chiffrement pour identifier ces opérations cryptographiques dans les enregistrements et journaux d'audit, tels que AWS CloudTrailAmazon CloudWatch Logs, et comme condition d'autorisation dans les politiques et les autorisations.
Le contexte de chiffrement Secrets Manager se compose de deux paires nom-valeur.
-
SecretARN – La première paire nom–valeur identifie le secret. La clé est
SecretARN
. La valeur est l'Amazon Resource Name (ARN) du secret."SecretARN": "
ARN of an Secrets Manager secret
"Par exemple si l'ARN du secret est
arn:aws:secretsmanager:us-east-2:111122223333:secret:test-secret-a1b2c3
, le contexte de chiffrement inclura la paire suivante."SecretARN": "arn:aws:secretsmanager:us-east-2:111122223333:secret:test-secret-a1b2c3"
-
SecretVersionId— La deuxième paire nom-valeur identifie la version du secret. La clé est
SecretVersionId
. La valeur est l'ID de version."SecretVersionId": "
<version-id>
"Par exemple si l'ID de version du secret est
EXAMPLE1-90ab-cdef-fedc-ba987SECRET1
, le contexte de chiffrement inclura la paire suivante."SecretVersionId": "EXAMPLE1-90ab-cdef-fedc-ba987SECRET1"
Lorsque vous définissez ou modifiez la clé KMS d'un secret, Secrets Manager envoie GenerateDataKeyet déchiffre des demandes AWS KMS pour valider que l'appelant est autorisé à utiliser la clé KMS pour ces opérations. Il ignore les réponses ; il ne les utilise pas sur la valeur du secret.
Dans le cadre de ces requêtes de validation, la valeur de SecretARN
est l'ARN réel du secret, mais la valeur de SecretVersionId
est RequestToValidateKeyAccess
, comme illustré dans l'exemple de contexte de chiffrement suivant. Cette valeur spéciale vous permet d'identifier les requêtes de validation dans les journaux et les pistes d'audit.
"encryptionContext": { "SecretARN": "arn:aws:secretsmanager:us-east-2:111122223333:secret:test-secret-a1b2c3", "SecretVersionId": "RequestToValidateKeyAccess" }
Note
Par le passé, les demandes de validation Secrets Manager n'incluaient pas de contexte de chiffrement. Il est possible que vous trouviez des appels sans contexte de chiffrement dans les anciens AWS CloudTrail journaux.
Surveillez l'interaction de Secrets Manager avec AWS KMS
Vous pouvez utiliser AWS CloudTrail Amazon CloudWatch Logs pour suivre les demandes que Secrets Manager envoie AWS KMS en votre nom. Pour plus d'informations sur la surveillance de l'utilisation des secrets, voir Surveillez AWS Secrets Manager les secrets.
- GenerateDataKey
-
Lorsque vous créez ou modifiez la valeur secrète d'un secret, Secrets Manager envoie une GenerateDataKeydemande AWS KMS indiquant la clé KMS du secret.
L'événement qui enregistre l'opération
GenerateDataKey
est similaire à l'exemple d'événement suivant. La requête est appelée parsecretsmanager.amazonaws.com
. Les paramètres incluent le nom Amazon Resource Name (ARN) de la clé KMS du secret, un spécificateur de clé qui nécessite une clé de 256 bits, et le contexte de chiffrement qui identifie le secret et la version.{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AROAIGDTESTANDEXAMPLE:user01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-05-31T23:23:41Z" } }, "invokedBy": "secretsmanager.amazonaws.com" }, "eventTime": "2018-05-31T23:23:41Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-east-2", "sourceIPAddress": "secretsmanager.amazonaws.com", "userAgent": "secretsmanager.amazonaws.com", "requestParameters": { "keyId": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "keySpec": "AES_256", "encryptionContext": { "SecretARN": "arn:aws:secretsmanager:us-east-2:111122223333:secret:test-secret-a1b2c3", "SecretVersionId": "EXAMPLE1-90ab-cdef-fedc-ba987SECRET1" } }, "responseElements": null, "requestID": "a7d4dd6f-6529-11e8-9881-67744a270888", "eventID": "af7476b6-62d7-42c2-bc02-5ce86c21ed36", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333" }
- Decrypt
-
Lorsque vous obtenez ou modifiez la valeur secrète d'un secret, Secrets Manager envoie une demande de déchiffrement AWS KMS pour déchiffrer la clé de données chiffrée. Pour les commandes par lots, Secrets Manager peut réutiliser la clé déchiffrée, de sorte que tous les appels n'aboutissent pas à une demande
Decrypt
.L'événement qui enregistre l'opération
Decrypt
est similaire à l'exemple d'événement suivant. L'utilisateur est le principal de votre AWS compte qui accède à la table. Les paramètres incluent la clé de table chiffrée (sous forme de blob de texte chiffré) et le contexte de chiffrement qui identifie la table et le compte. AWS AWS KMS déduit l'ID de la clé KMS à partir du texte chiffré.{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AROAIGDTESTANDEXAMPLE:user01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-05-31T23:36:09Z" } }, "invokedBy": "secretsmanager.amazonaws.com" }, "eventTime": "2018-05-31T23:36:09Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-east-2", "sourceIPAddress": "secretsmanager.amazonaws.com", "userAgent": "secretsmanager.amazonaws.com", "requestParameters": { "encryptionContext": { "SecretARN": "arn:aws:secretsmanager:us-east-2:111122223333:secret:test-secret-a1b2c3", "SecretVersionId": "EXAMPLE1-90ab-cdef-fedc-ba987SECRET1" } }, "responseElements": null, "requestID": "658c6a08-652b-11e8-a6d4-ffee2046048a", "eventID": "f333ec5c-7fc1-46b1-b985-cbda13719611", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333" }
- Encrypt
-
Lorsque vous modifiez la clé KMS associée à un secret, Secrets Manager envoie une demande de chiffrement AWS KMS pour rechiffrer les versions
AWSCURRENT
AWSPREVIOUS
, etAWSPENDING
secrète avec la nouvelle clé. Lorsque vous répliquez un secret vers une autre région, Secrets Manager envoie également une demande Encrypt à AWS KMS.L'événement qui enregistre l'opération
Encrypt
est similaire à l'exemple d'événement suivant. L'utilisateur est le principal de votre AWS compte qui accède à la table.{ "eventVersion": "1.08", "userIdentity": { "type": "IAMUser", "principalId": "AROAIGDTESTANDEXAMPLE:user01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "attributes": { "creationDate": "2023-06-09T18:11:34Z", "mfaAuthenticated": "false" } }, "invokedBy": "secretsmanager.amazonaws.com" }, "eventTime": "2023-06-09T18:11:34Z", "eventSource": "kms.amazonaws.com", "eventName": "Encrypt", "awsRegion": "us-east-2", "sourceIPAddress": "secretsmanager.amazonaws.com", "userAgent": "secretsmanager.amazonaws.com", "requestParameters": { "keyId": "arn:aws:kms:us-east-2:111122223333:key/EXAMPLE1-f1c8-4dce-8777-aa071ddefdcc", "encryptionAlgorithm": "SYMMETRIC_DEFAULT", "encryptionContext": { "SecretARN": "arn:aws:secretsmanager:us-east-2:111122223333:secret:ChangeKeyTest-5yKnKS", "SecretVersionId": "EXAMPLE1-5c55-4d7c-9277-1b79a5e8bc50" } }, "responseElements": null, "requestID": "129bd54c-1975-4c00-9b03-f79f90e61d60", "eventID": "f7d9ff39-15ab-47d8-b94c-56586de4ab68", "readOnly": true, "resources": [ { "accountId": "AWS Internal", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/EXAMPLE1-f1c8-4dce-8777-aa071ddefdcc" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }