À propos du fournisseur le plus récent - AWS Chiffrement des bases SDK

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.

À propos du fournisseur le plus récent

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, voir AWSDatabase Encryption SDK pour connaître la prise en charge des versions de DynamoDB.

Le fournisseur le plus récent est un fournisseur CMP conçu pour travailler avec un magasin de fournisseur. Il obtient les fournisseurs CMP auprès d'un magasin de fournisseur et les matériaux de chiffrement qu'il retourne auprès des CMP. Il utilise généralement chaque CMP pour répondre à plusieurs demandes de matériaux de chiffrement. Cependant, vous pouvez utiliser les fonctions de son magasin de fournisseur pour contrôler jusqu'à quelle mesure les matériaux sont réutilisés, déterminer la fréquence de rotation de son fournisseur CMP et, même, modifier le type de fournisseur CMP utilisé sans modifier le fournisseur le plus récent.

Note

Le code associé au MostRecentProvider symbole du fournisseur le plus récent peut stocker du matériel cryptographique en mémoire pendant toute la durée du processus. Cela peut permettre à un appelant d'utiliser des touches qu'il n'est plus autorisé à utiliser.

Le MostRecentProvider symbole est obsolète dans les anciennes versions prises en charge du client de chiffrement DynamoDB et a été supprimé de la version 2.0.0. Il est remplacé par le CachingMostRecentProvider symbole. Pour plus de détails, consultez Mises à jour apportées au fournisseur le plus récent.

Le fournisseur le plus récent constitue un bon choix pour les applications qui doivent minimiser les appels au magasin de fournisseur et à sa source de chiffrement, et pour les applications qui peuvent réutiliser certains matériaux de chiffrement sans enfreindre leurs exigences de sécurité. Par exemple, il vous permet de protéger vos documents cryptographiques sous un AWS KMS keyin AWS Key Management Service(AWS KMS) sans appeler AWS KMS chaque fois que vous cryptez ou déchiffrez un élément.

Le magasin de fournisseur que vous choisissez détermine le type de CMP que le fournisseur le plus récent utilise et à quelle fréquence il obtient un nouveau fournisseur CMP. Vous pouvez utiliser tout magasin de fournisseur compatible avec le fournisseur le plus récent, y compris les magasins de fournisseur personnalisés que vous concevez.

Le client de chiffrement DynamoDB inclut un MetaStorequi crée et renvoie des fournisseurs de matériaux encapsulés (Wrapped CMP). Il MetaStore enregistre plusieurs versions des CMP encapsulés qu'il génère dans une table DynamoDB interne et les protège à l'aide d'un chiffrement côté client effectué par une instance interne du client de chiffrement DynamoDB.

Vous pouvez configurer le MetaStore pour utiliser n'importe quel type de CMP interne pour protéger les éléments du tableau, notamment un fournisseur Direct KMS qui génère des matériaux cryptographiques protégés par votreAWS KMS key, un CMP encapsulé qui utilise les clés d'encapsulation et de signature que vous fournissez, ou un CMP personnalisé compatible que vous concevez.

Pour obtenir un exemple de code, consultez :

Comment l'utiliser

Pour créer un fournisseur le plus récent, vous devez créer et configurer un magasin de fournisseur, puis créer un fournisseur le plus récent qui utilise le magasin de fournisseur.

Les exemples suivants montrent comment créer un fournisseur le plus récent qui utilise MetaStore et protège les versions de sa table DynamoDB interne à l'aide de documents cryptographiques provenant d'un fournisseur Direct KMS. Ces exemples utilisent le CachingMostRecentProvidersymbole.

Chaque fournisseur le plus récent possède un nom qui identifie ses CMP dans le MetaStore tableau, un paramètre time-to-live(TTL) et un paramètre de taille du cache qui détermine le nombre d'entrées que le cache peut contenir. Ces exemples définissent la taille du cache à 1 000 entrées et à une valeur TTL de 60 secondes.

