AWS-Verschlüsselungs-SDK for Python - AWS Encryption SDK

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

AWS-Verschlüsselungs-SDK for Python

In diesem Thema wird erklärt, wie das AWS-Verschlüsselungs-SDK for Python installiert und verwendet wird. Einzelheiten zur Programmierung mit dem AWS-Verschlüsselungs-SDK for Python finden Sie im aws-encryption-sdk-pythonRepository unter GitHub. Die API Dokumentation finden Sie unter Read the Docs.

Voraussetzungen

Stellen Sie vor der Installation von sicher AWS-Verschlüsselungs-SDK for Python, dass Sie die folgenden Voraussetzungen erfüllen.

Eine unterstützte Version von Python

Python 3.8 oder höher ist für die AWS-Verschlüsselungs-SDK for Python Versionen 3.2.0 und höher erforderlich.

Anmerkung

Die AWS Cryptographic Material Providers Library (MPL) ist eine optionale Abhängigkeit für die in Version AWS-Verschlüsselungs-SDK for Python 4 eingeführte. x. Wenn Sie beabsichtigenMPL, das zu installieren, müssen Sie Python 3.11 oder höher verwenden.

Frühere Versionen von AWS Encryption SDK unterstützen Python 2.7 und Python 3.4 und höher, wir empfehlen jedoch, dass Sie die neueste Version von verwenden AWS Encryption SDK.

Weitere Informationen zum Download von Python finden Sie unter Python-Downloads.

Das pip-Installationstool for Python

pipist in Python 3.6 und späteren Versionen enthalten, obwohl Sie es möglicherweise aktualisieren möchten. Weitere Informationen zum Aktualisieren oder Installieren pip finden Sie in der pip Dokumentation unter Installation.

Installation

Installieren Sie die neueste Version von AWS-Verschlüsselungs-SDK for Python.

Anmerkung

Alle AWS-Verschlüsselungs-SDK for Python Versionen vor 3.0.0 befinden sich in der end-of-supportPhase.

Sie können sicher von Version 2.0 aus aktualisieren. x und höher auf die neueste Version von AWS Encryption SDK ohne Code- oder Datenänderungen. In Version 2.0 wurden jedoch neue Sicherheitsfunktionen eingeführt. x sind nicht abwärtskompatibel. Um von Versionen vor 1.7 zu aktualisieren. x auf Version 2.0. x und höher, Sie müssen zuerst auf die neueste Version 1 aktualisieren. x-Version von AWS Encryption SDK. Details hierzu finden Sie unter Migrieren Sie IhreAWS Encryption SDK.

Verwenden Sie, pip um die zu installieren AWS-Verschlüsselungs-SDK for Python, wie in den folgenden Beispielen gezeigt.

Installieren der neuesten Version
pip install "aws-encryption-sdk[MPL]"

Das [MPL] Suffix installiert die AWS Cryptographic Material Providers Library ()MPL. Die MPL enthält Konstrukte zum Verschlüsseln und Entschlüsseln Ihrer Daten. Das MPL ist eine optionale Abhängigkeit für die in Version 4 AWS-Verschlüsselungs-SDK for Python eingeführte. x. Wir empfehlen dringend die Installation vonMPL. Wenn Sie das jedoch nicht verwenden möchtenMPL, können Sie das [MPL] Suffix weglassen.

Weitere Informationen zur Verwendung von pip für die Installation und die Aktualisierung von Paketen finden Sie unter Pakete installieren.

Das AWS-Verschlüsselungs-SDK for Python erfordert die Kryptografie-Bibliothek (Pyca/Cryptography) auf allen Plattformen. Alle Versionen von installieren und erstellen die Bibliothek pip automatisch unter Windows. cryptography pip8.1 und höher werden automatisch cryptography auf Linux installiert und erstellt. Wenn Sie eine frühere Version von verwenden pip und Ihre Linux-Umgebung nicht über die Tools verfügt, die zum Erstellen der cryptography Bibliothek erforderlich sind, müssen Sie sie installieren. Weitere Informationen finden Sie unter Erstellen von Kryptographie unter Linux.

In den Versionen 1.10.0 und 2.5.0 liegt die AWS-Verschlüsselungs-SDK for Python Kryptografieabhängigkeit zwischen 2.5.0 und 3.3.2. Andere Versionen von AWS-Verschlüsselungs-SDK for Python installieren die neueste Version der Kryptografie. Wenn Sie eine neuere Version der Kryptografie als 3.3.2 benötigen, empfehlen wir Ihnen, die neueste Hauptversion von zu verwenden. AWS-Verschlüsselungs-SDK for Python

Die neueste Entwicklungsversion von finden Sie im AWS-Verschlüsselungs-SDK for Pythonaws-encryption-sdk-pythonRepository unter. GitHub

