

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.

# Verwenden serverseitiger Verschlüsselung mit von Amazon S3 verwalteten Schlüsseln (SSE-S3)
<a name="UsingServerSideEncryption"></a>

**Wichtig**  
Amazon S3 wendet jetzt serverseitige Verschlüsselung mit von Amazon S3 verwalteten Verschlüsselungsschlüssel (SSE-S3) als Basisverschlüsselung für jeden Bucket in Amazon S3 an. Ab dem 5. Januar 2023 werden alle neuen Objekt-Uploads auf Amazon S3 ohne zusätzliche Kosten und ohne Auswirkungen auf die Leistung automatisch verschlüsselt. Der automatische Verschlüsselungsstatus für die Standardverschlüsselungskonfiguration des S3-Buckets und für das Hochladen neuer Objekte ist in den CloudTrail Protokollen, im S3-Inventar, in der S3-Speicherlinse, in der Amazon S3-Konsole und als zusätzlicher Amazon S3 S3-API-Antwortheader im AWS CLI und AWS SDKs verfügbar. Weitere Informationen finden Sie unter [Häufig gestellte Fragen zur Standardverschlüsselung](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).

Alle neuen Objekt-Uploads in Amazon-S3-Buckets werden standardmäßig mit serverseitiger Verschlüsselung mit von Amazon S3 verwalteten Schlüsseln (SSE-S3) verschlüsselt.

Die serverseitige Verschlüsselung schützt Daten im Ruhezustand. Amazon S3 verschlüsselt jedes Objekt mit einem eindeutigen Schlüssel. Als zusätzliche Sicherheit verschlüsselt es den Schlüssel selbst mit einem Schlüssel, der regelmäßig rotiert. Die serverseitige Amazon S3 S3-Verschlüsselung verwendet den 256-Bit-AES-GCM (Advanced Encryption Standard Galois/Counter Mode), um alle hochgeladenen Objekte zu verschlüsseln.