Java
// Set the name for MetaStore's internal table final String keyTableName = 'metaStoreTable' // Set the Region and AWS KMS key final String region = 'us-west-2' final String keyArn = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' // Set the TTL and cache size final long ttlInMillis = 60000; final long cacheSize = 1000; // Name that identifies the MetaStore's CMPs in the provider store final String materialName = 'testMRP' // Create an internal DynamoDB client for the MetaStore final AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.standard().withRegion(region).build(); // Create an internal Direct KMS Provider for the MetaStore final AWSKMS kms = AWSKMSClientBuilder.standard().withRegion(region).build(); final DirectKmsMaterialProvider kmsProv = new DirectKmsMaterialProvider(kms, keyArn); // Create an item encryptor for the MetaStore, // including the Direct KMS Provider final DynamoDBEncryptor keyEncryptor = DynamoDBEncryptor.getInstance(kmsProv); // Create the MetaStore final MetaStore metaStore = new MetaStore(ddb, keyTableName, keyEncryptor); //Create the Most Recent Provider final CachingMostRecentProvider cmp = new CachingMostRecentProvider(metaStore, materialName, ttlInMillis, cacheSize);
Python
# Designate an AWS KMS key kms_key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' # Set the name for MetaStore's internal table meta_table_name = 'metaStoreTable' # Name that identifies the MetaStore's CMPs in the provider store material_name = 'testMRP' # Create an internal DynamoDB table resource for the MetaStore meta_table = boto3.resource('dynamodb').Table(meta_table_name) # Create an internal Direct KMS Provider for the MetaStore kms_cmp = AwsKmsCryptographicMaterialsProvider(key_id=kms_key_id) # Create the MetaStore with the Direct KMS Provider meta_store = MetaStore( table=meta_table, materials_provider=kms_cmp ) # Create a Most Recent Provider using the MetaStore # Sets the TTL (in seconds) and cache size (# entries) most_recent_cmp = MostRecentProvider( provider_store=meta_store, material_name=material_name, version_ttl=60.0, cache_size=1000 )

Comment ça marche

Le fournisseur le plus récent obtient les fournisseurs CMP auprès d'un magasin de fournisseur. Puis, il utilise le fournisseur CMP pour générer les matériaux de chiffrement qu'il retourne au chiffreur d'élément.

À propos du fournisseur le plus récent

Le fournisseur le plus récent obtient un fournisseur CMP à partir d'un magasin de fournisseur. Puis, il utilise le fournisseur CMP pour générer les matériaux de chiffrement qu'il retourne. Chaque fournisseur le plus récent est associé à un magasin de fournisseur, mais un magasin de fournisseur peut fournir les CMP à plusieurs fournisseurs répartis sur plusieurs hôtes.

Le fournisseur le plus récent peut travailler avec n'importe quel fournisseur CMP compatible d'un magasin de fournisseur. Il demande du matériel de chiffrement ou de déchiffrement au CMP et renvoie le résultat au chiffreur d'articles. Il n'effectue pas d'opération de chiffrement.

Pour demander un fournisseur CMP auprès de son magasin de fournisseur, le fournisseur le plus récent fournit son nom de matériau et la version d'un fournisseur CMP existant qu'il veut utiliser. Pour les matériaux de chiffrement, le fournisseur le plus récent demande toujours la version maximale (la « plus récente »). Pour les matériaux de chiffrement, il demande la version du fournisseur CMP qui a été utilisée pour créer les matériaux de chiffrement, comme illustré dans le diagramme suivant.

Fournisseur le plus récent

Le fournisseur le plus récent enregistre les versions des fournisseurs CMP que le magasin de fournisseur retourne dans un cache LRU (Least Recently Used) local en mémoire. Le cache permet au fournisseur le plus récent d'obtenir les fournisseurs CMP dont il a besoin sans appeler le magasin de fournisseur pour chaque élément. Vous pouvez effacer le cache à la demande.

Le fournisseur le plus récent utilise une time-to-livevaleur configurable que vous pouvez ajuster en fonction des caractéristiques de votre application.

