Fournisseur de matériaux KMS direct - AWS SDK de chiffrement de base de données

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.

Fournisseur de matériaux KMS direct

Note

Notre bibliothèque de chiffrement côté client a été renommée AWS Database Encryption SDK. La rubrique suivante fournit des informations sur les versions 1. x —2. x du client de chiffrement DynamoDB pour Java et versions 1. x —3. x du client de chiffrement DynamoDB pour Python. Pour plus d'informations, consultez le SDK AWS Database Encryption pour connaître la prise en charge des versions de DynamoDB.

Le fournisseur de matériaux Direct KMS (fournisseur Direct KMS) protège les éléments de votre table sous et AWS KMS keyqui ne sortent jamais AWS Key Management Service(AWS KMS) non chiffrés. Le fournisseur CMP retourne une clé de chiffrement et une clé de signature uniques pour chaque élément de table. Pour ce faire, il appelle AWS KMS chaque fois que vous chiffrez ou déchiffrez un élément.

Si vous traitez des éléments DynamoDB à une fréquence élevée et à grande échelle, vous risquez de dépasser les AWS KMS requests-per-secondlimites, ce qui entraîne des retards de traitement. Si vous devez dépasser une limite, créez un dossier dans le AWS SupportCentre. Vous pouvez également envisager d'utiliser un fournisseur de matériel cryptographique dont la réutilisation des clés est limitée, tel que le fournisseur le plus récent.

Pour utiliser le fournisseur Direct KMS, l'appelant doit disposer d'au moins une Compte AWS autorisation lui AWS KMS key permettant d'appeler les opérations GenerateDataKeyet de déchiffrer sur le. AWS KMS key AWS KMS keyIl doit s'agir d'une clé de chiffrement symétrique ; le client de chiffrement DynamoDB ne prend pas en charge le chiffrement asymétrique. Si vous utilisez une table globale DynamoDB, vous souhaiterez peut-être spécifier une clé AWS KMSmultirégion. Pour plus de détails, consultez Comment l'utiliser.

Note

Lorsque vous utilisez le fournisseur Direct KMS, les noms et les valeurs de vos attributs de clé primaire apparaissent en texte clair dans le contexte de AWS KMS chiffrement et dans AWS CloudTrail les journaux des AWS KMS opérations associées. Toutefois, le client de chiffrement DynamoDB n'expose jamais le texte en clair des valeurs d'attributs chiffrées.

Le fournisseur Direct KMS est l'un des nombreux fournisseurs de matériel cryptographique (CMP) pris en charge par le client de chiffrement DynamoDB. Pour plus d'informations sur les autres CMP, consultez Fournisseur de matériel cryptographique.

Pour obtenir un exemple de code, consultez :

Comment l'utiliser

Pour créer un fournisseur Direct KMS, utilisez le paramètre key ID pour spécifier une clé KMS de chiffrement symétrique dans votre compte. La valeur du paramètre Key ID peut être l'ID de clé, l'ARN de clé, le nom d'alias ou l'ARN d'alias duAWS KMS key. Pour en savoir plus sur les identificateurs de clé, consultez la section Identifiants de clé dans le Guide du AWS Key Management Servicedéveloppeur.

Le fournisseur Direct KMS nécessite une clé KMS de chiffrement symétrique. Vous ne pouvez pas utiliser de clé KMS asymétrique. Toutefois, vous pouvez utiliser une clé KMS multirégionale, une clé KMS avec du matériel clé importé ou une clé KMS dans un magasin de clés personnalisé. Vous devez disposer des autorisations kms : GenerateDataKey et kms:decrypt sur la clé KMS. Vous devez donc utiliser une clé gérée par le client, et non une clé KMS AWS gérée ou AWS détenue.

