

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.

# Richtlinienbeispiele für ACLs
<a name="example-bucket-policies-condition-keys"></a>

Sie können den Zugriff auf Amazon S3 über Bedingungsschlüssel in Bucket-Richtlinien steuern.

**Topics**
+ [Gewährung der PutObject s3-Berechtigung mit einer Bedingung, dass der Bucket-Besitzer die volle Kontrolle erhält](#grant-putobject-conditionally-1)
+ [Gewährung der s3: PutObject -Berechtigung mit einer Bedingung für den x-amz-acl-Header](#example-acl-header)

## Gewährung der PutObject s3-Berechtigung mit einer Bedingung, dass der Bucket-Besitzer die volle Kontrolle erhält
<a name="grant-putobject-conditionally-1"></a>

Die Operation [PUT Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html) ermöglicht Zugriffskontrolllisten (ACL) -spezifische Header, mit denen Sie Berechtigungen erteilen ACL-based können. Mit diesen Schlüsseln kann der Bucket-Eigentümer eine Bedingung festlegen, die bestimmte Zugriffsberechtigungen erfordert, wenn der Benutzer ein Objekt hochlädt. 

Angenommen, Konto A besitzt einen Bucket und der Kontoadministrator möchte Dave, einem Benutzer in Konto B, Berechtigungen zum Hochladen von Objekten erteilen. Standardmäßig gehören Objekte, die Dave hochgeladen hat, zu Konto B, und Konto A besitzt keine Berechtigungen für diese Objekte. Da der Bucket-Eigentümer die Rechnungen bezahlt, benötigt er volle Berechtigungen für die Objekte, die Dave hochlädt. Das Konto Ein Administrator kann dies tun, indem er Dave die `s3:PutObject` entsprechende Berechtigung erteilt, allerdings unter der Bedingung, dass die Anfrage ACL-specific Header enthält, die entweder explizit volle Zugriffsrechte gewähren oder eine vordefinierte ACL verwenden. Weitere Informationen finden Sie unter [PUT Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html).

### Erfordert den x-amz-full-control-Header
<a name="require-x-amz-full-control"></a>

Sie können in der Anforderung den Header `x-amz-full-control` mit vollständiger Kontrollberechtigung für den Bucket-Eigentümer anfordern. Die folgende Bucket-Richtlinie erteilt dem Benutzer Dave die Berechtigung `s3:PutObject` mit einer Bedingung, die den Bedingungsschlüssel `s3:x-amz-grant-full-control` enthält, in die Anforderung den Header `x-amz-full-control` aufzunehmen.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "statement1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::{{111122223333}}:user/Dave"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::{{awsexamplebucket1}}/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-grant-full-control": "id={{AccountA-CanonicalUserID}}"
                }
            }
        }
    ]
}
```

------

**Anmerkung**  
In diesem Beispiel geht es um die kontoübergreifende Berechtigung. Wenn Dave (der die Erlaubnis erhält) jedoch zu dem gehört AWS-Konto , dem der Bucket gehört, ist diese bedingte Berechtigung nicht erforderlich. Grund hierfür ist, dass das übergeordnete Konto, dem Dave angehört, Eigentümer von Objekten ist, die der Benutzer hochlädt.

**Hinzufügen einer expliziten Zugriffsverweigerung**  
Die vorherige Bucket-Richtlinie erteilt dem Benutzer Dave in Konto B eine bedingte Berechtigung. Während diese Richtlinie in Kraft ist, ist es Dave möglich, die gleiche Berechtigung ohne Bedingung über eine andere Richtlinie zu erhalten. Beispiel: Dave kann einer Gruppe angehören, der Sie die Berechtigung `s3:PutObject` bedingungslos erteilen. Um solche Berechtigungslücken zu vermeiden, können Sie eine strengere Zugriffsrichtlinie schreiben, indem Sie eine explizite Zugriffsverweigerung hinzufügen. In diesem Beispiel verweigern Sie explizit die Upload-Berechtigung für Benutzer Dave, wenn er nicht die erforderlichen Header in die Anforderung einbindet, die dem Bucket-Eigentümer volle Berechtigungen gewährt. Eine explizite Verweigerung ersetzt immer eine anderswo erteilte Erlaubnis. Im Folgenden finden Sie das geänderte Zugriffsrichtlinienbeispiel mit hinzugefügter expliziter Ablehnung.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "statement1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::{{111122223333}}:user/AccountBadmin"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::{{awsexamplebucket1}}/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-grant-full-control": "id={{AccountA-CanonicalUserID}}"
                }
            }
        },
        {
            "Sid": "statement2",
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam::{{111122223333}}:user/AccountBadmin"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::{{awsexamplebucket1}}/*",
            "Condition": {
                "StringNotEquals": {
                    "s3:x-amz-grant-full-control": "id={{AccountA-CanonicalUserID}}"
                }
            }
        }
    ]
}
```

