Angeben des AWS Key Management Service in Amazon S3 unter Verwendung der AWS SDKs - Amazon Simple Storage Service

Dieses Handbuch wird nicht mehr aktualisiert. Aktuelle Informationen und Anweisungen finden Sie im neuen Amazon S3-Benutzerhandbuch.

Angeben des AWS Key Management Service in Amazon S3 unter Verwendung der AWS SDKs

Bei der Verwendung von AWS SDKs können Sie Amazon S3 auffordern, AWS Key Management Service (AWS KMS)-Kundenmasterschlüssel (CMKs) zu verwenden. Dieser Abschnitt zeigt Beispiele für die Verwendung des AWS SDKs for Java und .NET. Informationen zu anderen SDKs finden Sie unter Beispiel-Code und Bibliotheken.

Wichtig

Wenn Sie einen AWS KMS-CMK für serverseitige Verschlüsselung in Amazon S3 verwenden, müssen Sie einen symmetrischen CMK wählen. Amazon S3 unterstützt nur symmetrische CMKs und keine asymmetrischen CMKs. Weitere Informationen finden Sie unter Verwenden von symmetrischen und asymmetrischen Schlüsseln im AWS Key Management Service-Entwicklerhandbuch.

AWS SDK für Java

In diesem Abschnitt werden verschiedene Amazon S3-Operationen, die das AWS SDK für Java verwenden, und die Verwendung der AWS KMS-CMKs beschrieben.

Put-Operation

Beim Hochladen eines Objekts mit dem AWS SDK für Java können Sie Amazon S3 auffordern, einen AWS KMS-CMK zu verwenden, indem Sie die Eigenschaft SSEAwsKeyManagementParams wie in der folgenden Anforderung gezeigt hinzufügen:

PutObjectRequest putRequest = new PutObjectRequest(bucketName, keyName, file).withSSEAwsKeyManagementParams(new SSEAwsKeyManagementParams());

In diesem Fall verwendet Amazon S3 den von AWS verwalteten CMK (siehe Serverseitige Verschlüsselung mit in AWS KMS gespeicherten CMKs verwenden). Sie können optional einen symmetrischen kundenverwalteten CMK erstellen und diesen in der Anfrage angeben.

PutObjectRequest putRequest = new PutObjectRequest(bucketName, keyName, file).withSSEAwsKeyManagementParams(new SSEAwsKeyManagementParams(keyID));

Weitere Informationen zum Erstellen von kundenverwalteten CMKs finden Sie unter Programmierung der AWS KMS-API im AWS Key Management Service-Entwicklerhandbuch.

Funktionierende Codebeispiele zum Hochladen eines Objekts finden Sie unter den folgenden Themen. Sie müssen diese Codebeispiele aktualisieren und Verschlüsselungsinformationen bereitstellen, wie im vorigen Codefragment gezeigt.

  • Weitere Informationen zum Hochladen eines Objekts in einer einzigen Operation finden Sie unter Hochladen eines Objekts mit dem AWS SDK for Java.

  • Weitere Informationen zu mehrteiligen Uploads finden Sie unter den folgenden Themen:

    • Weitere Informationen über die Verwendung der High-Level-API für mehrteilige Uploads finden Sie unter Hochladen einer Datei

    • Weitere Informationen über die Verwendung der Low-Level-API für mehrteilige Uploads finden Sie unter Hochladen einer Datei.

Kopier-Operation

Wenn Sie Objekte kopieren, fügen Sie dieselben Anfrageeigenschaften (ServerSideEncryptionMethod und ServerSideEncryptionKeyManagementServiceKeyId) hinzu, um Amazon S3 aufzufordern, einen von AWS KMS verwalteten Verschlüsselungsschlüssel zu verwenden. Weitere Informationen über das Kopieren von Objekten finden Sie unter Objekte kopieren.

Vorsignierte URLs

Beim Erstellen einer vorsignierten URL für ein mit einem AWS KMS-CMK verschlüsseltes Objekt müssen Sie Signature Version 4 explizit angeben.

ClientConfiguration clientConfiguration = new ClientConfiguration(); clientConfiguration.setSignerOverride("AWSS3V4SignerType"); AmazonS3Client s3client = new AmazonS3Client( new ProfileCredentialsProvider(), clientConfiguration); ...

Ein Codebeispiel finden Sie unter Generieren einer vorsignierten Objekt-URL mit dem AWS SDK for Java.

AWS SDK für .NET

In diesem Abschnitt werden verschiedene Amazon S3-Operationen, die das AWS SDK für .NET verwenden, und die Verwendung der AWS KMS-CMKs beschrieben.

Put-Operation

Beim Hochladen eines Objekts mit dem AWS SDK für .NET können Sie Amazon S3 auffordern, einen AWS KMS-CMK zu verwenden, indem Sie die Eigenschaft ServerSideEncryptionMethod wie in der folgenden Anforderung gezeigt hinzufügen:

PutObjectRequest putRequest = new PutObjectRequest { BucketName = bucketName, Key = keyName, // other properties. ServerSideEncryptionMethod = ServerSideEncryptionMethod.AWSKMS };

In diesem Fall verwendet Amazon S3 den von AWS verwalteten CMK. Weitere Informationen finden Sie unter Schutz von Daten mit serverseitiger Verschlüsselung mit in AWS Key Management Service (SSE-KMS) gespeicherten CMKs. Sie können optional Ihren eigenen kundenverwalteten CMK erstellen und diesen in der Anfrage angeben.

PutObjectRequest putRequest1 = new PutObjectRequest { BucketName = bucketName, Key = keyName, // other properties. ServerSideEncryptionMethod = ServerSideEncryptionMethod.AWSKMS, ServerSideEncryptionKeyManagementServiceKeyId = keyId };

Weitere Informationen zum Erstellen von kundenverwalteten CMKs finden Sie unter Programmierung der AWS KMS-API im AWS Key Management Service-Entwicklerhandbuch.

Funktionierende Codebeispiele zum Hochladen eines Objekts finden Sie unter den folgenden Themen. Sie müssen diese Codebeispiele aktualisieren und Verschlüsselungsinformationen bereitstellen, wie im vorigen Codefragment gezeigt.

Kopier-Operation

Wenn Sie Objekte kopieren, fügen Sie dieselben Anfrageeigenschaften (ServerSideEncryptionMethod und ServerSideEncryptionKeyManagementServiceKeyId) hinzu, um Amazon S3 aufzufordern, einen von AWS KMS verwalteten Verschlüsselungsschlüssel zu verwenden. Weitere Informationen über das Kopieren von Objekten finden Sie unter Objekte kopieren.

Vorsignierte URLs

Beim Erstellen einer vorsignierten URL für ein mit einem AWS KMS-CMK verschlüsseltes Objekt müssen Sie Signature Version 4 explizit angeben.

AWSConfigs.S3Config.UseSignatureVersion4 = true;

Ein Codebeispiel finden Sie unter Generieren einer vorsignierten Objekt-URL mit AWS SDK for .NET.