Le client de chiffrement DynamoDB pour Python détermine la région AWS KMS à appeler depuis la région dans la valeur du paramètre Key ID, si elle en inclut une. Sinon, il utilise la région du AWS KMS client, si vous en spécifiez une, ou la région que vous configurez dans leAWS SDK for Python (Boto3). Pour plus d'informations sur la sélection des régions en Python, consultez la section Configuration dans la référence de l'API du AWS SDK pour Python (Boto3).

Le client de chiffrement DynamoDB pour Java détermine la région AWS KMS à appeler depuis la région du AWS KMS client, si le client que vous spécifiez inclut une région. Dans le cas contraire, il utilise la région que vous configurez dans leAWS SDK for Java. Pour plus d'informations sur la sélection des régions dans leAWS SDK for Java, voir la Région AWSsélection dans le Guide du AWS SDK for Java développeur.

Java
// Replace the example key ARN and Region with valid values for your application final String keyArn = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' final String region = 'us-west-2' final AWSKMS kms = AWSKMSClientBuilder.standard().withRegion(region).build(); final DirectKmsMaterialProvider cmp = new DirectKmsMaterialProvider(kms, keyArn);
Python

L'exemple suivant utilise la clé ARN pour spécifier leAWS KMS key. Si votre identifiant de clé n'inclut pas deRégion AWS, le client de chiffrement DynamoDB obtient la région à partir de la session Botocore configurée, s'il en existe une, ou à partir des paramètres par défaut de Boto.

# Replace the example key ID with a valid value kms_key = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' kms_cmp = AwsKmsCryptographicMaterialsProvider(key_id=kms_key)

Si vous utilisez des tables globales Amazon DynamoDB, nous vous recommandons de crypter vos données à l'aide d'une AWS KMS clé multirégion. Les clés multirégions sont AWS KMS keys différentes Régions AWS et peuvent être utilisées de manière interchangeable car elles ont le même identifiant de clé et le même matériau de clé. Pour plus de détails, consultez la section Utilisation de clés multirégionales dans le Guide du AWS Key Management Service développeur.

Note

Si vous utilisez la version 2017.11.29 des tables globales, vous devez définir des actions attributaires afin que les champs de réplication réservés ne soient ni chiffrés ni signés. Pour plus de détails, consultez Problèmes liés aux anciennes versions des tables globales.

Pour utiliser une clé multirégion avec le client de chiffrement DynamoDB, créez une clé multirégion et répliquez-la dans les régions dans lesquelles votre application s'exécute. Configurez ensuite le fournisseur Direct KMS pour qu'il utilise la clé multirégion dans la région dans laquelle le client de chiffrement DynamoDB appelle. AWS KMS

L'exemple suivant configure le client de chiffrement DynamoDB pour chiffrer les données dans la région USA Est (Virginie du Nord) (us-east-1) et les déchiffrer dans la région USA Ouest (Oregon) (us-west-2) à l'aide d'une clé multirégion.

Java

Dans cet exemple, le client de chiffrement DynamoDB obtient la région AWS KMS à appeler depuis la région du AWS KMS client. La keyArn valeur identifie une clé multirégionale dans la même région.

// Encrypt in us-east-1 // Replace the example key ARN and Region with valid values for your application final String usEastKey = 'arn:aws:kms:us-east-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab' final String region = 'us-east-1' final AWSKMS kms = AWSKMSClientBuilder.standard().withRegion(region).build(); final DirectKmsMaterialProvider cmp = new DirectKmsMaterialProvider(kms, usEastKey);
// Decrypt in us-west-2 // Replace the example key ARN and Region with valid values for your application final String usWestKey = 'arn:aws:kms:us-west-2:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab' final String region = 'us-west-2' final AWSKMS kms = AWSKMSClientBuilder.standard().withRegion(region).build(); final DirectKmsMaterialProvider cmp = new DirectKmsMaterialProvider(kms, usWestKey);
Python

Dans cet exemple, le client de chiffrement DynamoDB obtient la région à appeler AWS KMS à partir de la région figurant dans l'ARN clé.