À propos de la MetaStore

Vous pouvez utiliser un fournisseur le plus récent avec n'importe quel magasin de fournisseur, y compris un magasin de fournisseur personnalisé compatible. Le client de chiffrement DynamoDB inclut une MetaStore implémentation sécurisée que vous pouvez configurer et personnaliser.

A MetaStoreest un magasin fournisseur qui crée et renvoie des CMP encapsulés configurés avec la clé d'encapsulation, la clé de désencapsulage et la clé de signature requises par les CMP encapsulés. A MetaStore est une option sécurisée pour le fournisseur le plus récent, car les CMP encapsulés génèrent toujours des clés de chiffrement uniques pour chaque article. Seule la clé d'encapsulation qui protège la clé de chiffrement d'élément et la clé de signature sont réutilisées.

Le schéma suivant montre les composants du fournisseur le plus récent MetaStore et la manière dont il interagit avec celui-ci.

Un MetaStore

MetaStoreGénère les CMP encapsulés, puis les stocke (sous forme cryptée) dans une table DynamoDB interne. La clé de partition est le nom du matériel du fournisseur le plus récent ; la clé de tri correspond au numéro de version. Les éléments du tableau sont protégés par un client de chiffrement DynamoDB interne, notamment un crypteur d'éléments et un fournisseur de matériel cryptographique interne (CMP).

Vous pouvez utiliser n'importe quel type de CMP interne dans votreMetaStore, y compris un fournisseur Direct KMS, un CMP encapsulé avec les matériaux cryptographiques que vous fournissez ou un CMP personnalisé compatible. Si le CMP interne de votre fournisseur MetaStore est un fournisseur Direct KMS, vos clés d'encapsulation et de signature réutilisables sont protégées par un AWS KMS keyin AWS Key Management Service(AWS KMS). Les MetaStore appels AWS KMS chaque fois qu'il ajoute une nouvelle version CMP à sa table interne ou obtient une version CMP à partir de sa table interne.

Définition d'une time-to-live valeur

Vous pouvez définir une valeur time-to-live (TTL) pour chaque fournisseur le plus récent que vous créez. En général, utilisez la valeur TTL la plus faible possible pour votre application.

L'utilisation de la valeur TTL est modifiée dans le CachingMostRecentProvider symbole du fournisseur le plus récent.

Note

Le MostRecentProvider symbole du fournisseur le plus récent est obsolète dans les anciennes versions prises en charge du client de chiffrement DynamoDB et a été supprimé de la version 2.0.0. Il est remplacé par le CachingMostRecentProvider symbole. Nous vous recommandons de mettre à jour votre code dès que possible. Pour plus de détails, consultez Mises à jour apportées au fournisseur le plus récent.

CachingMostRecentProvider

CachingMostRecentProviderUtilise la valeur TTL de deux manières différentes.

  • La TTL détermine la fréquence à laquelle le fournisseur le plus récent vérifie la présence d'une nouvelle version du CMP dans le magasin des fournisseurs. Si une nouvelle version est disponible, le fournisseur le plus récent remplace son CMP et actualise ses documents cryptographiques. Dans le cas contraire, elle continue d'utiliser son CMP et son matériel cryptographique actuels.

  • Le TTL détermine la durée pendant laquelle les CMP du cache peuvent être utilisés. Avant d'utiliser un CMP mis en cache pour le chiffrement, le fournisseur le plus récent évalue le temps qu'il a passé dans le cache. Si la durée du cache CMP dépasse le TTL, le CMP est expulsé du cache et le fournisseur le plus récent obtient un nouveau CMP de dernière version depuis son magasin de fournisseurs.

MostRecentProvider

Dans leMostRecentProvider, la TTL détermine la fréquence à laquelle le fournisseur le plus récent vérifie la présence d'une nouvelle version du CMP dans le magasin des fournisseurs. Si une nouvelle version est disponible, le fournisseur le plus récent remplace son CMP et actualise ses documents cryptographiques. Dans le cas contraire, elle continue d'utiliser son CMP et son matériel cryptographique actuels.