Es fallen keine weiteren Gebühren für die serverseitige Verschlüsselung mit von Amazon S3 verwalteten Schlüsseln (SSE-S3) an. Für Anfragen zum Konfigurieren der Standard-Verschlüsselungsfunktion werden jedoch Standardgebühren für Amazon-S3-Anfragen berechnet. Informationen zu Preisen finden Sie unter [Amazon S3 – Preise](https://aws.amazon.com/s3/pricing/).

Wenn Sie möchten, dass Ihre Daten-Uploads ausschließlich mit von Amazon S3 verwalteten Schlüsseln verschlüsselt werden, können Sie die folgende Bucket-Richtlinie verwenden. Beispielsweise verweigert die folgende Bucket-Richtlinie Berechtigungen zum Hochladen von Objekten, wenn die Anforderung nicht den `x-amz-server-side-encryption`-Header enthält, der eine serverseitige Verschlüsselung anfordert:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id": "PutObjectPolicy",
  "Statement": [
    {
      "Sid": "DenyObjectsThatAreNotSSES3",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
      "Condition": {
        "StringNotEquals": {
          "s3:x-amz-server-side-encryption": "AES256"
        }
      }
    }
   ]
}
```

------

**Anmerkung**  
Die serverseitige Verschlüsselung verschlüsselt nur die Objektdaten, nicht die Metadaten des Objekts. 

## API-Support für die serverseitige Verschlüsselung
<a name="APISupportforServer-SideEncryption"></a>

Für alle Amazon-S3-Buckets ist die Verschlüsselung standardmäßig konfiguriert und alle neuen Objekte, die in einen S3-Bucket hochgeladen werden, werden im Ruhezustand automatisch verschlüsselt. Die serverseitige Verschlüsselung mit von Amazon S3 verwalteten Schlüsseln (SSE-S3) ist die Standardverschlüsselungskonfiguration für jeden Bucket in Amazon S3. Um einen anderen Verschlüsselungstyp zu verwenden, können Sie entweder die Art der serverseitigen Verschlüsselung angeben, die in Ihren S3-`PUT`-Anfragen verwendet werden soll, oder Sie können die Standardverschlüsselungskonfiguration im Ziel-Bucket festlegen. 

Wenn Sie in Ihren `PUT` Anfragen einen anderen Verschlüsselungstyp angeben möchten, können Sie serverseitige Verschlüsselung mit AWS Key Management Service () -Schlüsseln (SSE-KMS AWS KMS), zweischichtige serverseitige Verschlüsselung mit Schlüsseln (DSSE-KMS) oder serverseitige Verschlüsselung mit vom Kunden bereitgestellten AWS KMS Schlüsseln (SSE-C) verwenden. Wenn Sie im Ziel-Bucket eine andere Standardverschlüsselungskonfiguration festlegen möchten, können Sie SSE-KMS oder DSSE-KMS verwenden.

Weitere Informationen zum Ändern der Standardverschlüsselungskonfiguration für Allzweck-Buckets finden Sie unter[Konfigurieren der Standardverschlüsselung](default-bucket-encryption.md). 

Wenn Sie die Standardverschlüsselungskonfiguration Ihres Buckets auf SSE-KMS ändern, wird der Verschlüsselungstyp der vorhandenen Amazon S3-Objekte im Bucket nicht geändert. Um den Verschlüsselungstyp Ihrer bereits vorhandenen Objekte zu ändern, nachdem Sie die Standardverschlüsselungskonfiguration auf SSE-KMS aktualisiert haben, können Sie Amazon S3 Batch Operations verwenden. Sie stellen S3-Batchvorgänge eine Liste von Objekten bereit, für die Vorgänge ausgeführt werden sollen, und Batch-Vorgänge ruft die jeweilige API auf, um die angegebene Operation auszuführen. Sie können die [Kopieren von Objekten](batch-ops-copy-object.md) Aktion verwenden, um vorhandene Objekte zu kopieren, wodurch sie in denselben Bucket zurückgeschrieben werden, wie SSE-KMS-verschlüsselte Objekte. Ein einzelner Batch-Operations-Auftrag kann die angegebene Operation für Milliarden von Objekten ausführen. Weitere Informationen finden Sie unter [Ausführen von Objektoperationen in großem Umfang mit Batch Operations](batch-ops.md) und im *AWS Speicher-Blogbeitrag* [So verschlüsseln Sie bestehende Objekte in Amazon S3 rückwirkend mithilfe von S3 Inventory, Amazon Athena und S3 Batch](https://aws.amazon.com/blogs/security/how-to-retroactively-encrypt-existing-objects-in-amazon-s3-using-s3-inventory-amazon-athena-and-s3-batch-operations/) Operations. 

Um die serverseitige Verschlüsselung mithilfe des REST zur Objekterstellung zu konfigurieren, müssen Sie den Anforderungsheader angeben. APIs `x-amz-server-side-encryption` Hinweise zum REST finden Sie APIs unter[Verwenden der REST-API](specifying-s3-encryption.md#SSEUsingRESTAPI).

Die folgenden Amazon S3 APIs unterstützen diesen Header:
+ **PUT-Operationen** – Geben Sie den Anforderungs-Header an, wenn Sie Daten mithilfe der `PUT`-API hochladen. Weitere Informationen finden Sie unter [PUT Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html).
+ **Mehrteiligen Upload initiieren** – Geben Sie den Header in der Initiierungsanforderung an, wenn Sie große Objekte mit der API für mehrteilige Uploads hochladen. Weitere Informationen finden Sie unter [Mehrteiligen Upload initiieren](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html).
+ **COPY-Operationen** – Wenn Sie ein Objekt kopieren, erhalten Sie ein Quell- und ein Zielobjekt. Weitere Informationen finden Sie unter [PUT Object – Copy](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html).

**Anmerkung**  
Wenn Sie eine `POST`-Operation für das Hochladen eines Objekts verwenden, anstatt den Anforderungs-Header anzugeben, stellen Sie die gleichen Informationen in den Formularfeldern bereit. Weitere Informationen finden Sie unter [POST Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html). 

Sie bieten AWS SDKs auch einen Wrapper APIs , mit dem Sie serverseitige Verschlüsselung anfordern können. Sie können den auch verwenden, AWS-Managementkonsole um Objekte hochzuladen und serverseitige Verschlüsselung anzufordern.

Weitere Informationen finden Sie unter [AWS KMS -Konzepte](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html) im *Entwicklerhandbuch zu AWS Key Management Service *.

**Topics**
+ [API-Support für die serverseitige Verschlüsselung](#APISupportforServer-SideEncryption)
+ [Angeben serverseitiger Verschlüsselung mit von Amazon S3 verwalteten Schlüsseln (SSE-S3)](specifying-s3-encryption.md)

# Angeben serverseitiger Verschlüsselung mit von Amazon S3 verwalteten Schlüsseln (SSE-S3)
<a name="specifying-s3-encryption"></a>

Für alle Amazon-S3-Buckets ist die Verschlüsselung standardmäßig konfiguriert und alle neuen Objekte, die in einen S3-Bucket hochgeladen werden, werden im Ruhezustand automatisch verschlüsselt. Die serverseitige Verschlüsselung mit von Amazon S3 verwalteten Schlüsseln (SSE-S3) ist die Standardverschlüsselungskonfiguration für jeden Bucket in Amazon S3. Um einen anderen Verschlüsselungstyp zu verwenden, können Sie entweder die Art der serverseitigen Verschlüsselung angeben, die in Ihren S3-`PUT`-Anfragen verwendet werden soll, oder Sie können die Standardverschlüsselungskonfiguration im Ziel-Bucket festlegen. 

Wenn Sie in Ihren `PUT` Anfragen einen anderen Verschlüsselungstyp angeben möchten, können Sie serverseitige Verschlüsselung mit () Schlüsseln AWS Key Management Service (SSE-KMS AWS KMS), zweischichtige serverseitige Verschlüsselung mit Schlüsseln (DSSE-KMS) oder serverseitige Verschlüsselung mit vom Kunden bereitgestellten AWS KMS Schlüsseln (SSE-C) verwenden. Wenn Sie im Ziel-Bucket eine andere Standardverschlüsselungskonfiguration festlegen möchten, können Sie SSE-KMS oder DSSE-KMS verwenden.

Weitere Informationen zum Ändern der Standardverschlüsselungskonfiguration für Allzweck-Buckets finden Sie unter[Konfigurieren der Standardverschlüsselung](default-bucket-encryption.md). 

Wenn Sie die Standardverschlüsselungskonfiguration Ihres Buckets auf SSE-KMS ändern, wird der Verschlüsselungstyp der vorhandenen Amazon S3-Objekte im Bucket nicht geändert. Um den Verschlüsselungstyp Ihrer bereits vorhandenen Objekte zu ändern, nachdem Sie die Standardverschlüsselungskonfiguration auf SSE-KMS aktualisiert haben, können Sie Amazon S3 Batch Operations verwenden. Sie stellen S3-Batchvorgänge eine Liste von Objekten bereit, für die Vorgänge ausgeführt werden sollen, und Batch-Vorgänge ruft die jeweilige API auf, um die angegebene Operation auszuführen. Sie können die [Kopieren von Objekten](batch-ops-copy-object.md) Aktion verwenden, um vorhandene Objekte zu kopieren, wodurch sie in denselben Bucket zurückgeschrieben werden, wie SSE-KMS-verschlüsselte Objekte. Ein einzelner Batch-Operations-Auftrag kann die angegebene Operation für Milliarden von Objekten ausführen. Weitere Informationen finden Sie unter [Ausführen von Objektoperationen in großem Umfang mit Batch Operations](batch-ops.md) und im *AWS Speicher-Blogbeitrag* [So verschlüsseln Sie bestehende Objekte in Amazon S3 rückwirkend mithilfe von S3 Inventory, Amazon Athena und S3 Batch](https://aws.amazon.com/blogs/security/how-to-retroactively-encrypt-existing-objects-in-amazon-s3-using-s3-inventory-amazon-athena-and-s3-batch-operations/) Operations. 

Sie können SSE-S3 mithilfe der S3-Konsole, REST, und () angeben. APIs AWS SDKs AWS Command Line Interface AWS CLI Weitere Informationen finden Sie unter [Einstellen des Verhaltens der serverseitigen Verschlüsselung für Amazon S3-Buckets](bucket-encryption.md).

## Verwenden der S3-Konsole
<a name="add-object-encryption-s3"></a>

In diesem Thema wird beschrieben, wie der Verschlüsselungstyp eines Objekts mit der AWS-Managementkonsole festgelegt oder geändert wird. Wenn Sie ein Objekt unter Verwendung der Konsole kopieren, kopiert Amazon S3 das Objekt unverändert. Wenn das Quellobjekt verschlüsselt ist, wird das Zielobjekt demnach ebenfalls verschlüsselt. Sie können mit der Konsole die Verschlüsselung für ein Objekt hinzufügen oder ändern. 

**Anmerkung**  
Sie können die Verschlüsselung eines Objekts ändern, wenn Ihr Objekt kleiner als 5 GB groß ist. Wenn Ihr Objekt größer als 5 GB ist, müssen Sie [AWS CLI](mpu-upload-object.md#UsingCLImpUpload)oder verwenden, [AWS SDKs](CopyingObjectsMPUapi.md)um die Verschlüsselung eines Objekts zu ändern.
Eine Liste der zusätzlichen Berechtigungen, die zum Ändern der Verschlüsselung eines Objekts erforderlich sind, finden Sie unter [Erforderliche Berechtigungen für Amazon-S3-API-Operationen](using-with-s3-policy-actions.md). Beispielrichtlinien, die diese Berechtigungen erteilen, finden Sie unter [Beispiele für identitätsbasierte Richtlinien für Amazon S3](example-policies-s3.md).
Wenn Sie die Verschlüsselung eines Objekts ändern, wird ein neues Objekt erstellt, um das alte zu ersetzen. Wenn S3-Versioning aktiviert ist, wird eine neue Version des Objekts erstellt, und das vorhandene Objekt wird zu einer älteren Version. Die Rolle, die die Eigenschaft ändert, wird auch Besitzer des neuen Objekts (oder der neuen Objektversion). 

**So ändern Sie die Verschlüsselung für ein Objekt**

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die Amazon S3 S3-Konsole unter [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Wählen Sie im Navigationsbereich **Buckets** und dann die Registerkarte **Allzweck-Buckets** aus. Navigieren Sie zum Amazon-S3-Bucket oder -Ordner, der die Objekte enthält, die Sie ändern möchten.

1. Aktivieren Sie das Kontrollkästchen für die Objekte, die Sie ändern möchten.

1. Wählen Sie im Menü **Aktionen** aus der angezeigten Optionsliste die Option **Serverseitige Verschlüsselung bearbeiten** aus.

1. Scrollen Sie zum Abschnitt **Serverseitige Verschlüsselung**.

1. Wählen Sie unter **Verschlüsselungseinstellungen** die Option **Verwenden von Bucket-Einstellungen für die Standardverschlüsselung** oder **Überschreiben der Bucket-Einstellungen für die Standardverschlüsselung** aus.

1. Wenn Sie **Überschreiben der Bucket-Einstellungen für die Standardverschlüsselung** ausgewählt haben, konfigurieren Sie die folgenden Verschlüsselungseinstellungen.

   1. Wählen Sie unter **Verschlüsselungstyp** die Option **Serverseitige Verschlüsselung mit von Amazon S3 verwalteten Schlüsseln (SSE-S3)**. SSE-S3 verwendet für die Verschlüsselung der einzelnen Objekte eine der stärksten Blockverschlüsselungen: 256-bit Advanced Encryption Standard (AES-256). Weitere Informationen finden Sie unter [Verwenden serverseitiger Verschlüsselung mit von Amazon S3 verwalteten Schlüsseln (SSE-S3)](UsingServerSideEncryption.md).

1. Wählen Sie unter **Zusätzliche Kopiereinstellungen** aus, ob Sie **Quelleinstellungen kopieren**, **Keine Einstellungen angeben** oder **Einstellungen angeben** möchten. **Quelleinstellungen kopieren** ist die Standardoption. Wenn Sie das Objekt nur ohne die Quelleinstellungsattribute kopieren möchten, wählen Sie **Keine Einstellungen angeben** aus. Wählen **Sie Einstellungen angeben**, um Einstellungen für Speicherklasse, Objekt-Tags ACLs, Metadaten, serverseitige Verschlüsselung und zusätzliche Prüfsummen anzugeben.

1. Wählen Sie **Änderungen speichern ** aus.

**Anmerkung**  
Diese Aktion wendet auf alle angegebenen Objekte Verschlüsselung an. Warten Sie beim Verschlüsseln von Ordnern, bis die Speicheroperation abgeschlossen ist, bevor Sie dem Ordner neue Objekte hinzufügen.

## Verwenden der REST-API
<a name="SSEUsingRESTAPI"></a>

Wenn das Objekt erstellt wird – d. h. wenn Sie ein neues Objekt hochladen oder eine Kopie eines vorhandenen Objekts anlegen –, können Sie angeben, ob Amazon S3 Ihre Daten mit von Amazon S3 verwalteten Schlüsseln (SSE-S3) verschlüsseln soll, indem Sie der Anforderung den Header `x-amz-server-side-encryption` hinzufügen. Setzen Sie den Wert des Headers auf den Verschlüsselungsalgorithmus `AES256`, den Amazon S3 unterstützt. Amazon S3 bestätigt, dass Ihr Objekt unter Verwendung von SSE-S3 gespeichert wird, indem der Antwort-Header `x-amz-server-side-encryption` zurückgegeben wird. 

Die folgenden Upload-REST-API-Operationen akzeptieren den Anforderungs-Header `x-amz-server-side-encryption`.
+ [PUT Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html)
+ [PUT Object – Kopieren](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html)
+ [POST Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)
+ [Initiieren eines mehrteiligen Uploads](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html)

Wenn Sie große Objekte mit der API für mehrteilige Uploads hochladen, können Sie die serverseitige Verschlüsslung festlegen, indem Sie der Anforderung zum Initiieren eines mehrteiligen Uploads den Header `x-amz-server-side-encryption` hinzufügen. Beim Kopieren eines vorhandenen Objekts wird das Zielobjekt unabhängig davon, ob das Quellobjekt verschlüsselt ist, nur dann verschlüsselt, wenn Sie die serverseitige Verschlüsselung explizit anfordern.

Die Antwort-Header der folgenden REST-API-Operationen geben den Header `x-amz-server-side-encryption` zurück, wenn ein Objekt unter Verwendung von SSE-S3 gespeichert wird. 
+ [PUT Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html)
+ [PUT Object – Kopieren](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html)
+ [POST Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)
+ [Initiieren eines mehrteiligen Uploads](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html)
+ [Upload Part](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPart.html)
+ [Hochladen eines Teiluploads – Kopieren](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPartCopy.html)
+ [Abschließen eines mehrteiligen Uploads](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadComplete.html)
+ [Get Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html)
+ [Head Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html)

**Anmerkung**  
Senden Sie keine Anforderungs-Header für die Verschlüsselung für `GET`- und `HEAD`-Anforderungen, wenn Ihr Objekt SSE-S3 verwendet oder der HTTP-Statuscodefehler 400 (Ungültige Anfrage) zurückgegeben wird.

## Unter Verwendung der AWS SDKs
<a name="s3-using-sdks"></a>

Bei der Verwendung können Sie Amazon S3 auffordern AWS SDKs, serverseitige Verschlüsselung mit verwalteten Amazon S3 S3-Verschlüsselungsschlüsseln (SSE-S3) zu verwenden. Dieser Abschnitt enthält Beispiele für die Verwendung von AWS SDKs in mehreren Sprachen. Informationen zu anderen SDKs finden Sie unter [Beispielcode und Bibliotheken](https://aws.amazon.com/code). 

------
#### [ Java ]

Wenn Sie das verwenden, AWS SDK für Java um ein Objekt hochzuladen, können Sie SSE-S3 verwenden, um es zu verschlüsseln. Um eine serverseitige Verschlüsselung anzufordern, legen Sie mit der `ObjectMetadata`-Eigenschaft der `PutObjectRequest` den Anforderungs-Header `x-amz-server-side-encryption` fest. Wenn Sie die Methode `putObject()` des `AmazonS3Client`-Clients aufrufen, verschlüsselt und speichert Amazon S3 die Daten.

Sie können auch die Verschlüsselung mit SSE-S3 anfordern, wenn Sie Objekte mit der API-Operation für mehrteilige Uploads hochladen: 
+ Wenn Sie die High-Level-API-Operation für mehrteilige Uploads verwenden, wenden Sie mit der Methode `TransferManager` serverseitige Verschlüsselung auf Objekte an, während Sie sie hochladen. Sie können eine beliebige der Upload-Methoden nutzen, die `ObjectMetadata` als Parameter entgegennehmen. Weitere Informationen finden Sie unter [Hochladen eines Objekts mit Multipart-Upload](mpu-upload-object.md).
+ Wenn Sie die Low-Level-API-Operation für mehrteilige Uploads verwenden, legen Sie die serverseitige Verschlüsselung beim Initiieren des mehrteiligen Uploads fest. Sie fügen die Eigenschaft `ObjectMetadata` beim Aufruf der Methode `InitiateMultipartUploadRequest.setObjectMetadata()` hinzu. Weitere Informationen finden Sie unter [Verwenden der AWS SDKs (Low-Level-API)](mpu-upload-object.md#mpu-upload-low-level).

Sie können den Verschlüsselungsstatus eines Objekts (Verschlüsseln eines unverschlüsselten Objekts oder Entschlüsseln eines verschlüsselten Objekts) nicht direkt ändern. Um den Verschlüsselungsstatus eines Objekts zu ändern, erstellen Sie eine Kopie des Objekts, geben dabei den gewünschten Verschlüsselungsstatus der Kopie an und löschen dann das Originalobjekt. Amazon S3 verschlüsselt das kopierte Objekt nur, wenn Sie explizit eine serverseitige Verschlüsselung anfordern. Um die Verschlüsselung des kopierten Objekts über die Java-API anzufordern, geben Sie unter Verwendung der `ObjectMetadata`-Eigenschaft eine serverseitige Verschlüsselung in der `CopyObjectRequest` an.

**Example Beispiel**  
Das folgende Beispiel veranschaulicht, wie Sie die serverseitige Verschlüsselung unter Verwendung des AWS SDK für Java festlegen. Es veranschaulicht, wie Sie die folgenden Aufgaben ausführen:  
+ Laden Sie ein neues Objekt mit SSE-S3 hoch.
+ Ändern des Verschlüsselungsstatus eines Objekts (in diesem Beispiel Verschlüsseln eines zuvor unverschlüsselten Objekts) durch Anfertigen einer Kopie des Objekts
+ Überprüfen des Verschlüsselungsstatus des Objekts
Weitere Informationen zur serverseitigen Verschlüsselung finden Sie unter [Verwenden der REST-API](#SSEUsingRESTAPI). Anweisungen zum Erstellen und Testen eines funktionierenden Beispiels finden Sie unter [Erste Schritte im AWS SDK für Java Entwicklerhandbuch](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/getting-started.html).  

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.internal.SSEResultBase;
import com.amazonaws.services.s3.model.*;

import java.io.ByteArrayInputStream;

public class SpecifyServerSideEncryption {

    public static void main(String[] args) {
        Regions clientRegion = Regions.DEFAULT_REGION;
        String bucketName = "*** Bucket name ***";
        String keyNameToEncrypt = "*** Key name for an object to upload and encrypt ***";
        String keyNameToCopyAndEncrypt = "*** Key name for an unencrypted object to be encrypted by copying ***";
        String copiedObjectKeyName = "*** Key name for the encrypted copy of the unencrypted object ***";

        try {
            AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                    .withRegion(clientRegion)
                    .withCredentials(new ProfileCredentialsProvider())
                    .build();

            // Upload an object and encrypt it with SSE.
            uploadObjectWithSSEEncryption(s3Client, bucketName, keyNameToEncrypt);

            // Upload a new unencrypted object, then change its encryption state
            // to encrypted by making a copy.
            changeSSEEncryptionStatusByCopying(s3Client,
                    bucketName,
                    keyNameToCopyAndEncrypt,
                    copiedObjectKeyName);
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 couldn't process
            // it, so it returned an error response.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 couldn't be contacted for a response, or the client
            // couldn't parse the response from Amazon S3.
            e.printStackTrace();
        }
    }

    private static void uploadObjectWithSSEEncryption(AmazonS3 s3Client, String bucketName, String keyName) {
        String objectContent = "Test object encrypted with SSE";
        byte[] objectBytes = objectContent.getBytes();

        // Specify server-side encryption.
        ObjectMetadata objectMetadata = new ObjectMetadata();
        objectMetadata.setContentLength(objectBytes.length);
        objectMetadata.setSSEAlgorithm(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION);
        PutObjectRequest putRequest = new PutObjectRequest(bucketName,
                keyName,
                new ByteArrayInputStream(objectBytes),
                objectMetadata);

        // Upload the object and check its encryption status.
        PutObjectResult putResult = s3Client.putObject(putRequest);
        System.out.println("Object \"" + keyName + "\" uploaded with SSE.");
        printEncryptionStatus(putResult);
    }

    private static void changeSSEEncryptionStatusByCopying(AmazonS3 s3Client,
            String bucketName,
            String sourceKey,
            String destKey) {
        // Upload a new, unencrypted object.
        PutObjectResult putResult = s3Client.putObject(bucketName, sourceKey, "Object example to encrypt by copying");
        System.out.println("Unencrypted object \"" + sourceKey + "\" uploaded.");
        printEncryptionStatus(putResult);

        // Make a copy of the object and use server-side encryption when storing the
        // copy.
        CopyObjectRequest request = new CopyObjectRequest(bucketName,
                sourceKey,
                bucketName,
                destKey);
        ObjectMetadata objectMetadata = new ObjectMetadata();
        objectMetadata.setSSEAlgorithm(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION);
        request.setNewObjectMetadata(objectMetadata);

        // Perform the copy operation and display the copy's encryption status.
        CopyObjectResult response = s3Client.copyObject(request);
        System.out.println("Object \"" + destKey + "\" uploaded with SSE.");
        printEncryptionStatus(response);

        // Delete the original, unencrypted object, leaving only the encrypted copy in
        // Amazon S3.
        s3Client.deleteObject(bucketName, sourceKey);
        System.out.println("Unencrypted object \"" + sourceKey + "\" deleted.");
    }

    private static void printEncryptionStatus(SSEResultBase response) {
        String encryptionStatus = response.getSSEAlgorithm();
        if (encryptionStatus == null) {
            encryptionStatus = "Not encrypted with SSE";
        }
        System.out.println("Object encryption status is: " + encryptionStatus);
    }
}
```