# Encrypt in us-east-1 # Replace the example key ID with a valid value us_east_key = 'arn:aws:kms:us-east-1:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab' kms_cmp = AwsKmsCryptographicMaterialsProvider(key_id=us_east_key)
# Decrypt in us-west-2 # Replace the example key ID with a valid value us_west_key = 'arn:aws:kms:us-west-2:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab' kms_cmp = AwsKmsCryptographicMaterialsProvider(key_id=us_west_key)

Comment ça marche

Le fournisseur Direct KMS renvoie des clés de chiffrement et de signature qui sont protégées par un AWS KMS key code que vous spécifiez, comme illustré dans le schéma suivant.


        Entrée, traitement et sortie du fournisseur Direct KMS dans le client de chiffrement DynamoDB
  • Pour générer du matériel de chiffrement, le fournisseur Direct KMS demande de AWS KMS générer une clé de données unique pour chaque élément à l'aide d'une clé AWS KMS key que vous spécifiez. Il dérive les clés de chiffrement et de signature de l'élément depuis la copie en texte brut de la clé de données, puis retourne les clés de chiffrement et de signature, ainsi que la clé des données chiffrées, qui est stockée dans l'attribut de description de matériau de l'élément.

    Le chiffreur d'élément utilise les clés de chiffrement et de signature, et les supprime de la mémoire dès que possible. Seule la copie chiffrée de la clé de données à partir de laquelle elles ont été dérivées est enregistrée dans l'élément chiffré.

  • Pour générer les matériaux de déchiffrement, le fournisseur KMS direct demande à AWS KMS de déchiffrer la clé de données chiffrée. Puis, il dérive les clés de vérification et de signature de la clé de données en texte brut, et les retourne au chiffreur d'élément.

    Le chiffreur d'élément vérifie l'élément et, si la vérification aboutit, déchiffre les valeurs chiffrées. Puis, il supprime les clés de la mémoire dès que possible.

Obtention des matériaux de chiffrement

Cette section décrit en détail les entrées, les sorties et le traitement du fournisseur KMS direct quand il reçoit une demande de matériaux de chiffrement de la part du chiffreur d'élément.

