Version AWS SDK for Java 1.x wurde am 31. Juli 2024 in den Wartungsmodus versetzt und wird end-of-support
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.
Amazon S3 clientseitige Verschlüsselung mit AWS KMS verwalteten Schlüsseln
In den folgenden Beispielen wird die AmazonS3 EncryptionClient V2Builder-Klasse verwendet, um einen Amazon S3 Client mit aktivierter clientseitiger Verschlüsselung zu erstellen. Nach der Konfiguration werden alle Objekte, auf die Sie mit diesem Client hochladen, Amazon S3 verschlüsselt. Alle Objekte, die Sie Amazon S3 über diesen Client erhalten, werden automatisch entschlüsselt.
Anmerkung
Die folgenden Beispiele zeigen, wie die Amazon S3 clientseitige Verschlüsselung mit AWS KMS verwalteten Schlüsseln verwendet wird. Informationen zur Verwendung der Verschlüsselung mit Ihren eigenen Schlüsseln finden Sie unter Amazon S3 Clientseitige Verschlüsselung mit Client-Hauptschlüsseln.
Bei der Aktivierung der clientseitigen Verschlüsselung können Sie zwischen zwei Verschlüsselungsmodi wählen: strikt authentifiziert Amazon S3 oder authentifiziert. In den folgenden Abschnitten sehen Sie, wie die unterschiedlichen Modi aktiviert werden. Informationen zu den Algorithmen, die in den einzelnen Modi verwendet werden, finden Sie in der Definition. CryptoMode
Erforderliche Importe
Importieren Sie für diese Beispiele die folgenden Klassen.
Importe
import com.amazonaws.ClientConfiguration; import com.amazonaws.regions.Regions; import com.amazonaws.services.kms.AWSKMS; import com.amazonaws.services.kms.AWSKMSClientBuilder; import com.amazonaws.services.kms.model.GenerateDataKeyRequest; import com.amazonaws.services.kms.model.GenerateDataKeyResult; import com.amazonaws.services.s3.AmazonS3EncryptionClientV2Builder; import com.amazonaws.services.s3.AmazonS3EncryptionV2; import com.amazonaws.services.s3.model.CryptoConfigurationV2; import com.amazonaws.services.s3.model.CryptoMode; import com.amazonaws.services.s3.model.EncryptionMaterials; import com.amazonaws.services.s3.model.KMSEncryptionMaterialsProvider;
Strikte authentifizierte Verschlüsselung
Strikte authentifizierte Verschlüsselung ist der Standardmodus, wenn kein Modus angegeben CryptoMode
ist.
Um diesen Modus explizit zu aktivieren, geben Sie den StrictAuthenticatedEncryption
Wert in der withCryptoConfiguration
Methode an.
Anmerkung
Bei Verwendung der clientseitigen authentifizierten Verschlüsselung müssen Sie die neueste Bouncy Castle jar
Code
AmazonS3EncryptionV2 s3Encryption = AmazonS3EncryptionClientV2Builder.standard() .withRegion(Regions.US_WEST_2) .withCryptoConfiguration(new CryptoConfigurationV2().withCryptoMode((CryptoMode.StrictAuthenticatedEncryption))) .withEncryptionMaterialsProvider(new KMSEncryptionMaterialsProvider(keyId)) .build(); s3Encryption.putObject(bucket_name, ENCRYPTED_KEY3, "This is the 3rd content to encrypt with a key created in the {console}"); System.out.println(s3Encryption.getObjectAsString(bucket_name, ENCRYPTED_KEY3));
Rufen Sie die putObject
Methode auf dem Amazon S3 Verschlüsselungsclient auf, um Objekte hochzuladen.
Code
s3Encryption.putObject(bucket_name, ENCRYPTED_KEY3, "This is the 3rd content to encrypt with a key created in the {console}");
Sie können das Objekt mit demselben Client abrufen. Bei diesem Beispiel wird die getObjectAsString
-Methode zum Abrufen der gespeicherten Zeichenfolge eingesetzt.
Code
System.out.println(s3Encryption.getObjectAsString(bucket_name, ENCRYPTED_KEY3));
Authentifizierter Verschlüsselungsmodus
Beim Modus AuthenticatedEncryption
wird während der Verschlüsselung ein verbesserter Schlüsselverpackungsalgorithmus angewendet. Bei einer Entschlüsselung in diesem Modus verifiziert der Algorithmus die Integrität des entschlüsselten Objekts und löst eine Ausnahme aus, wenn das Objekt nicht verifiziert werden kann. Weitere Informationen zur Funktionsweise der authentifizierten Verschlüsselung finden Sie im Blogbeitrag Amazon S3 Client-Side Authenticated
Anmerkung
Bei Verwendung der clientseitigen authentifizierten Verschlüsselung müssen Sie die neueste Bouncy Castle jar
Zur Aktivierung des Modus geben Sie den AuthenticatedEncryption
-Wert in der withCryptoConfiguration
-Methode an.
Code
AmazonS3EncryptionV2 s3Encryption = AmazonS3EncryptionClientV2Builder.standard() .withRegion(Regions.US_WEST_2) .withCryptoConfiguration(new CryptoConfigurationV2().withCryptoMode((CryptoMode.AuthenticatedEncryption))) .withEncryptionMaterialsProvider(new KMSEncryptionMaterialsProvider(keyId)) .build();
AWS KMS Den Client konfigurieren
Der Amazon S3 Verschlüsselungsclient erstellt standardmäßig einen AWS KMS Client, sofern keiner explizit angegeben ist.
Um die Region für diesen automatisch erstellten AWS KMS Client festzulegen, legen Sie den fest. awsKmsRegion
Code
Region kmsRegion = Region.getRegion(Regions.AP_NORTHEAST_1); AmazonS3EncryptionV2 s3Encryption = AmazonS3EncryptionClientV2Builder.standard() .withRegion(Regions.US_WEST_2) .withCryptoConfiguration(new CryptoConfigurationV2().withAwsKmsRegion(kmsRegion)) .withEncryptionMaterialsProvider(new KMSEncryptionMaterialsProvider(keyId)) .build();
Alternativ können Sie Ihren eigenen AWS KMS Client verwenden, um den Verschlüsselungsclient zu initialisieren.
Code
AWSKMS kmsClient = AWSKMSClientBuilder.standard() .withRegion(Regions.US_WEST_2); .build(); AmazonS3EncryptionV2 s3Encryption = AmazonS3EncryptionClientV2Builder.standard() .withRegion(Regions.US_WEST_2) .withKmsClient(kmsClient) .withCryptoConfiguration(new CryptoConfigurationV2().withCryptoMode((CryptoMode.AuthenticatedEncryption))) .withEncryptionMaterialsProvider(new KMSEncryptionMaterialsProvider(keyId)) .build();