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.
Porte-clés AWS KMS
Notre bibliothèque de chiffrement côté client a été renommée AWS Database Encryption SDK. Ce guide du développeur fournit toujours des informations sur le client de chiffrement DynamoDB. |
Un jeu de AWS KMS clés utilise un chiffrement symétrique ou un RSA asymétrique AWS KMS keyspour générer, chiffrer et déchiffrer des clés de données. AWS Key Management Service(AWS KMS) protège vos clés KMS et effectue des opérations cryptographiques dans les limites de la norme FIPS. Nous vous recommandons d'utiliser un AWS KMS porte-clés ou un porte-clés doté de propriétés de sécurité similaires, dans la mesure du possible.
Vous pouvez également utiliser une clé KMS multirégionale symétrique dans un AWS KMS porte-clés. Pour plus de détails et des exemples d'utilisation de Multi-regionAWS KMS keys, consultezUtilisation de plusieurs régions AWS KMS keys. Pour plus d'informations sur les clés multirégions, consultez la section Utilisation de clés multirégions dans le Guide du AWS Key Management Servicedéveloppeur.
AWS KMSles porte-clés peuvent inclure deux types de clés d'emballage :
-
Clé génératrice : génère une clé de données en texte brut et la chiffre. Un trousseau de clés qui chiffre des données doit comporter une clé génératrice.
-
Clés supplémentaires : chiffre la clé de données en texte brut générée par la clé du générateur. AWS KMSles porte-clés peuvent comporter zéro clé supplémentaire ou plus.
Vous devez disposer d'une clé génératrice pour crypter les enregistrements. Lorsqu'un jeu de AWS KMS clés ne comporte qu'une seule AWS KMS clé, cette clé est utilisée pour générer et crypter la clé de données.
Comme tous les porte-clés, les AWS KMS porte-clés peuvent être utilisés indépendamment ou dans un porte-clés multiple avec d'autres porte-clés du même type ou d'un type différent.
Rubriques
Autorisations requises pour les AWS KMS porte-clés
Le SDK AWS de chiffrement de base de données n'en nécessite pas Compte AWS et ne dépend d'aucunService AWS. Toutefois, pour utiliser un AWS KMS porte-clés, vous devez disposer Compte AWS des autorisations minimales suivantes sur le contenu de votre trousseau AWS KMS keys de clés.
-
Pour crypter avec un AWS KMS trousseau de clés, vous avez besoin de l'GenerateDataKeyautorisation kms : sur la clé du générateur. Vous devez disposer de l'autorisation KMS:Encrypt pour toutes les clés supplémentaires du trousseau de clés. AWS KMS
-
Pour déchiffrer à l'aide d'un jeu de AWS KMS clés, vous devez disposer de l'autorisation KMS:Decrypt sur au moins une clé du jeu de clés. AWS KMS
-
Pour crypter à l'aide d'un jeu de clés multiple composé de trousses de AWS KMS clés, vous avez besoin de l'GenerateDataKeyautorisation kms : sur la clé du générateur dans le trousseau de clés du générateur. Vous avez besoin de l'autorisation KMS:Encrypt sur toutes les autres clés de tous les autres ensembles de clés. AWS KMS
Pour obtenir des informations détaillées sur les autorisations pourAWS KMS keys, voir Authentification et contrôle d'accès dans le Guide du AWS Key Management Service développeur.
Identification de clés AWS KMS keys dans un porte-clés AWS KMS
Un AWS KMS porte-clés peut en comporter un ou plusieursAWS KMS keys. Pour spécifier un AWS KMS key dans un AWS KMS trousseau de clés, utilisez un identifiant de AWS KMS clé compatible. Les identificateurs de clé que vous pouvez utiliser pour identifier un élément AWS KMS key dans un jeu de clés varient en fonction du fonctionnement et de l'implémentation du langage. Pour plus d'informations sur les identificateurs clés d'unAWS KMS key, consultez la section Identifiants clés du Guide du AWS Key Management Servicedéveloppeur.
La meilleure pratique consiste à utiliser l'identifiant de clé le plus spécifique adapté à votre tâche.
-
Pour chiffrer à l'aide d'un jeu de AWS KMS clés, vous pouvez utiliser un ID de clé, un ARN de clé, un nom d'alias ou un ARN d'alias pour crypter les données.
Note
Si vous spécifiez un nom d'alias ou un ARN d'alias pour une clé KMS dans un jeu de clés de chiffrement, l'opération de chiffrement enregistre l'ARN de clé actuellement associé à l'alias dans les métadonnées de la clé de données cryptée. Il n'enregistre pas l'alias. Les modifications apportées à l'alias n'affectent pas la clé KMS utilisée pour déchiffrer vos clés de données cryptées.
-
Pour déchiffrer à l'aide d'un AWS KMS trousseau de clés, vous devez utiliser un ARN de clé pour vous identifier. AWS KMS keys Pour plus de détails, consultez Sélection des clés d'emballage.
-
Dans un porte-clés utilisé pour le chiffrement et le déchiffrement, vous devez utiliser un ARN de clé pour identifier les AWS KMS keys.
Lors du déchiffrement, le SDK AWS Database Encryption recherche dans le jeu de AWS KMS clés une clé capable de déchiffrer l'une AWS KMS key des clés de données cryptées. Plus précisément, le SDK AWS de chiffrement de base de données utilise le modèle suivant pour chaque clé de données cryptée figurant dans la description du matériel.
-
Le SDK AWS Database Encryption obtient l'ARN de la clé AWS KMS key qui a chiffré la clé de données à partir des métadonnées de la description du matériau.
-
Le SDK AWS Database Encryption recherche dans le jeu de clés de déchiffrement AWS KMS key un ARN correspondant.
-
S'il trouve un AWS KMS key ARN correspondant dans le jeu de clés, le SDK de chiffrement de AWS base de données demande AWS KMS à utiliser la clé KMS pour déchiffrer la clé de données cryptée.
-
Dans le cas contraire, il passe à la clé de données chiffrée suivante, le cas échéant.
Création d'un AWS KMS porte-clés
Vous pouvez configurer chaque AWS KMS porte-clés avec un seul AWS KMS key ou plusieurs porte-clés AWS KMS keys dans le même Comptes AWS et Régions AWS ou dans un autre. AWS KMS keyIl doit s'agir d'une clé de chiffrement symétrique (SYMMETRIC_DEFAULT
) ou d'une clé RSA KMS asymétrique. Vous pouvez également utiliser une clé KMS multirégionale à chiffrement symétrique. Vous pouvez utiliser un ou plusieurs AWS KMS porte-clés dans un porte-clés multiple.
Vous pouvez créer un jeu de AWS KMS clés qui chiffre et déchiffre des données, ou vous pouvez créer des trousses de AWS KMS clés spécifiquement pour le chiffrement ou le déchiffrement. Lorsque vous créez un jeu de AWS KMS clés pour chiffrer des données, vous devez spécifier une clé génératrice, AWS KMS key qui est utilisée pour générer une clé de données en texte brut et la chiffrer. La clé de données n'est mathématiquement pas liée à la clé KMS. Ensuite, si vous le souhaitez, vous pouvez spécifier des AWS KMS keys supplémentaires qui chiffrent la même clé de données en texte brut. Pour déchiffrer un champ crypté protégé par ce jeu de clés, le jeu de clés de déchiffrement que vous utilisez doit inclure au moins l'un des éléments AWS KMS keys définis dans le jeu de clés, ou non. AWS KMS keys (Un AWS KMS porte-clés sans aucun AWS KMS keys est connu sous le nom de porte-clés de AWS KMS découverte.)
Toutes les clés d'encapsulation d'un jeu de clés de chiffrement ou d'un jeu de clés multiple doivent pouvoir crypter la clé de données. Si une clé d'encapsulation ne parvient pas à chiffrer, la méthode de chiffrement échoue. Par conséquent, l'appelant doit disposer des autorisations requises pour toutes les clés du trousseau de clés. Si vous utilisez un jeu de clés de découverte pour chiffrer des données, seul ou dans un jeu de clés multiple, l'opération de chiffrement échoue.
L'exemple Java suivant utilise une CreateAwsKmsMrkMultiKeyring
méthode pour créer un jeu de AWS KMS clés avec une clé KMS de chiffrement symétrique. La CreateAwsKmsMrkMultiKeyring
méthode garantit que le porte-clés gérera correctement les clés à région unique et à régions multiples. L'exemple utilise un ARN de clé pour identifier la clé KMS.
final MaterialProviders matProv = MaterialProviders.builder() .MaterialProvidersConfig(MaterialProvidersConfig.builder().build()) .build(); final CreateAwsKmsMrkMultiKeyringInput keyringInput = CreateAwsKmsMrkMultiKeyringInput.builder() .generator(
kmsKeyArn
) .build(); final IKeyring kmsKeyring = matProv.CreateAwsKmsMrkMultiKeyring(keyringInput);
Utilisation de plusieurs régions AWS KMS keys
Vous pouvez utiliser plusieurs régions AWS KMS keys comme clés d'encapsulation dans le SDK de chiffrement de AWS base de données. Si vous chiffrez à l'aide d'une clé multirégion intégrée à une cléRégion AWS, vous pouvez le déchiffrer à l'aide d'une clé multirégion associée associée à une autre clé. Région AWS
Les clés KMS multirégionales sont un ensemble de AWS KMS keys clés différentes Régions AWS ayant le même matériau de clé et le même identifiant de clé. Vous pouvez utiliser ces clés associées comme s'il s'agissait de la même clé dans différentes régions. Les clés multirégionales prennent en charge les scénarios de reprise après sinistre et de sauvegarde courants qui nécessitent le chiffrement dans une région et le déchiffrement dans une autre région sans passer d'appel interrégional à. AWS KMS Pour plus d'informations sur les clés multirégions, consultez la section Utilisation de clés multirégions dans le Guide du AWS Key Management Servicedéveloppeur.
Pour prendre en charge les clés multirégionales, le SDK AWS Database Encryption inclut des ensembles de clés compatibles avec AWS KMS plusieurs régions. La CreateAwsKmsMrkMultiKeyring
méthode prend en charge les clés à région unique et à région multiple.
-
Pour les clés à région unique, le symbole prenant en compte plusieurs régions se comporte exactement comme le porte-clés à région unique. AWS KMS Il tente de déchiffrer le texte chiffré uniquement à l'aide de la clé Single-Region qui a chiffré les données. Pour simplifier votre utilisation du jeu de AWS KMS clés, nous vous recommandons d'utiliser
CreateAwsKmsMrkMultiKeyring
cette méthode chaque fois que vous utilisez une clé KMS de chiffrement symétrique. -
Pour les clés multirégions, le symbole prenant en compte plusieurs régions tente de déchiffrer le texte chiffré avec la même clé multirégion qui a chiffré les données ou avec la clé multirégion associée dans la région que vous spécifiez.
Dans les trousses de clés compatibles avec plusieurs régions qui nécessitent plusieurs clés KMS, vous pouvez spécifier plusieurs clés à région unique et à régions multiples. Toutefois, vous ne pouvez spécifier qu'une seule clé par jeu de clés multirégions associées. Si vous spécifiez plusieurs identificateurs de clé avec le même identifiant de clé, l'appel au constructeur échoue.
L'exemple Java suivant crée un jeu de AWS KMS clés avec une clé KMS multirégionale. L'exemple spécifie une clé multirégion comme clé génératrice et une clé monorégion comme clé enfant.
final MaterialProviders matProv = MaterialProviders.builder() .MaterialProvidersConfig(MaterialProvidersConfig.builder().build()) .build(); final CreateAwsKmsMrkMultiKeyringInput createAwsKmsMrkMultiKeyringInput = CreateAwsKmsMrkMultiKeyringInput.builder() .generator(
multiRegionKeyArn
) .kmsKeyIds(Collections.singletonList(kmsKeyArn
)) .build(); IKeyring awsKmsMrkMultiKeyring = matProv.CreateAwsKmsMrkMultiKeyring(createAwsKmsMrkMultiKeyringInput);
Lorsque vous utilisez des trousses de AWS KMS clés multirégions, vous pouvez déchiffrer du texte chiffré en mode strict ou en mode découverte. Pour déchiffrer le texte chiffré en mode strict, instanciez le symbole multirégion avec l'ARN de la clé multirégion associée dans la région dans laquelle vous décryptez le texte chiffré. Si vous spécifiez l'ARN clé d'une clé multirégion associée dans une autre région (par exemple, la région dans laquelle l'enregistrement a été crypté), le symbole prenant en compte plusieurs régions émettra un appel interrégional pour cela. AWS KMS key
Lors du déchiffrement en mode strict, le symbole prenant en compte plusieurs régions nécessite un ARN clé. Il n'accepte qu'un seul ARN de clé pour chaque ensemble de clés multirégionales associées.
Vous pouvez également déchiffrer en mode découverte à l'aide de clés AWS KMS multirégionales. Lors du déchiffrement en mode découverte, vous n'en spécifiez aucun. AWS KMS keys (Pour plus d'informations sur les porte-clés de AWS KMS découverte à région unique, voirUtilisation d'un porte-clés de découverte AWS KMS.)
Si vous avez chiffré à l'aide d'une clé multirégion, le symbole prenant en compte plusieurs régions en mode découverte tentera de le déchiffrer à l'aide d'une clé multirégion associée dans la région locale. S'il n'en existe pas, l'appel échoue. En mode découverte, le SDK AWS de chiffrement de base de données ne tentera pas d'effectuer un appel interrégional pour la clé multirégion utilisée pour le chiffrement.
Utilisation d'un porte-clés de découverte AWS KMS
Lors du déchiffrement, il est recommandé de spécifier les clés d'encapsulation que le SDK de chiffrement de AWS base de données peut utiliser. Pour suivre cette bonne pratique, utilisez un jeu de clés de AWS KMS déchiffrement qui limite les clés AWS KMS d'encapsulation à celles que vous avez spécifiées. Toutefois, vous pouvez également créer un porte-clés de AWS KMS découverte, c'est-à-dire un AWS KMS porte-clés qui ne spécifie aucune clé d'encapsulation.
Le SDK AWS Database Encryption fournit un jeu de clés de AWS KMS découverte standard et un jeu de clés de découverte pour les AWS KMS clés multirégionales. Pour plus d'informations sur l'utilisation de clés multirégionales avec le SDK AWS Database Encryption, consultez. Utilisation de plusieurs régions AWS KMS keys
Comme il ne spécifie aucune clé d'encapsulation, un jeu de clés de découverte ne peut pas crypter les données. Si vous utilisez un jeu de clés de découverte pour chiffrer des données, seul ou dans un jeu de clés multiple, l'opération de chiffrement échoue.
Lors du déchiffrement, un jeu de clés de découverte permet au SDK de chiffrement AWS de base de données de demander AWS KMS à déchiffrer n'importe quelle clé de données cryptée en utilisant celle qui l'a cryptée, quel AWS KMS key que soit le propriétaire de cette clé ou y a accès. AWS KMS key L'appel aboutit uniquement lorsque l'appelant dispose d'une kms:Decrypt
autorisation sur le. AWS KMS key
Important
Si vous incluez un jeu de clés de AWS KMS découverte dans un jeu de clés multiple de déchiffrement, le jeu de clés de découverte remplace toutes les restrictions de clé KMS spécifiées par les autres ensembles de clés du jeu de clés multiple. Le porte-clés multiple se comporte comme son porte-clés le moins restrictif. Si vous utilisez un jeu de clés de découverte pour chiffrer des données, seul ou dans un jeu de clés multiple, l'opération de chiffrement échoue
Le SDK AWS Database Encryption fournit un jeu de clés de AWS KMS découverte pour plus de commodité. Cependant, nous vous recommandons d'utiliser un porte-clés plus limité chaque fois que possible pour les raisons suivantes.
-
Authenticité : un porte-clés de AWS KMS découverte peut utiliser AWS KMS key n'importe quelle clé utilisée pour chiffrer une clé de données figurant dans la description du document, à condition que l'appelant soit autorisé à l'utiliser pour le déchiffrer. AWS KMS key Il est possible qu'il ne s'agisse pas de la AWS KMS key que le mandataire a l'intention d'utiliser. Par exemple, l'une des clés de données chiffrées peut avoir été chiffrée sous une AWS KMS key moins sécurisée que n'importe qui peut utiliser.
-
Latence et performances : un jeu de clés de AWS KMS découverte peut être sensiblement plus lent que les autres car le SDK de chiffrement des AWS bases de données tente de déchiffrer toutes les clés de données cryptées, y compris celles cryptées par AWS KMS keys in other Comptes AWS et Regions, et AWS KMS keys que l'appelant n'est pas autorisé à utiliser pour le déchiffrement.
Si vous utilisez un jeu de clés de découverte, nous vous recommandons d'utiliser un filtre de découverte pour limiter les clés KMS pouvant être utilisées à celles des partitions Comptes AWS et spécifiées. Pour obtenir de l'aide pour trouver l'ID de votre compte et votre partition, consultez la section Vos Compte AWS identifiants et le format ARN dans le Références générales AWS.
Le code Java suivant instancie un jeu de clés de AWS KMS découverte avec un filtre de découverte qui limite les clés KMS que le SDK de chiffrement AWS de base de données peut utiliser à celles de la aws
partition et du compte d'exemple. 111122223333
Avant d'utiliser ce code, remplacez les valeurs de l'exemple Compte AWS et de la partition par des valeurs valides pour votre partition Compte AWS et. Si vos clés KMS se trouvent dans les régions chinoises, utilisez la valeur de la aws-cn
partition. Si vos clés KMS sont entréesAWS GovCloud (US) Regions, utilisez la valeur de la aws-us-gov
partition. Pour tous les autresRégions AWS, utilisez la valeur de aws
partition.
// Create discovery filter DiscoveryFilter discoveryFilter = DiscoveryFilter.builder() .partition("
aws
") .accountIds(111122223333
) .build(); // Create the discovery keyring CreateAwsKmsMrkDiscoveryMultiKeyringInput createAwsKmsMrkDiscoveryMultiKeyringInput = CreateAwsKmsMrkDiscoveryMultiKeyringInput.builder() .discoveryFilter(discoveryFilter) .build(); IKeyring decryptKeyring = matProv.CreateAwsKmsMrkDiscoveryMultiKeyring(createAwsKmsMrkDiscoveryMultiKeyringInput);
Utilisation d'un porte-clés de découverte régional AWS KMS
Un porte-clés de découverte AWS KMS régional est un porte-clés qui ne spécifie pas les ARN des clés KMS. Au lieu de cela, il permet au SDK AWS de chiffrement de base de données de déchiffrer uniquement à l'aide des clés KMS en particulier. Régions AWS
Lors du déchiffrement à l'aide d'un jeu de clés de découverte AWS KMS régional, le SDK AWS Database Encryption déchiffre toute clé de données cryptée qui a été cryptée sous un dans la valeur spécifiée. AWS KMS key Région AWS Pour réussir, l'appelant doit disposer d'une kms:Decrypt
autorisation sur au moins l'une des clés spécifiées Région AWS qui a chiffré une donnée. AWS KMS keys
Comme les autres trousses de découverte, le trousseau de clés de découverte régional n'a aucun effet sur le chiffrement. Cela ne fonctionne que lors du déchiffrement de champs chiffrés. Si vous utilisez un jeu de clés de découverte régional dans un jeu de clés multiple utilisé pour le chiffrement et le déchiffrement, il n'est efficace que lors du déchiffrement. Si vous utilisez un jeu de clés de découverte multirégion pour chiffrer des données, seul ou dans un jeu de clés multirégion, l'opération de chiffrement échoue.
Important
Si vous incluez un jeu de clés de découverte AWS KMS régional dans un jeu de clés multiclés de déchiffrement, le jeu de clés de découverte régional remplace toutes les restrictions de clé KMS spécifiées par les autres ensembles de clés du jeu de clés multiclés. Le porte-clés multiple se comporte comme son porte-clés le moins restrictif. Un trousseau de AWS KMS découverte n'a aucun effet sur le chiffrement lorsqu'il est utilisé seul ou dans le cadre d'un jeu de clés multiple.
Le jeu de clés de découverte régional du SDK AWS Database Encryption tente de déchiffrer uniquement avec les clés KMS de la région spécifiée. Lorsque vous utilisez un jeu de clés de découverte, vous configurez la région sur le AWS KMS client. Ces implémentations du SDK de chiffrement de AWS base de données ne filtrent pas les clés KMS par région, mais AWS KMS échoueront à une demande de déchiffrement pour les clés KMS en dehors de la région spécifiée.
Si vous utilisez un jeu de clés de découverte, nous vous recommandons d'utiliser un filtre de découverte pour limiter les clés KMS utilisées pour le déchiffrement à celles des partitions Comptes AWS et spécifiées.
Par exemple, le code suivant crée un porte-clés de découverte AWS KMS régional avec un filtre de découverte. Ce jeu de clés limite le SDK AWS de chiffrement de base de données aux clés KMS du compte 111122223333 dans la région USA Ouest (Oregon) (us-west-2).
// Create the discovery filter DiscoveryFilter discoveryFilter = DiscoveryFilter.builder() .partition("
aws
") .accountIds(111122223333
) .build(); // Create the discovery keyring CreateAwsKmsMrkDiscoveryMultiKeyringInput createAwsKmsMrkDiscoveryMultiKeyringInput = CreateAwsKmsMrkDiscoveryMultiKeyringInput.builder() .discoveryFilter(discoveryFilter) .regions("us-west-2
") .build(); IKeyring decryptKeyring = matProv.CreateAwsKmsMrkDiscoveryMultiKeyring(createAwsKmsMrkDiscoveryMultiKeyringInput);