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.
Kit SDK de chiffrement AWS pour Python
Cette rubrique explique comment installer et utiliser le kit Kit SDK de chiffrement AWS pour Python. Pour plus de détails sur la programmation avec le Kit SDK de chiffrement AWS pour Python, consultez le aws-encryption-sdk-python
Prérequis
Avant d'installer le Kit SDK de chiffrement AWS pour Python, assurez-vous de remplir les conditions préalables suivantes.
- Version prise en charge de Python
-
Python 3.8 ou version ultérieure est requis par les Kit SDK de chiffrement AWS pour Python versions 3.2.0 et ultérieures.
Note
La bibliothèque des fournisseurs de matériel AWS cryptographique
(MPL) est une dépendance facultative de celle Kit SDK de chiffrement AWS pour Python introduite dans la version 4. x. Si vous avez l'intention d'installer leMPL, vous devez utiliser Python 3.11 ou version ultérieure. Les versions antérieures du logiciel AWS Encryption SDK prennent en charge Python 2.7, Python 3.4 et versions ultérieures, mais nous vous recommandons d'utiliser la dernière version du AWS Encryption SDK.
Pour télécharger Python, consultez Téléchargements Python
. - Outil d'installation pip pour Python
-
pip
est inclus dans Python 3.6 et versions ultérieures, mais vous souhaiterez peut-être le mettre à niveau. Pour plus d'informations sur la mise à niveau ou l'installationpip
, consultez la section Installationdans la pip
documentation.
Installation
Installez la dernière version du Kit SDK de chiffrement AWS pour Python.
Note
Toutes les versions Kit SDK de chiffrement AWS pour Python antérieures à 3.0.0 sont en end-of-supportphase.
Vous pouvez effectuer la mise à jour en toute sécurité à partir de la version 2.0. x et versions ultérieures vers la dernière version du AWS Encryption SDK sans aucune modification du code ou des données. Cependant, de nouvelles fonctionnalités de sécurité ont été introduites dans la version 2.0. x ne sont pas rétrocompatibles. Pour effectuer une mise à jour à partir de versions antérieures à 1.7. x vers la version 2.0. x et versions ultérieures, vous devez d'abord effectuer la mise à jour vers la dernière version 1. version x du AWS Encryption SDK. Pour plus de détails, consultez Migrer votreAWS Encryption SDK.
pip
À utiliser pour installer le Kit SDK de chiffrement AWS pour Python, comme indiqué dans les exemples suivants.
- Pour installer la dernière version
-
pip install "aws-encryption-sdk[MPL]"
Le
[MPL]
suffixe installe la bibliothèque des fournisseurs de matériel AWS cryptographique(). MPL MPLIl contient des structures permettant de chiffrer et de déchiffrer vos données. MPLIl s'agit d'une dépendance facultative pour la version Kit SDK de chiffrement AWS pour Python introduite dans la version 4. x. Nous vous recommandons vivement d'installer leMPL. Toutefois, si vous n'avez pas l'intention d'utiliser leMPL, vous pouvez omettre le [MPL]
suffixe.
Pour plus d'informations sur l'utilisation de pip pour installer et mettre à niveau les packages, consultez Installation des packages
Kit SDK de chiffrement AWS pour Python Nécessite la bibliothèque de cryptographiepip
automatiquement la cryptography
bibliothèque sous Windows. pip
8.1 et versions ultérieures s'installent et se compilent automatiquement sous cryptography
Linux. Si vous utilisez une version antérieure de pip
et que votre environnement Linux ne dispose pas des outils nécessaires pour créer la cryptography
bibliothèque, vous devez les installer. Pour de plus amples informations, veuillez consulter Building cryptography on Linux
Les versions 1.10.0 et 2.5.0 de la norme situent la Kit SDK de chiffrement AWS pour Python dépendance cryptographique
Pour obtenir la dernière version de développement du Kit SDK de chiffrement AWS pour Python, accédez au aws-encryption-sdk-python
Après avoir installé le Kit SDK de chiffrement AWS pour Python, commencez par consulter l'exemple de code Python présenté dans ce guide.
Version 4.x du Kit SDK de chiffrement AWS pour Python
Cette section décrit les nouvelles fonctionnalités introduites par la version 4. x du Kit SDK de chiffrement AWS pour Python lorsqu'il est utilisé avec la dépendance optionnelle Cryptographic Material Providers Library
Lorsque vous utilisez la version 4. x du Kit SDK de chiffrement AWS pour Python avec leMPL, vous pouvez utiliser des trousseaux de clés pour chiffrer les enveloppes. AWS Encryption SDK fournit des porte-clés compatibles avec les fournisseurs de clés principales que vous utilisiez dans les versions précédentes. Pour de plus amples informations, veuillez consulter Compatibilité du porte-clés. Pour des exemples de migration depuis des fournisseurs de clés principales vers des porte-clés, consultez la section Exemples de migrationaws-encryption-sdk-python
référentiel sur. GitHub
Les exemples présentés dans cette rubrique instancient le AWS Encryption SDK client avec la politique d'engagement par défaut,. REQUIRE_ENCRYPT_REQUIRE_DECRYPT
Pour de plus amples informations, veuillez consulter Définition de votre politique d'engagement.
AWS KMS porte-clés dans le Kit SDK de chiffrement AWS pour Python
Les AWS KMS porte-clés de base du jeu ne nécessitent Kit SDK de chiffrement AWS pour Python qu'une seule KMS clé. Ils ont également besoin d'un AWS KMS client, ce qui vous permet de configurer le client pour Région AWS la KMS clé.
Pour créer un AWS KMS porte-clés avec une ou plusieurs clés enveloppantes, utilisez un porte-clés à plusieurs clés. Kit SDK de chiffrement AWS pour Python Il possède un porte-clés spécial qui prend une ou plusieurs AWS KMS clés, et un porte-clés standard qui accepte un ou plusieurs porte-clés de n'importe quel type compatible. Certains programmeurs préfèrent utiliser une méthode à plusieurs jeux de clés pour créer tous leurs trousseaux de clés, et ils soutiennent cette stratégie. Kit SDK de chiffrement AWS pour Python
Kit SDK de chiffrement AWS pour Python Il fournit des porte-clés simples et des porte-clés multiples de base pour tous les cas d'utilisation courants, y compris les clés multirégionales. AWS KMS
Par exemple, pour créer un AWS KMS porte-clés avec une seule AWS KMS clé, vous pouvez utiliser la create_aws_kms_keyring()
méthode.
# Instantiate the AWS Encryption SDK client client = aws_encryption_sdk.EncryptionSDKClient( commitment_policy=CommitmentPolicy.
REQUIRE_ENCRYPT_REQUIRE_DECRYPT
) # Create a boto3 client for AWS KMS kms_client = boto3.client('kms', region_name="us-west-2") # Optional: Create an encryption context encryption_context: Dict[str, str] = { "encryption": "context", "is not": "secret", "but adds": "useful metadata", "that can help you": "be confident that", "the data you are handling": "is what you think it is", } # Instantiate the material providers library mat_prov: AwsCryptographicMaterialProviders = AwsCryptographicMaterialProviders( config=MaterialProvidersConfig() ) # Create the AWS KMS keyring keyring_input: CreateAwsKmsKeyringInput = CreateAwsKmsKeyringInput( kms_key_id=arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
, kms_client=kms_client ) kms_keyring: IKeyring = mat_prov.create_aws_kms_keyring( input=keyring_input )
Pour créer un trousseau de clés avec une ou plusieurs AWS KMS clés, utilisez create_aws_kms_multi_keyring()
cette méthode. Cet exemple utilise deux KMS touches. Pour spécifier une KMS clé, utilisez uniquement le generator
paramètre. Le kms_key_ids
paramètre qui spécifie des KMS clés supplémentaires est facultatif.
La saisie de ce trousseau de clés ne nécessite aucun AWS KMS client. Il AWS Encryption SDK utilise plutôt le AWS KMS client par défaut pour chaque région représentée par une KMS clé dans le trousseau de clés. Par exemple, si la KMS clé identifiée par la valeur du generator
paramètre se trouve dans la région USA Ouest (Oregon) (us-west-2
), un AWS KMS
client par défaut est AWS Encryption SDK créé pour us-west-2
cette région. Si vous devez personnaliser le AWS KMS client, utilisez create_aws_kms_keyring()
cette méthode.
# Instantiate the AWS Encryption SDK client client = aws_encryption_sdk.EncryptionSDKClient( commitment_policy=CommitmentPolicy.
REQUIRE_ENCRYPT_REQUIRE_DECRYPT
) # Optional: Create an encryption context encryption_context: Dict[str, str] = { "encryption": "context", "is not": "secret", "but adds": "useful metadata", "that can help you": "be confident that", "the data you are handling": "is what you think it is", } # Instantiate the material providers library mat_prov: AwsCryptographicMaterialProviders = AwsCryptographicMaterialProviders( config=MaterialProvidersConfig() ) # Create the AWS KMS keyring kms_multi_keyring_input: CreateAwsKmsMultiKeyringInput = CreateAwsKmsMultiKeyringInput( generator=default_region_kms_key_id
, kms_key_ids=[second_region_kms_key_id
] ) kms_multi_keyring: IKeyring = mat_prov.create_aws_kms_multi_keyring( input=kms_multi_keyring_input )
Kit SDK de chiffrement AWS pour Python prend en charge les AWS KMS trousseaux de clés utilisant un chiffrement symétrique (SYMMETRIC_DEFAULT
) ou des clés asymétriques RSAKMS. AWS KMS les porte-clés créés avec des RSA KMS clés asymétriques ne peuvent contenir qu'une seule paire de clés.
Pour chiffrer avec un trousseau de RSA AWS KMS clés asymétrique, vous n'avez pas besoin de kms : GenerateDataKey ou de KMS:Encrypt car vous devez spécifier le matériel de clé publique que vous souhaitez utiliser pour le chiffrement lorsque vous créez le trousseau de clés. Aucun AWS KMS appel n'est effectué lors du chiffrement avec ce trousseau de clés. Pour déchiffrer avec un trousseau de RSA AWS KMS clés asymétrique, vous devez disposer de l'autorisation KMS:Decrypt.
Pour créer un trousseau de RSA AWS KMS clés asymétrique, vous devez fournir la clé publique et la clé privée ARN à partir de votre clé asymétrique RSAKMS. La clé publique doit être PEM codée. L'exemple suivant crée un AWS KMS trousseau de clés avec une paire de RSA clés asymétrique.
# Instantiate the AWS Encryption SDK client client = aws_encryption_sdk.EncryptionSDKClient( commitment_policy=CommitmentPolicy.
REQUIRE_ENCRYPT_REQUIRE_DECRYPT
) # Optional: Create an encryption context encryption_context: Dict[str, str] = { "encryption": "context", "is not": "secret", "but adds": "useful metadata", "that can help you": "be confident that", "the data you are handling": "is what you think it is", } # Instantiate the material providers library mat_prov: AwsCryptographicMaterialProviders = AwsCryptographicMaterialProviders( config=MaterialProvidersConfig() ) # Create the AWS KMS keyring keyring_input: CreateAwsKmsRsaKeyringInput = CreateAwsKmsRsaKeyringInput( public_key=public_key
, kms_key_id=kms_key_id
, encryption_algorithm="RSAES_OAEP_SHA_256
", kms_client=kms_client ) kms_rsa_keyring: IKeyring = mat_prov.create_aws_kms_rsa_keyring( input=keyring_input )
Contextes de chiffrement requis dans la version 4.x
Lorsque vous utilisez la version 4. x du Kit SDK de chiffrement AWS pour Python avec leMPL, vous pouvez utiliser le contexte de chiffrement requis CMM pour exiger des contextes de chiffrement dans vos opérations cryptographiques. Un contexte de chiffrement est un ensemble de paires clé-valeur non secrètes. Le contexte de chiffrement est lié cryptographiquement aux données chiffrées, de sorte que le même contexte de chiffrement est requis pour déchiffrer le champ. Lorsque vous utilisez le contexte de chiffrement requisCMM, vous pouvez spécifier une ou plusieurs clés de contexte de chiffrement requises (clés obligatoires) qui doivent être incluses dans tous les appels de chiffrement et de déchiffrement.
Note
Le contexte de chiffrement requis n'CMMest pris en charge que par les versions suivantes :
-
Version 3. x du Kit SDK de chiffrement AWS pour Java
-
La version 4. x du AWS Encryption SDK formulaire. NET
-
La version 4. x du Kit SDK de chiffrement AWS pour Python, lorsqu'il est utilisé avec la dépendance optionnelle Cryptographic Material Providers Library
(MPL).
Si vous chiffrez des données à l'aide du contexte de chiffrement requisCMM, vous ne pouvez les déchiffrer qu'avec l'une de ces versions prises en charge.
Lors du chiffrement, il AWS Encryption SDK vérifie que toutes les clés de contexte de chiffrement requises sont incluses dans le contexte de chiffrement que vous avez spécifié. Les AWS Encryption SDK signes indiquent les contextes de chiffrement que vous avez spécifiés. Seules les paires clé-valeur qui ne sont pas des clés obligatoires sont sérialisées et stockées en texte clair dans l'en-tête du message chiffré renvoyé par l'opération de chiffrement.
Lors du déchiffrement, vous devez fournir un contexte de chiffrement contenant toutes les paires clé-valeur représentant les clés requises. AWS Encryption SDK Utilise ce contexte de chiffrement et les paires clé-valeur stockées dans l'en-tête du message chiffré pour reconstruire le contexte de chiffrement d'origine que vous avez spécifié lors de l'opération de chiffrement. S'il AWS Encryption SDK n'est pas possible de reconstruire le contexte de chiffrement d'origine, l'opération de déchiffrement échoue. Si vous fournissez une paire clé-valeur contenant la clé requise avec une valeur incorrecte, le message chiffré ne peut pas être déchiffré. Vous devez fournir la même paire clé-valeur que celle spécifiée lors du chiffrement.
Important
Réfléchissez bien aux valeurs que vous choisissez pour les clés requises dans votre contexte de chiffrement. Vous devez être en mesure de fournir à nouveau les mêmes clés et les valeurs correspondantes lors du déchiffrement. Si vous ne parvenez pas à reproduire les clés requises, le message crypté ne peut pas être déchiffré.
L'exemple suivant initialise un AWS KMS trousseau de clés avec le contexte de chiffrement requis. CMM
# Instantiate the AWS Encryption SDK client client = aws_encryption_sdk.EncryptionSDKClient( commitment_policy=CommitmentPolicy.
REQUIRE_ENCRYPT_REQUIRE_DECRYPT
) # Create your encryption context encryption_context: Dict[str, str] = { "key1": "value1", "key2": "value2", "requiredKey1": "requiredValue1", "requiredKey2": "requiredValue2" } # Create a list of required encryption context keys required_encryption_context_keys: List[str] = ["requiredKey1", "requiredKey2"] # Instantiate the material providers library mpl: AwsCryptographicMaterialProviders = AwsCryptographicMaterialProviders( config=MaterialProvidersConfig() ) # Create the AWS KMS keyring keyring_input: CreateAwsKmsKeyringInput = CreateAwsKmsKeyringInput( kms_key_id=kms_key_id, kms_client=boto3.client('kms', region_name="us-west-2") ) kms_keyring: IKeyring = mpl.create_aws_kms_keyring(keyring_input) # Create the required encryption context CMM underlying_cmm: ICryptographicMaterialsManager = \ mpl.create_default_cryptographic_materials_manager( CreateDefaultCryptographicMaterialsManagerInput( keyring=kms_keyring ) ) required_ec_cmm: ICryptographicMaterialsManager = \ mpl.create_required_encryption_context_cmm( CreateRequiredEncryptionContextCMMInput( required_encryption_context_keys=required_encryption_context_keys, underlying_cmm=underlying_cmm, ) )