Entrée (depuis l'application)

  • L'identifiant de clé d'unAWS KMS key.

Entrée (depuis le chiffreur d'élément)

Sortie (vers le chiffreur d'élément)

  • Clé de chiffrement (texte brut)

  • Clé de signature

  • Dans Description du matériau réel : ces valeurs sont enregistrées dans l'attribut de description du matériau que le client ajoute à l'élément.

    • amzn-ddb-env-key: clé de données codée en Base64 cryptée par AWS KMS key

    • amzn-ddb-env-alg: Algorithme de chiffrement, par défaut AES/256

    • amzn-ddb-sig-alg: Algorithme de signature, par défaut, HMacSHA256/256

    • amzn-ddb-wrap-alg: km

Traitement

  1. Le fournisseur Direct KMS envoie AWS KMS une demande d'utilisation de la valeur spécifiée AWS KMS key afin de générer une clé de données unique pour l'élément. L'opération retourne une clé en texte brut et une copie chiffrée sous la AWS KMS key. Ce matériau est appelé matériau de clé initial.

    La demande inclut les valeurs suivantes en texte brut dans le contexte de chiffrement AWS KMS. Ces valeurs non secrètes sont liées en termes de chiffrement à l'objet chiffré, si bien que le même contexte de chiffrement est requis au déchiffrement. Vous pouvez utiliser ces valeurs pour identifier l'appel de AWS KMS dans les journaux AWS CloudTrail.

    • amzn-ddb-env-alg— Algorithme de chiffrement, par défaut AES/256

    • amzn-ddb-sig-alg— Algorithme de signature, par défaut HMACSHA256/256

    • (Facultatif) aws-kms-table : nom de la table

    • (Facultatif) nom de la clé de partition : valeur de la clé de partition (les valeurs binaires sont codées en Base64)

    • (Facultatif) Nom de la clé de tri : valeur de la clé de tri (les valeurs binaires sont codées en Base64)

    Le fournisseur Direct KMS obtient les valeurs du contexte de AWS KMS chiffrement à partir du contexte de chiffrement DynamoDB de l'élément. Si le contexte de chiffrement DynamoDB n'inclut aucune valeur, telle que le nom de la table, cette paire nom-valeur est omise du contexte de chiffrement. AWS KMS

  2. Le fournisseur KMS direct dérive une clé de chiffrement symétrique et une clé de signature à partir de la clé de données. Par défaut, il utilise SHA (Secure Hash Algorithm) 256 et la fonction de dérivation de clé basée sur HMAC RFC5869 pour dériver une clé de chiffrement symétrique AES 256 bits et une clé de signature HMAC-SHA-256 256 bits.

  3. Le fournisseur KMS direct retourne la sortie du chiffreur d'élément.

  4. Le chiffreur d'élément utilise la clé de chiffrement pour chiffrer les attributs spécifiés et la clé de signature pour les signer, à l'aide des algorithmes spécifiés dans la description du matériau réel. Il supprime les clés en texte brut de la mémoire dès que possible.

Obtention des matériaux de déchiffrement

Cette section décrit en détail les entrées, les sorties et le traitement du fournisseur KMS direct quand il reçoit une demande de déchiffrement de matériaux de la part du chiffreur d'élément.

Entrée (depuis l'application)

  • L'identifiant de clé d'unAWS KMS key.

    La valeur de l'ID de clé peut être l'ID de clé, l'ARN de clé, le nom d'alias ou l'ARN d'alias duAWS KMS key. Toutes les valeurs qui ne sont pas incluses dans l'ID de clé, telles que la région, doivent être disponibles dans le AWSprofil indiqué. L'ARN clé fournit toutes les valeurs AWS KMS nécessaires.

Entrée (depuis le chiffreur d'élément)

Sortie (vers le chiffreur d'élément)

  • Clé de chiffrement (texte brut)

  • Clé de signature

Traitement

  1. Le fournisseur Direct KMS obtient la clé de données cryptée à partir de l'attribut de description du matériau dans l'élément crypté.

  2. Il demande à AWS KMS d'utiliser la AWS KMS key spécifiée pour déchiffrer la clé de données chiffrée. L'opération retourne une clé en texte brut.

    Cette demande doit utiliser le même contexte de chiffrement AWS KMS que celui utilisé pour générer et chiffrer la clé de données.

    • aws-kms-table— nom de la table

    • nom de la clé de partition : valeur de la clé de partition (les valeurs binaires sont codées en Base64)

    • (Facultatif) Nom de la clé de tri : valeur de la clé de tri (les valeurs binaires sont codées en Base64)

    • amzn-ddb-env-alg— Algorithme de chiffrement, par défaut AES/256

    • amzn-ddb-sig-alg— Algorithme de signature, par défaut HMACSHA256/256

  3. Le fournisseur KMS direct utilise SHA (Secure Hash Algorithm) 256 et la fonction de dérivation de clé basée sur HMAC RFC5869 pour dériver une clé de chiffrement symétrique AES 256 bits et une clé de signature HMAC-SHA-256 256 bits depuis la clé de données.

  4. Le fournisseur KMS direct retourne la sortie du chiffreur d'élément.

  5. Le chiffreur d'élément utilise la clé de signature pour vérifier l'élément. S'il réussit, il utilise la clé de chiffrement symétrique pour déchiffrer les valeurs d'attribut chiffrées. Ces opérations utilisent les algorithmes de chiffrement et de signature spécifiés dans la description du matériau réel. Le chiffreur d'élément supprime les clés en texte brut de la mémoire dès que possible.