------
#### [ .NET ]

Wenn Sie ein Objekt hochladen, können Sie Amazon S3 dazu anweisen, es zu verschlüsseln. Um den Verschlüsselungsstatus eines vorhandenen Objekts zu ändern, erstellen Sie eine Kopie des Objekts und löschen dann das Quellobjekt. Beachten Sie, dass die Kopieroperation das Ziel nur verschlüsselt, wenn Sie auf dem Zielobjekt ausdrücklich eine serverseitige Verschlüsselung anfordern. Fügen Sie Folgendes hinzu, um SSE-S3 in `CopyObjectRequest` anzugeben:

```
 ServerSideEncryptionMethod = ServerSideEncryptionMethod.AES256
```

Ein funktionierendes Beispiel, das zeigt, wie ein Objekt kopiert wird, finden Sie unter [Mit dem AWS SDKs](copy-object.md#CopyingObjectsUsingSDKs). 

Das folgende Beispiel lädt ein Objekt hoch. In der Anfrage weist das Beispiel Amazon S3 dazu an, das Objekt zu verschlüsseln. Das Beispiel ruft dann Objekt-Metadaten ab und überprüft die verwendete Verschlüsselungsmethode. Informationen zum Einrichten und Ausführen der Codebeispiele finden Sie unter [Getting Started with the AWS SDK for .NET](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html) im *AWS SDK for .NET Developer Guide*. 

```
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
    class SpecifyServerSideEncryptionTest
    {
        private const string bucketName = "*** bucket name ***";
        private const string keyName = "*** key name for object created ***";
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 client;

        public static void Main()
        {
            client = new AmazonS3Client(bucketRegion);
            WritingAnObjectAsync().Wait();
        }

        static async Task WritingAnObjectAsync()
        {
            try
            {
                var putRequest = new PutObjectRequest
                {
                    BucketName = bucketName,
                    Key = keyName,
                    ContentBody = "sample text",
                    ServerSideEncryptionMethod = ServerSideEncryptionMethod.AES256
                };

                var putResponse = await client.PutObjectAsync(putRequest);

                // Determine the encryption state of an object.
                GetObjectMetadataRequest metadataRequest = new GetObjectMetadataRequest
                {
                    BucketName = bucketName,
                    Key = keyName
                };
                GetObjectMetadataResponse response = await client.GetObjectMetadataAsync(metadataRequest);
                ServerSideEncryptionMethod objectEncryption = response.ServerSideEncryptionMethod;

                Console.WriteLine("Encryption method used: {0}", objectEncryption.ToString());
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine("Error encountered ***. Message:'{0}' when writing an object", e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message);
            }
        }
    }
}
```

------
#### [ PHP ]

In diesem Thema wird gezeigt, wie Sie Klassen aus Version 3 von verwenden AWS SDK für PHP , um SSE-S3 zu Objekten hinzuzufügen, die Sie auf Amazon S3 hochladen. Weitere Informationen zum AWS SDK for Ruby API finden Sie unter [AWS SDK for Ruby — Version 2.](https://docs.aws.amazon.com/sdkforruby/api/index.html)

Um ein Objekt zu Amazon S3 hochzuladen, verwenden Sie die Methode [Aws\$1S3\$1S3Client::putObject()](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putobject). Um Ihrer Upload-Anfrage den Anfrage-Header `x-amz-server-side-encryption` hinzuzufügen, geben Sie den Parameter `ServerSideEncryption` mit dem Wert `AES256` an, wie im folgenden Codebeispiel veranschaulicht. Weitere Informationen zur serverseitigen Verschlüsselungsanforderungen finden Sie unter [Verwenden der REST-API](#SSEUsingRESTAPI).

```
 require 'vendor/autoload.php';

use Aws\S3\S3Client;

$bucket = '*** Your Bucket Name ***';
$keyname = '*** Your Object Key ***';

// $filepath should be an absolute path to a file on disk.
$filepath = '*** Your File Path ***';

$s3 = new S3Client([
    'version' => 'latest',
    'region'  => 'us-east-1'
]);

// Upload a file with server-side encryption.
$result = $s3->putObject([
    'Bucket'               => $bucket,
    'Key'                  => $keyname,
    'SourceFile'           => $filepath,
    'ServerSideEncryption' => 'AES256',
]);
```

Amazon S3 gibt als Antwort den `x-amz-server-side-encryption`-Header mit dem Wert zurück, den der Verschlüsselungsalgorithmus für die Verschlüsselung Ihrer Objektdaten verwendet hat. 

Wenn Sie große Objekte mithilfe der API-Operation für mehrteilige Uploads hochladen, können Sie wie folgt SSE-S3 für diese Objekte angeben: 
+ Wenn Sie den mehrteiligen Upload-API-Vorgang auf niedriger Ebene verwenden, geben Sie beim Aufrufen der Methode [Aws\$1 S3\$1 S3Client::](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#createmultipartupload) () die serverseitige Verschlüsselung an. createMultipartUpload Um Ihrer Upload-Anfrage den Anfrage-Header `x-amz-server-side-encryption` hinzuzufügen, geben Sie für den Parameter `array` den `ServerSideEncryption`-Schlüssel mit dem Wert `AES256` an. Weitere Informationen zur Low-Level-API-Operation für mehrteilige Uploads finden Sie unter [Verwenden der AWS SDKs (Low-Level-API)](mpu-upload-object.md#mpu-upload-low-level).
+ Wenn Sie den API-Vorgang für mehrteiligen Upload auf hoher Ebene verwenden, geben Sie die serverseitige Verschlüsselung an, indem Sie den Parameter des API-Vorgangs verwenden. `ServerSideEncryption` [CreateMultipartUpload](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#createmultipartupload) Ein Beispiel für die Verwendung der Methode `setOption()` mit der High-Level-API-Operation für mehrteilige Uploads finden Sie unter [Hochladen eines Objekts mit Multipart-Upload](mpu-upload-object.md).

Um den Verschlüsselungsstatus eines vorhandenen Objekts zu bestimmen, rufen Sie die Objektmetadaten mit der Methode [Aws\$1S3\$1S3Client::headObject()](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#headobject) ab, wie im folgenden PHP-Codebeispiel veranschaulicht.

```
 require 'vendor/autoload.php';

use Aws\S3\S3Client;

$bucket = '*** Your Bucket Name ***';
$keyname = '*** Your Object Key ***';

$s3 = new S3Client([
    'version' => 'latest',
    'region'  => 'us-east-1'
]);

// Check which server-side encryption algorithm is used.
$result = $s3->headObject([
    'Bucket' => $bucket,
    'Key'    => $keyname,
]);
echo $result['ServerSideEncryption'];
```

Um den Verschlüsselungsstatus eines vorhandenen Objekts zu ändern, erstellen Sie mittels der Methode [Aws\$1S3\$1S3Client::copyObject()](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#copyobject) eine Kopie des Objekts und löschen dann das Quellobjekt. Standardmäßig verschlüsselt `copyObject()` das Ziel nicht, es sei denn, Sie fordern explizit die serverseitige Verschlüsselung des Zielobjekts an, indem Sie den Parameter `ServerSideEncryption` mit dem Wert `AES256` angeben. Im folgenden PHP-Codebeispiel wird eine Kopie eines Objekts erstellt und dem kopierten Objekt eine serverseitige Verschlüsselung hinzugefügt.

```
 require 'vendor/autoload.php';

use Aws\S3\S3Client;

$sourceBucket = '*** Your Source Bucket Name ***';
$sourceKeyname = '*** Your Source Object Key ***';

$targetBucket = '*** Your Target Bucket Name ***';
$targetKeyname = '*** Your Target Object Key ***';

$s3 = new S3Client([
    'version' => 'latest',
    'region'  => 'us-east-1'
]);

// Copy an object and add server-side encryption.
$s3->copyObject([
    'Bucket'               => $targetBucket,
    'Key'                  => $targetKeyname,
    'CopySource'           => "$sourceBucket/$sourceKeyname",
    'ServerSideEncryption' => 'AES256',
]);
```

Weitere Informationen finden Sie unter den folgenden Themen:
+ [AWS SDK für PHP für Amazon S3 Aws\$1 S3\$1 S3Client-Klasse](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.S3.S3Client.html) 
+ [AWS SDK für PHP -Dokumentation](https://aws.amazon.com/documentation/sdk-for-php/)

------
#### [ Ruby ]

Wenn Sie die AWS SDK für Ruby zum Hochladen eines Objekts verwenden, können Sie angeben, dass das Objekt im Ruhezustand mit SSE-S3 verschlüsselt gespeichert wird. Wenn Sie das Objekt zurücklesen, wird es automatisch entschlüsselt.

Das folgende Beispiel für AWS SDK für Ruby Version 3 zeigt, wie angegeben wird, dass eine auf Amazon S3 hochgeladene Datei im Ruhezustand verschlüsselt wird.

```
require 'aws-sdk-s3'

# Wraps Amazon S3 object actions.
class ObjectPutSseWrapper
  attr_reader :object

  # @param object [Aws::S3::Object] An existing Amazon S3 object.
  def initialize(object)
    @object = object
  end

  def put_object_encrypted(object_content, encryption)
    @object.put(body: object_content, server_side_encryption: encryption)
    true
  rescue Aws::Errors::ServiceError => e
    puts "Couldn't put your content to #{object.key}. Here's why: #{e.message}"
    false
  end
end

# Example usage:
def run_demo
  bucket_name = "amzn-s3-demo-bucket"
  object_key = "my-encrypted-content"
  object_content = "This is my super-secret content."
  encryption = "AES256"

  wrapper = ObjectPutSseWrapper.new(Aws::S3::Object.new(bucket_name, object_content))
  return unless wrapper.put_object_encrypted(object_content, encryption)

  puts "Put your content into #{bucket_name}:#{object_key} and encrypted it with #{encryption}."
end

run_demo if $PROGRAM_NAME == __FILE__
```

Das folgende Beispiel zeigt, wie Sie den Verschlüsselungsstatus eines vorhandenen Objekts bestimmen.

```
require 'aws-sdk-s3'

# Wraps Amazon S3 object actions.
class ObjectGetEncryptionWrapper
  attr_reader :object

  # @param object [Aws::S3::Object] An existing Amazon S3 object.
  def initialize(object)
    @object = object
  end

  # Gets the object into memory.
  #
  # @return [Aws::S3::Types::GetObjectOutput, nil] The retrieved object data if successful; otherwise nil.
  def object
    @object.get
  rescue Aws::Errors::ServiceError => e
    puts "Couldn't get object #{@object.key}. Here's why: #{e.message}"
  end
end

# Example usage:
def run_demo
  bucket_name = "amzn-s3-demo-bucket"
  object_key = "my-object.txt"

  wrapper = ObjectGetEncryptionWrapper.new(Aws::S3::Object.new(bucket_name, object_key))
  obj_data = wrapper.get_object
  return unless obj_data

  encryption = obj_data.server_side_encryption.nil? ? 'no' : obj_data.server_side_encryption
  puts "Object #{object_key} uses #{encryption} encryption."
end

run_demo if $PROGRAM_NAME == __FILE__
```

Wenn die serverseitige Verschlüsselung für das in Amazon S3 gespeicherte Objekt nicht verwendet wird, gibt die Methode `null` zurück.

Um den Verschlüsselungsstatus eines vorhandenen Objekts zu ändern, erstellen Sie eine Kopie des Objekts und löschen dann das Quellobjekt. Standardmäßig verschlüsseln die Methoden zum Kopieren das Ziel nicht, es sei denn, Sie fordern explizit die serverseitige Verschlüsselung an. Sie können die Verschlüsselung des Zielobjekts anfordern, indem Sie den Wert `server_side_encryption` im Hash-Argument der Option angeben, wie im folgenden Ruby-Codebeispiel gezeigt. Das Code-Beispiel zeigt, wie ein Objekt kopiert und die Kopie mit SSE-S3 verschlüsselt wird. 

```
require 'aws-sdk-s3'

# Wraps Amazon S3 object actions.
class ObjectCopyEncryptWrapper
  attr_reader :source_object

  # @param source_object [Aws::S3::Object] An existing Amazon S3 object. This is used as the source object for
  #                                        copy actions.
  def initialize(source_object)
    @source_object = source_object
  end

  # Copy the source object to the specified target bucket, rename it with the target key, and encrypt it.
  #
  # @param target_bucket [Aws::S3::Bucket] An existing Amazon S3 bucket where the object is copied.
  # @param target_object_key [String] The key to give the copy of the object.
  # @return [Aws::S3::Object, nil] The copied object when successful; otherwise, nil.
  def copy_object(target_bucket, target_object_key, encryption)
    @source_object.copy_to(bucket: target_bucket.name, key: target_object_key, server_side_encryption: encryption)
    target_bucket.object(target_object_key)
  rescue Aws::Errors::ServiceError => e
    puts "Couldn't copy #{@source_object.key} to #{target_object_key}. Here's why: #{e.message}"
  end
end

# Example usage:
def run_demo
  source_bucket_name = "amzn-s3-demo-bucket1"
  source_key = "my-source-file.txt"
  target_bucket_name = "amzn-s3-demo-bucket2"
  target_key = "my-target-file.txt"
  target_encryption = "AES256"

  source_bucket = Aws::S3::Bucket.new(source_bucket_name)
  wrapper = ObjectCopyEncryptWrapper.new(source_bucket.object(source_key))
  target_bucket = Aws::S3::Bucket.new(target_bucket_name)
  target_object = wrapper.copy_object(target_bucket, target_key, target_encryption)
  return unless target_object

  puts "Copied #{source_key} from #{source_bucket_name} to #{target_object.bucket_name}:#{target_object.key} and "\
       "encrypted the target with #{target_object.server_side_encryption} encryption."
end

run_demo if $PROGRAM_NAME == __FILE__
```

------

## Mit dem AWS CLI
<a name="sse-s3-aws-cli"></a>

Verwenden Sie das folgende Beispiel, um SSE-S3 anzugeben AWS CLI, wenn Sie ein Objekt mithilfe von hochladen.

```
aws s3api put-object --bucket amzn-s3-demo-bucket1 --key object-key-name --server-side-encryption AES256  --body file path
```

Weitere Informationen finden Sie unter [put-object](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-object.html) in der *AWS CLI -Referenz*. [Informationen zur Angabe von SSE-S3 beim Kopieren eines Objekts mithilfe von finden Sie unter copy-object. AWS CLI](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/copy-object.html)

## Verwenden CloudFormation
<a name="ss3-s3-cfn"></a>

Beispiele für das Einrichten der Verschlüsselung mit finden [Sie unter Erstellen eines Buckets mit Standardverschlüsselung](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-serversideencryptionrule.html#aws-properties-s3-bucket-serversideencryptionrule--examples--Create_a_bucket_with_default_encryption) und unter [Erstellen eines Buckets mithilfe AWS KMS serverseitiger Verschlüsselung mit einem S3-Bucket-Key](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-serversideencryptionrule.html#aws-properties-s3-bucket-serversideencryptionrule--examples--Create_a_bucket_using_AWS_KMS_server-side_encryption_with_an_S3_Bucket_Key) im `AWS::S3::Bucket ServerSideEncryptionRule` Thema im *AWS CloudFormation Benutzerhandbuch*. CloudFormation