------

**Testen Sie die Richtlinie mit AWS CLI**  
Wenn Sie zwei haben AWS-Konten, können Sie die Richtlinie mit dem AWS Command Line Interface (AWS CLI) testen. Sie hängen die Richtlinie an und verwenden Daves Anmeldeinformationen, um die Berechtigung mit dem folgenden AWS CLI `put-object` Befehl zu testen. Sie stellen dem Benutzer Dave die Anmeldeinformationen bereit, indem Sie den Parameter `--profile` hinzufügen. Sie erteilen dem Bucket-Eigentümer die volle Kontrolle, indem Sie den Parameter `--grant-full-control` hinzufügen. Weitere Informationen zur Einrichtung und Verwendung von finden Sie unter [Entwickeln mit Amazon S3 mithilfe der AWS CLI](https://docs.aws.amazon.com/AmazonS3/latest/API/setup-aws-cli.html) in der *Amazon S3 S3-API-Referenz*. AWS CLI

```
aws s3api put-object --bucket {{examplebucket}} --key HappyFace.jpg --body c:\HappyFace.jpg --grant-full-control id="{{AccountA-CanonicalUserID}}" --profile AccountBUserProfile
```

### Erfordert den x-amz-acl-Header
<a name="require-x-amz-acl-header"></a>

Sie können den Header `x-amz-acl` mit einer vordefinierten ACL anfordern, die dem Bucket-Eigentümer die vollständige Kontrollberechtigung erteilt. Um den Header `x-amz-acl` in der Anforderung erforderlich zu machen, können Sie das Schlüssel-Wert-Paar im Block `Condition` ersetzen und den Bedingungsschlüssel `s3:x-amz-acl` wie im folgenden Beispiel dargestellt angeben.

```
"Condition": {
    "StringEquals": {
        "s3:x-amz-acl": "bucket-owner-full-control"
    }
}
```

Um die Berechtigung mit dem zu testen AWS CLI, geben Sie den `--acl` Parameter an. Der fügt AWS CLI dann den `x-amz-acl` Header hinzu, wenn er die Anfrage sendet.

```
aws s3api put-object --bucket {{examplebucket}} --key HappyFace.jpg --body c:\HappyFace.jpg --acl "bucket-owner-full-control" --profile AccountBadmin
```

## Gewährung der s3: PutObject -Berechtigung mit einer Bedingung für den x-amz-acl-Header
<a name="example-acl-header"></a>

Die folgende Bucket-Richtlinie gewährt die `s3:PutObject` Erlaubnis für zwei Personen, AWS-Konten wenn die Anfrage den `x-amz-acl` Header enthält, der das Objekt öffentlich lesbar macht. Der `Condition`-Block verwendet die `StringEquals`-Bedingung und ist mit dem Schlüssel-Wert-Paar `"s3:x-amz-acl":["public-read"]` zur Auswertung versehen. Im Schlüssel-Wert-Paar ist `s3:x-amz-acl` ein Amazon S3–spezifischer Schlüssel, wie durch das Präfix `s3:` angezeigt ist. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AddCannedAcl",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::{{111122223333}}:root",
                    "arn:aws:iam::{{111122223333}}:root"
                ]
            },
            "Action": "s3:PutObject",
            "Resource": [
                "arn:aws:s3:::{{awsexamplebucket1}}/*"
            ],
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": [
                        "public-read"
                    ]
                }
            }
        }
    ]
}
```

------

**Wichtig**  
Nicht alle Bedingungen machen für alle Aktionen auch Sinn. Beispielsweise ist es sinnvoll, die Bedingung `s3:LocationConstraint` für eine Richtlinie einzufügen, die die Amazon-S3-Berechtigung `s3:CreateBucket` erteilt. Es ist jedoch nicht sinnvoll, diese Bedingung in eine Richtlinie aufzunehmen, die die `s3:GetObject`-Genehmigung erteilt. Amazon S3 kann auf semantische Fehler dieses Typs testen, die Amazon-S3-spezifische Bedingungen beinhalten. Wenn Sie jedoch eine Richtlinie für eine(n) IAM-Benutzer oder -Rolle erstellen und eine semantisch ungültige Amazon-S3-Bedingung einfügen, wird kein Fehler gemeldet, weil IAM keine Amazon-S3-Bedingungen validieren kann. 