Le TTL ne détermine pas la fréquence de création d'une nouvelle version CMP. Vous créez de nouvelles versions du CMP en faisant pivoter les matériaux cryptographiques.

La valeur TTL idéale varie en fonction de l'application et de ses objectifs de latence et de disponibilité. Un TTL inférieur améliore votre profil de sécurité en réduisant la durée pendant laquelle les documents cryptographiques sont stockés en mémoire. De plus, un TTL plus faible actualise les informations critiques plus fréquemment. Par exemple, si votre CMP interne est un fournisseur Direct KMS, il vérifie plus fréquemment que l'appelant est toujours autorisé à utiliser un. AWS KMS key

Toutefois, si le TTL est trop court, les appels fréquents vers le magasin du fournisseur peuvent augmenter vos coûts et amener ce dernier à limiter les demandes provenant de votre application et d'autres applications partageant votre compte de service. Il peut également être utile de coordonner le TTL avec la vitesse à laquelle vous faites pivoter les documents cryptographiques.

Pendant les tests, modifiez le TTL et la taille du cache en fonction de différentes charges de travail jusqu'à ce que vous trouviez une configuration adaptée à votre application et à vos normes de sécurité et de performances.

Rotation des matériaux de chiffrement

Lorsqu'un fournisseur le plus récent a besoin de matériel de chiffrement, il utilise toujours la version la plus récente de son CMP dont il a connaissance. La fréquence à laquelle il vérifie la présence d'une version plus récente est déterminée par la valeur time-to-live(TTL) que vous avez définie lorsque vous configurez le fournisseur le plus récent.

Lorsque le TTL expire, le fournisseur le plus récent vérifie la présence d'une version plus récente du CMP dans le magasin des fournisseurs. S'il en existe un, le fournisseur le plus récent l'obtient et remplace le CMP dans son cache. Il utilise ce CMP et ses matériaux cryptographiques jusqu'à ce qu'il découvre que le fournisseur dispose d'une version plus récente.