Schauen Sie sich nach der AWS-Verschlüsselungs-SDK for Python Installation von zunächst den Python-Beispielcode in diesem Handbuch an.

Version 4.x des AWS-Verschlüsselungs-SDK for Python

In diesem Abschnitt werden die neuen Funktionen beschrieben, die mit Version 4 eingeführt wurden. x von AWS-Verschlüsselungs-SDK for Python , wenn es mit der optionalen Abhängigkeit von Cryptographic Material Providers Library (MPL) verwendet wird.

Wenn Sie Version 4 verwenden. x von der AWS-Verschlüsselungs-SDK for Python mit demMPL, Sie können Schlüsselringe verwenden, um die Umschlagverschlüsselung durchzuführen. Das AWS Encryption SDK stellt Schlüsselbunde bereit, die mit den Hauptschlüsselanbietern kompatibel sind, die Sie in früheren Versionen verwendet haben. Weitere Informationen finden Sie unter Schlüsselbund-Kompatibilität. Beispiele für die Migration von Master-Key-Anbietern zu Keyrings finden Sie unter Migrationsbeispiele im aws-encryption-sdk-python Repository auf. GitHub

Die Beispiele in diesem Thema instanziieren den AWS Encryption SDK Client mit der Standard-Commitment-Richtlinie,. REQUIRE_ENCRYPT_REQUIRE_DECRYPT Weitere Informationen finden Sie unter Festlegung Ihrer Verpflichtungspolitik.

AWS KMS Schlüsselanhänger in der AWS-Verschlüsselungs-SDK for Python

Für die grundlegenden AWS KMS Schlüsselanhänger ist nur ein AWS-Verschlüsselungs-SDK for Python KMS Schlüssel erforderlich. Sie benötigen außerdem einen AWS KMS Client, der Ihnen die Möglichkeit gibt, den Client für den AWS-Region KMS Schlüssel zu konfigurieren.

Um einen AWS KMS Schlüsselbund mit einem oder mehreren Schlüsseln zu erstellen, verwenden Sie einen Schlüsselbund mit mehreren Schlüsseln. Der AWS-Verschlüsselungs-SDK for Python hat einen speziellen Mehrfachschlüsselbund, der einen oder mehrere AWS KMS Schlüssel akzeptiert, und einen Standard-Mehrfachschlüsselbund, der einen oder mehrere Schlüsselringe eines beliebigen unterstützten Typs akzeptiert. Manche Programmierer ziehen es vor, eine Methode mit mehreren Schlüsselbunden zu verwenden, um all ihre Schlüsselbunde zu erstellen, und die Methode unterstützt diese Strategie. AWS-Verschlüsselungs-SDK for Python

Das AWS-Verschlüsselungs-SDK for Python bietet grundlegende Einzelschlüsselringe und Schlüsselanhänger mit mehreren Schlüsseln für alle typischen Anwendungsfälle, einschließlich Schlüssel mit mehreren Regionen. AWS KMS

Um beispielsweise einen AWS KMS Schlüsselbund mit einem Schlüssel zu erstellen, können Sie die Methode verwenden. AWS KMS create_aws_kms_keyring()

# 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 )

Verwenden Sie die Methode, um einen Schlüsselbund mit einem oder mehreren AWS KMS Schlüsseln zu erstellen. create_aws_kms_multi_keyring() In diesem Beispiel werden zwei KMS Schlüssel verwendet. Um einen KMS Schlüssel anzugeben, verwenden Sie nur den generator Parameter. Der kms_key_ids Parameter, der zusätzliche KMS Schlüssel angibt, ist optional.

Die Eingabe für diesen Schlüsselbund benötigt keinen AWS KMS Client. Stattdessen AWS Encryption SDK verwendet der den AWS KMS Standard-Client für jede Region, die durch einen KMS Schlüssel im Schlüsselbund repräsentiert wird. Wenn sich der durch den Wert des generator Parameters identifizierte KMS Schlüssel beispielsweise in der Region USA West (Oregon) (us-west-2) befindet, AWS Encryption SDK wird ein AWS KMS Standard-Client für die us-west-2 Region erstellt. Wenn Sie den AWS KMS Client anpassen müssen, verwenden Sie die create_aws_kms_keyring() Methode.

# 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 )

AWS-Verschlüsselungs-SDK for Python unterstützt AWS KMS Schlüsselringe, die symmetrische Verschlüsselung (SYMMETRIC_DEFAULT) oder RSA KMS asymmetrische Schlüssel verwenden. AWS KMS Schlüsselringe, die mit asymmetrischen RSA KMS Schlüsseln erstellt wurden, können nur ein key pair enthalten.