Pour demander au magasin de fournisseur de créer une version d'un CMP pour un fournisseur le plus récent, appelez l'opération Create New Provider du magasin de fournisseur avec le nom de matériau du fournisseur le plus récent. Le magasin de fournisseur crée un CMP et enregistre une copie chiffrée dans son stockage interne avec un numéro de version supérieur. (Il retourne aussi un CMP, mais vous pouvez l'ignorer.) Par conséquent, la prochaine fois que le fournisseur le plus récent demandera au magasin de fournisseurs le numéro de version maximal de ses CMP, il obtiendra le nouveau numéro de version supérieur et l'utilisera dans les demandes suivantes adressées au magasin pour voir si une nouvelle version du CMP a été créée.

Vous pouvez planifier vos appels Create New Provider en fonction de l'heure, du nombre d'éléments ou d'attributs traités, ou de toute autre métrique qui revêt un sens pour votre application.

Obtention des matériaux de chiffrement

Le fournisseur le plus récent utilise le processus suivant, illustré dans le diagramme, pour obtenir les matériaux de chiffrement qu'il retourne au chiffreur d'élément. La sortie dépend du type de fournisseur CMP que le magasin de fournisseur retourne. Le fournisseur le plus récent peut utiliser n'importe quel magasin de fournisseurs compatible, y compris MetaStore celui inclus dans le client de chiffrement DynamoDB.

Entrée, traitement et sortie du fournisseur le plus récent dans le client de chiffrement DynamoDB

Lorsque vous créez un fournisseur le plus récent à l'aide du CachingMostRecentProvidersymbole, vous spécifiez un magasin de fournisseurs, un nom pour le fournisseur le plus récent et une valeur time-to-live(TTL). Vous pouvez également éventuellement spécifier une taille de cache, qui détermine le nombre maximum de matériaux cryptographiques pouvant exister dans le cache.

Quand le chiffreur d'élément demande au fournisseur le plus récent les matériaux de chiffrement, le fournisseur le plus récent commence par chercher dans le cache le dernier numéro de version de ses fournisseurs CMP.

  • S'il trouve la dernière version du CMP dans son cache et que le CMP n'a pas dépassé la valeur TTL, le fournisseur le plus récent utilise le CMP pour générer des documents de chiffrement. Puis, il retourne les matériaux de chiffrement au chiffreur d'élément. Cette opération ne requiert pas d'appel au magasin de fournisseur.

  • Si la dernière version du CMP ne figure pas dans son cache, ou si elle se trouve dans le cache mais a dépassé sa valeur TTL, le fournisseur le plus récent demande un CMP à partir de son magasin de fournisseurs. La demande inclut le nom de matériau du fournisseur le plus récent et le numéro de version maximal qu'il connaît.

    1. Le magasin de fournisseur retourne un fournisseur CMP à partir de son stockage permanent. Si le magasin de fournisseurs est unMetaStore, il obtient un CMP encapsulé crypté à partir de sa table DynamoDB interne en utilisant le nom du matériau du fournisseur le plus récent comme clé de partition et le numéro de version comme clé de tri. Il MetaStore utilise son crypteur d'éléments interne et son CMP interne pour déchiffrer le Wrapped CMP. Ensuite, il retourne le fournisseur CMP en texte brut au fournisseur le plus récent. Si le CMP interne est un fournisseur KMS direct, cette étape inclut un appel de AWS Key Management Service (AWS KMS).

    2. Le fournisseur CMP ajoute le champ amzn-ddb-meta-id à la description du matériau réel. Sa valeur est le nom de matériau et la version du CMP dans sa table interne. Le magasin de fournisseur retourne le fournisseur CMP au fournisseur le plus récent.

    3. Le fournisseur le plus récent met en cache mémoire le fournisseur CMP.

    4. Le fournisseur le plus récent utilise le fournisseur CMP pour générer les matériaux de chiffrement. Puis, il retourne les matériaux de chiffrement au chiffreur d'élément.

Obtention des matériaux de déchiffrement

Quand le chiffreur d'élément demande au fournisseur le plus récent les matériaux de chiffrement, le fournisseur le plus récent utilise le processus suivant pour les obtenir et les retourner.

  1. Le fournisseur le plus récent demande au magasin de fournisseur le numéro de version des matériaux de chiffrement utilisés pour chiffrer l'élément. Il transmet la description du matériau réel depuis l'attribut de description du matériau de l'élément.

  2. Le magasin de fournisseur obtient le numéro de version du CMP en charge du chiffrement auprès du champ amzn-ddb-meta-id de la description du matériau réel et le retourne au fournisseur le plus récent.

  3. Le fournisseur le plus récent recherche dans son cache le numéro de version du CMP utilisé pour chiffrer et signer l'élément.

  • S'il trouve que la version correspondante du CMP se trouve dans son cache et que le CMP n'a pas dépassé la valeur time-to-live (TTL), le fournisseur le plus récent utilise le CMP pour générer des documents de déchiffrement. Puis, il retourne les matériaux de déchiffrement au chiffreur d'élément. Cette opération ne requiert pas d'appel au magasin de fournisseur ou à un autre fournisseur CMP.

  • Si la version correspondante du CMP ne figure pas dans son cache, ou si la version mise en cache AWS KMS key a dépassé sa valeur TTL, le fournisseur le plus récent demande un CMP auprès de son magasin de fournisseurs. Il envoie le nom de matériau et le numéro de version du CMP de chiffrement dans la demande.

    1. Le magasin de fournisseur recherche dans le stockage permanent le fournisseur CMP en utilisant le nom du fournisseur le plus récent comme clé de partition et le numéro de version comme clé de tri.

      • Si le nom et le numéro de version ne sont pas dans le stockage permanent, le magasin de fournisseur lève une exception. Si le magasin de fournisseur a été utilisé pour générer le CMP, celui-ci doit être stocké dans son stockage permanent, à moins qu'il ne soit intentionnellement supprimé.

      • Si le CMP avec le nom et le numéro de version correspondants se trouve dans le stockage permanent du magasin de fournisseur, celui-ci retourne le CMP spécifié au fournisseur le plus récent.

        Si le magasin du fournisseur est unMetaStore, il obtient le CMP chiffré à partir de sa table DynamoDB. Puis, il utilise les matériaux de chiffrement de son fournisseur CMP interne pour déchiffrer le CMP chiffré avant de retourner le fournisseur CMP au fournisseur le plus récent. Si le CMP interne est un fournisseur KMS direct, cette étape inclut un appel de AWS Key Management Service (AWS KMS).

    2. Le fournisseur le plus récent met en cache mémoire le fournisseur CMP.

    3. Le fournisseur le plus récent utilise le fournisseur CMP pour générer les matériaux de déchiffrement. Puis, il retourne les matériaux de déchiffrement au chiffreur d'élément.

Mises à jour apportées au fournisseur le plus récent

Le symbole du fournisseur le plus récent est remplacé par MostRecentProviderCachingMostRecentProvider.

Note

Le MostRecentProvider symbole, qui représente le fournisseur le plus récent, est obsolète dans la version 1.15 du client de chiffrement DynamoDB pour Java et dans la version 1.3 du client de cryptage DynamoDB pour Python et a été supprimé des versions 2.0.0 du client de chiffrement DynamoDB dans les deux implémentations linguistiques. Utilisez plutôt leCachingMostRecentProvider.

CachingMostRecentProviderImplémente les modifications suivantes :

  • Supprime CachingMostRecentProvider régulièrement les documents cryptographiques de la mémoire lorsque leur durée en mémoire dépasse la valeur configurée time-to-live(TTL).

    Ils MostRecentProvider peuvent stocker du matériel cryptographique en mémoire pendant toute la durée de vie du processus. Par conséquent, le fournisseur le plus récent n'est peut-être pas au courant des modifications d'autorisation. Il peut utiliser des clés de chiffrement une fois que les autorisations de l'appelant à les utiliser ont été révoquées.

    Si vous ne parvenez pas à effectuer la mise à jour vers cette nouvelle version, vous pouvez obtenir un effet similaire en appelant régulièrement la clear() méthode dans le cache. Cette méthode vide manuellement le contenu du cache et oblige le fournisseur le plus récent à demander un nouveau CMP et de nouveaux matériaux cryptographiques.

  • CachingMostRecentProviderIl inclut également un paramètre de taille du cache qui vous permet de mieux contrôler le cache.

Pour effectuer la mise à jour vers leCachingMostRecentProvider, vous devez modifier le nom du symbole dans votre code. À tous les autres égards, le CachingMostRecentProvider est entièrement rétrocompatible avec leMostRecentProvider. Il n'est pas nécessaire de crypter à nouveau les éléments du tableau.

Toutefois, cela CachingMostRecentProvider génère davantage d'appels vers l'infrastructure clé sous-jacente. Il appelle le magasin du fournisseur au moins une fois par intervalle time-to-live (TTL). Les applications comportant de nombreuses CMP actives (en raison d'une rotation fréquente) ou les applications impliquant de grands parcs de véhicules sont les plus susceptibles d'être sensibles à ce changement.

Avant de publier votre code mis à jour, testez-le minutieusement pour vous assurer que les appels les plus fréquents n'altèrent pas votre application ou n'entraînent pas de blocage par des services dont dépend votre fournisseur, tels que AWS Key Management Service (AWS KMS) ou Amazon DynamoDB. Pour atténuer les problèmes de performances, ajustez la taille du cache et la time-to-live de CachingMostRecentProvider en fonction des caractéristiques de performances que vous observez. Pour de plus amples informations, consultez Définition d'une time-to-live valeur.