Um mit einem asymmetrischen RSA AWS KMS Schlüsselbund zu verschlüsseln, benötigen Sie kms: GenerateDataKey oder kms:Encrypt nicht, da Sie bei der Erstellung des Schlüsselbunds das Material der öffentlichen Schlüssel angeben müssen, das Sie für die Verschlüsselung verwenden möchten. Bei der Verschlüsselung mit diesem Schlüsselbund werden keine AWS KMS Anrufe getätigt. Um mit einem asymmetrischen RSA AWS KMS Schlüsselbund zu entschlüsseln, benötigen Sie die kms:Decrypt-Berechtigung.

Um einen asymmetrischen RSA AWS KMS Schlüsselbund zu erstellen, müssen Sie den öffentlichen Schlüssel und den privaten Schlüssel aus Ihrem asymmetrischen Schlüssel angeben. ARN RSA KMS Der öffentliche Schlüssel muss codiert sein. PEM Im folgenden Beispiel wird ein AWS KMS Schlüsselbund mit einem asymmetrischen RSA key pair erstellt.

# 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 )

Erforderliche Verschlüsselungskontexte in Version 4.x

Wenn Sie Version 4 verwenden. x von der AWS-Verschlüsselungs-SDK for Python mit demMPL, Sie können den erforderlichen Verschlüsselungskontext verwenden, CMM um Verschlüsselungskontexte für Ihre kryptografischen Operationen erforderlich zu machen. Ein Verschlüsselungskontext ist eine Gruppe von nicht geheimen Schlüssel-Wert-Paaren. Der Verschlüsselungskontext ist kryptografisch an die verschlüsselten Daten gebunden, sodass derselbe Verschlüsselungskontext erforderlich ist, um das Feld zu entschlüsseln. Wenn Sie den erforderlichen Verschlüsselungskontext verwendenCMM, können Sie einen oder mehrere erforderliche Verschlüsselungskontextschlüssel (erforderliche Schlüssel) angeben, die in allen Verschlüsselungs- und Entschlüsselungsaufrufen enthalten sein müssen.

Anmerkung

Der erforderliche Verschlüsselungskontext CMM wird nur von den folgenden Versionen unterstützt:

  • Version 3. x der AWS-Verschlüsselungs-SDK for Java

  • Ausführung 4. x der AWS Encryption SDK Form. NET

  • Ausführung 4. x von AWS-Verschlüsselungs-SDK for Python, wenn es mit der optionalen Abhängigkeit von Cryptographic Material Providers Library (MPL) verwendet wird.

Wenn Sie Daten mit dem erforderlichen Verschlüsselungskontext verschlüsselnCMM, können Sie sie nur mit einer dieser unterstützten Versionen entschlüsseln.

Beim Verschlüsseln AWS Encryption SDK wird überprüft, ob alle erforderlichen Verschlüsselungskontextschlüssel in dem von Ihnen angegebenen Verschlüsselungskontext enthalten sind. Das AWS Encryption SDK signiert die von Ihnen angegebenen Verschlüsselungskontexte. Nur die Schlüssel-Wert-Paare, bei denen es sich nicht um erforderliche Schlüssel handelt, werden serialisiert und im Klartext-Format im Header der verschlüsselten Nachricht gespeichert, die der Verschlüsselungsvorgang zurückgibt.

Beim Entschlüsseln müssen Sie einen Verschlüsselungskontext angeben, der alle Schlüssel-Wert-Paare enthält, die die erforderlichen Schlüssel darstellen. Der AWS Encryption SDK verwendet diesen Verschlüsselungskontext und die im Header der verschlüsselten Nachricht gespeicherten Schlüssel-Wert-Paare, um den ursprünglichen Verschlüsselungskontext zu rekonstruieren, den Sie beim Verschlüsselungsvorgang angegeben haben. Wenn der ursprüngliche Verschlüsselungskontext AWS Encryption SDK nicht rekonstruiert werden kann, schlägt der Entschlüsselungsvorgang fehl. Wenn Sie ein Schlüssel-Wert-Paar angeben, das den erforderlichen Schlüssel mit einem falschen Wert enthält, kann die verschlüsselte Nachricht nicht entschlüsselt werden. Sie müssen dasselbe Schlüssel-Wert-Paar angeben, das beim Verschlüsseln angegeben wurde.

Wichtig

Überlegen Sie sorgfältig, welche Werte Sie für die erforderlichen Schlüssel in Ihrem Verschlüsselungskontext wählen. Sie müssen in der Lage sein, dieselben Schlüssel und die entsprechenden Werte beim Entschlüsseln erneut anzugeben. Wenn Sie die erforderlichen Schlüssel nicht reproduzieren können, kann die verschlüsselte Nachricht nicht entschlüsselt werden.

Im folgenden Beispiel wird ein AWS KMS Schlüsselbund mit dem erforderlichen Verschlüsselungskontext initialisiert. 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, ) )