

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.

# Beispiele für Bucket-Richtlinien mit Bedingungsschlüsseln
<a name="amazon-s3-policy-keys"></a>

Sie können die Sprache der Zugriffsrichtlinie verwenden, um Bedingungen anzugeben, wenn Sie Berechtigungen erteilen. Sie können das optionale `Condition`-Element oder den `Condition`-Block verwenden, um anzugeben, unter welchen Bedingungen eine Richtlinie wirksam ist. 

Richtlinien, die Amazon-S3-Bedingungsschlüssel für Objekt- und Bucket-Vorgänge verwenden, finden Sie in den folgenden Beispielen. Weitere Informationen über Bedingungsschlüssel finden Sie unter [Richtlinienbedingungsschlüssel für Amazon S3](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-conditionkeys). Eine vollständige Liste der Amazon-S3-Aktionen, -Bedingungsschlüssel und -Ressourcen, die Sie in Richtlinien angeben können, finden Sie unter [Aktionen, Ressourcen und Bedingungsschlüssel für Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html) in der *Service-Authorization-Referenz*.

Weitere Informationen zu den Berechtigungen für S3-API-Operationen nach S3-Ressourcentypen finden Sie unter [Erforderliche Berechtigungen für Amazon-S3-API-Operationen](using-with-s3-policy-actions.md).

## Beispiele: Amazon-S3-Bedingungsschlüssel für Objektoperationen
<a name="object-keys-in-amazon-s3-policies"></a>

Die folgenden Beispiele zeigen, wie Sie Amazon-S3‑spezifische Bedingungsschlüssel für Objektoperationen verwenden können. Eine vollständige Liste der Amazon-S3-Aktionen, -Bedingungsschlüssel und -Ressourcen, die Sie in Richtlinien angeben können, finden Sie unter [Aktionen, Ressourcen und Bedingungsschlüssel für Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html) in der *Service-Authorization-Referenz*.

Weitere Informationen zu den Berechtigungen für S3-API-Operationen nach S3-Ressourcentypen finden Sie unter [Erforderliche Berechtigungen für Amazon-S3-API-Operationen](using-with-s3-policy-actions.md).

Einige der Beispielrichtlinien zeigen, wie Sie Bedingungsschlüssel mit [PUT Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html)-Vorgänge verwenden können. PUT Object-Vorgänge ermöglichen für Access Control List (ACL) spezifische Header, mit denen Sie ACL-basierte Berechtigungen erteilen können. Durch die Verwendung dieser Bedingungsschlüssel können Sie eine Bedingung festlegen, die bestimmte Zugriffsberechtigungen erfordert, wenn der Benutzer ein Objekt hochlädt. Sie können im Rahmen des Vorgangs auch ACL-basierte Berechtigungen gewähren. PutObjectAcl Weitere Informationen finden Sie [PutObjectAcl](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html)in der *Amazon S3 Amazon Simple Storage Service API-Referenz*. Weitere Informationen zu finden ACLs Sie unter[Zugriffskontrolllisten (ACL) – Übersicht](acl-overview.md).

**Topics**
+ [Beispiel 1: Gewähren einer `s3:PutObject`-Berechtigung, die erfordert, dass Objekte mit serverseitiger Verschlüsselung gespeichert werden.](#putobject-require-sse-2)
+ [Beispiel 2: Erteilen der `s3:PutObject`-Berechtigung zum Kopieren von Objekten mit einer Einschränkung auf die Kopierquelle](#putobject-limit-copy-source-3)
+ [Beispiel 3: Gewähren des Zugriffs auf eine bestimmte Version eines Objekts](#getobjectversion-limit-access-to-specific-version-3)
+ [Beispiel 4: Erteilen von Berechtigungen basierend auf Objekt-Tags](#example-object-tagging-access-control)
+ [Beispiel 5: Beschränken des Zugriffs anhand der AWS-Konto ID des Bucket-Besitzers](#example-object-resource-account)
+ [Beispiel 6: Mindestanforderung für die TLS-Version](#example-object-tls-version)
+ [Beispiel 7: Ausschließen bestimmter Prinzipale aus einer `Deny`-Anweisung](#example-exclude-principal-from-deny-statement)
+ [Beispiel 8: Erzwingen, dass Clients Objekte auf der Grundlage von Objektschlüsselnamen bedingt hochladen oder ETags](#example-conditional-writes-enforce)

### Beispiel 1: Gewähren einer `s3:PutObject`-Berechtigung, die erfordert, dass Objekte mit serverseitiger Verschlüsselung gespeichert werden.
<a name="putobject-require-sse-2"></a>

Angenommen, Konto A besitzt einen Bucket. Der Kontoadministrator möchte Jane, einer Benutzerin in Konto A, die Berechtigung erteilen, Objekte hochzuladen, unter der Bedingung, dass Jane stets eine serverseitige Verschlüsselung mit von Amazon S3 verwalteten Schlüsseln (SSE-S3) anfordert. Der Administrator von Konto A kann für diesen Zweck, wie gezeigt, mit dem Bedingungsschlüssel `s3:x-amz-server-side-encryption` arbeiten. Das Schlüssel-Wert-Paar im folgenden `Condition`-Block gibt den `s3:x-amz-server-side-encryption`-Bedingungsschlüssel und SSE-S3 (`AES256`) als Verschlüsselungstyp an:

```
"Condition": {
     "StringNotEquals": {
         "s3:x-amz-server-side-encryption": "AES256"
     }}
```

Wenn Sie diese Berechtigung mit dem testen AWS CLI, müssen Sie die erforderliche Verschlüsselung mithilfe des `--server-side-encryption` Parameters hinzufügen, wie im folgenden Beispiel gezeigt. Wenn Sie diese Beispielbefehl verwenden möchten, ersetzen Sie `user input placeholders` durch Ihre Informationen. 

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key HappyFace.jpg --body c:\HappyFace.jpg --server-side-encryption "AES256" --profile AccountAadmin
```

### Beispiel 2: Erteilen der `s3:PutObject`-Berechtigung zum Kopieren von Objekten mit einer Einschränkung auf die Kopierquelle
<a name="putobject-limit-copy-source-3"></a>

Wenn Sie in der `PUT`-Objektanforderung ein Quellobjekt angeben, handelt es sich um eine Kopieroperation (siehe [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html)). Dementsprechend kann der Bucket-Eigentümer einem Benutzer die Berechtigung erteilen, Objekte mit Einschränkungen in Bezug auf die Quelle zu kopieren, z. B.:
+ Erlauben Sie das Kopieren von Objekten nur aus dem angegebenen Quell-Bucket (zum Beispiel `amzn-s3-demo-source-bucket`).
+ Erlauben Sie das Kopieren von Objekten aus dem angegebenen Quell-Bucket und nur von Objekten, deren Schlüsselnamen-Präfix mit einem bestimmten Präfix beginnt, wie z. B. *`public/`* (zum Beispiel `amzn-s3-demo-source-bucket/public/*`).
+ Erlauben Sie das Kopieren nur eines bestimmten Objekts aus dem Quell-Bucket (zum Beispiel `amzn-s3-demo-source-bucket/example.jpg`).

Die folgende Bucket-Richtlinie erteilt einem Benutzer `Dave` die `s3:PutObject`-Berechtigung. Diese Richtlinie erlaubt es ihm, Objekte nur unter der Bedingung zu kopieren, dass die Anforderung den `s3:x-amz-copy-source`-Header enthält und der Headerwert das `/amzn-s3-demo-source-bucket/public/*`-Schlüsselnamenpräfix angibt. Wenn Sie diese Beispielrichtlinie verwenden möchten, ersetzen Sie `user input placeholders` durch Ihre eigenen Informationen.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
       {
            "Sid": "cross-account permission to user in your own account",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/Dave"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
        },
        {
            "Sid": "Deny your user permission to upload object if copy source is not /bucket/prefix",
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/Dave"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-source-bucket/*",
            "Condition": {
                "StringNotLike": {
                    "s3:x-amz-copy-source": "amzn-s3-demo-source-bucket/public/*"
                }
            }
        }
    ]
}
```

------

**Testen Sie die Richtlinie mit dem AWS CLI**  
Sie können die Berechtigung mit dem AWS CLI `copy-object` Befehl testen. Sie geben die Quelle an, indem Sie den Parameter `--copy-source` hinzufügen. Das Schlüsselnamenpräfix muss dem Präfix entsprechen, das in der Richtlinie zulässig ist. Sie müssen die Anmeldeinformationen des Benutzers Dave mit dem Parameter `--profile` angeben. Weitere Informationen zur Einrichtung 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 copy-object --bucket amzn-s3-demo-source-bucket --key HappyFace.jpg 
--copy-source amzn-s3-demo-source-bucket/public/PublicHappyFace1.jpg --profile AccountADave
```

**Erteilen der Berechtigung, nur ein bestimmtes Objekt zu kopieren**  
Die vorherige Richtlinie verwendet die Bedingung `StringNotLike`. Um die Berechtigung zu erteilen, nur ein bestimmtes Objekt zu kopieren, müssen Sie die Bedingung von `StringNotLike` zu `StringNotEquals` ändern und dann den genauen Objektschlüssel angeben, wie im folgenden Beispiel gezeigt. Wenn Sie diese Beispielbefehl verwenden möchten, ersetzen Sie `user input placeholders` durch Ihre Informationen.

```
"Condition": {
       "StringNotEquals": {
           "s3:x-amz-copy-source": "amzn-s3-demo-source-bucket/public/PublicHappyFace1.jpg"
       }
}
```

### Beispiel 3: Gewähren des Zugriffs auf eine bestimmte Version eines Objekts
<a name="getobjectversion-limit-access-to-specific-version-3"></a>

Angenommen, Konto A besitzt einen Bucket mit aktivierter Versionsverwaltung. Der Bucket beinhaltet mehrere Versionen des Objekts `HappyFace.jpg`. Der Administrator von Konto A möchte nun dem Benutzer `Dave` die Berechtigung erteilen, nur eine bestimmte Version des Objekts zu erhalten. Der Kontoadministrator kann dies bewerkstelligen, indem er dem Benutzer `Dave` bedingt die `s3:GetObjectVersion`‑Berechtigung gewährt, wie im folgenden Beispiel gezeigt. Das Schlüssel-Wert-Paar im Block `Condition` gibt den Bedingungsschlüssel `s3:VersionId` an. In diesem Fall muss `Dave` die genaue Objektversions-ID kennen, um das Objekt aus dem angegebenen Bucket abzurufen. Wenn Sie diese Beispielrichtlinie verwenden möchten, ersetzen Sie `user input placeholders` durch Ihre eigenen Informationen.

Weitere Informationen finden Sie unter [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) in der *API-Referenz zu Amazon Simple Storage Service*. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "statement1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/Dave"
            },
            "Action": "s3:GetObjectVersion",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/HappyFace.jpg"
        },
        {
            "Sid": "statement2",
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/Dave"
            },
            "Action": "s3:GetObjectVersion",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/HappyFace.jpg",
            "Condition": {
                "StringNotEquals": {
                    "s3:VersionId": "AaaHbAQitwiL_h47_44lRO2DDfLlBO5e"
                }
            }
        }
    ]
}
```

------

**Testen Sie die Richtlinie mit dem AWS CLI**  
Sie können die Berechtigungen in dieser Richtlinie testen, indem Sie den AWS CLI `get-object` Befehl mit dem `--version-id` Parameter verwenden, um die spezifische Objektversion zu identifizieren, die abgerufen werden soll. Der Befehl ruf die angegebene Version des Objekts ab und speichert sie in der `OutputFile.jpg`-Datei.

```
aws s3api get-object --bucket amzn-s3-demo-bucket --key HappyFace.jpg OutputFile.jpg --version-id AaaHbAQitwiL_h47_44lRO2DDfLlBO5e --profile AccountADave
```

### Beispiel 4: Erteilen von Berechtigungen basierend auf Objekt-Tags
<a name="example-object-tagging-access-control"></a>

Beispiele für die Verwendung von Objektmarkierungs-Bedingungsschlüsseln mit Amazon-S3-Operationen finden Sie unter [Markierungs- und Zugriffskontrollrichtlinien](tagging-and-policies.md).

### Beispiel 5: Beschränken des Zugriffs anhand der AWS-Konto ID des Bucket-Besitzers
<a name="example-object-resource-account"></a>

Sie können entweder den `s3:ResourceAccount` Bedingungsschlüssel `aws:ResourceAccount` oder verwenden, um IAM- oder Virtual Private Cloud (VPC) -Endpunktrichtlinien zu schreiben, die den Benutzer-, Rollen- oder Anwendungszugriff auf die Amazon S3 S3-Buckets einschränken, die einer bestimmten ID gehören. AWS-Konto Sie können diese Bedingungsschlüssel verwenden, wenn Sie Clients in Ihrer VPC daran hindern möchten, auf Buckets zuzugreifen, die Ihnen nicht gehören.

Beachten Sie jedoch, dass einige AWS Dienste auf den Zugriff auf verwaltete Buckets angewiesen sind. AWS Daher kann es auch den Zugriff auf diese Ressourcen beeinflussen, wenn Sie den Schlüssel `aws:ResourceAccount` oder `s3:ResourceAccount` in Ihrer IAM-Richtlinie verwenden. Weitere Informationen finden Sie in den folgenden Ressourcen:
+ [Beschränken des Zugriffs auf Buckets in einem bestimmten AWS-Konto](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html#bucket-policies-s3) im *AWS PrivateLink -Handbuch*
+ [Beschränken des Zugriffs auf Buckets, die Amazon ECR verwendet](https://docs.aws.amazon.com/AmazonECR/latest/userguide/vpc-endpoints.html#ecr-minimum-s3-perms) im *Amazon-ECR-Leitfaden*
+ [Geben Sie im Handbuch den erforderlichen Zugriff auf Systems Manager für AWS verwaltete Amazon S3 S3-Buckets](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent-minimum-s3-permissions.html) *an AWS Systems Manager *

Weitere Informationen zu den `aws:ResourceAccount`- und `s3:ResourceAccount`-Bedingungsschlüsseln sowie Beispiele zu ihrer Verwendung finden Sie unter [Limit access to Amazon S3 buckets owned by specific AWS-Konten](https://aws.amazon.com/blogs/storage/limit-access-to-amazon-s3-buckets-owned-by-specific-aws-accounts/)im *AWS Storage Blog*.

### Beispiel 6: Mindestanforderung für die TLS-Version
<a name="example-object-tls-version"></a>

Sie können den Bedingungsschlüssel `s3:TlsVersion` verwenden, um IAM-, Virtual Private Cloud Endpoint (VPCE)- oder Bucket-Richtlinien zu schreiben, die den Zugriff von Benutzern oder Anwendungen auf Amazon-S3-Buckets basierend auf der vom Client verwendeten TLS-Version einschränken. Sie können diesen Bedingungsschlüssel verwenden, um Richtlinien zu schreiben, die eine minimale TLS-Version erfordern. 

**Anmerkung**  
Wenn AWS Dienste in Ihrem Namen andere AWS Dienste aufrufen (service-to-service Anrufe), wird ein bestimmter netzwerkspezifischer Autorisierungskontext unkenntlich gemacht, einschließlich,, `s3:TlsVersion` und`aws:SecureTransport`. `aws:SourceIp` `aws:VpcSourceIp` Wenn Ihre Richtlinie diese Bedingungsschlüssel zusammen mit `Deny` Anweisungen verwendet, werden AWS Dienstprinzipale möglicherweise unbeabsichtigt blockiert. Damit AWS Dienste unter Einhaltung Ihrer Sicherheitsanforderungen ordnungsgemäß funktionieren können, schließen Sie Service Principals aus Ihren `Deny` Kontoauszügen aus, indem Sie den `aws:PrincipalIsAWSService` Bedingungsschlüssel mit dem Wert von hinzufügen. `false` Beispiel:  

```
{
  "Effect": "Deny",
  "Action": "s3:*",
  "Resource": "*",
  "Condition": {
    "Bool": {
      "aws:SecureTransport": "false",
      "aws:PrincipalIsAWSService": "false"
    }
  }
}
```
Diese Richtlinie verweigert den Zugriff auf S3-Operationen, wenn HTTPS nicht verwendet wird (`aws:SecureTransport`ist falsch), sondern nur für AWS Nicht-Service-Principals. Dadurch wird sichergestellt, dass Ihre bedingten Einschränkungen für alle Prinzipale außer AWS für Dienstprinzipale gelten.

**Example**  
Die folgende Beispiel-Bucket-Richtlinie *verweigert* `PutObject`-Anforderungen von Clients mit einer TLS-Version, die älter als 1.2 ist, zum Beispiel 1.1 oder 1.0. Wenn Sie diese Beispielrichtlinie verwenden möchten, ersetzen Sie `user input placeholders` durch Ihre eigenen Informationen.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket1",
                "arn:aws:s3:::amzn-s3-demo-bucket1/*"
            ],
            "Condition": {
                "NumericLessThan": {
                    "s3:TlsVersion": 1.2
                }
            }
        }
    ]
}
```

**Example**  
Die folgende Bucket-Richtlinie *erlaubt* `PutObject`-Anforderungen von Clients mit einer TLS-Version neuer als 1.1, zum Beispiel 1.2, 1.3 oder neuer:    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket1",
                "arn:aws:s3:::amzn-s3-demo-bucket1/*"
            ],
            "Condition": {
                "NumericGreaterThan": {
                    "s3:TlsVersion": 1.1
                }
            }
        }
    ]
}
```

### Beispiel 7: Ausschließen bestimmter Prinzipale aus einer `Deny`-Anweisung
<a name="example-exclude-principal-from-deny-statement"></a>

Die folgende Bucket-Richtlinie verweigert den `s3:GetObject`-Zugriff auf den `amzn-s3-demo-bucket`, mit Ausnahme von Prinzipalen mit der Kontonummer *`123456789012`*. Wenn Sie diese Beispielrichtlinie verwenden möchten, ersetzen Sie `user input placeholders` durch Ihre eigenen Informationen.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyAccessFromPrincipalNotInSpecificAccount",
      "Principal": {
        "AWS": "*"
      },
      "Action": "s3:GetObject",
      "Effect": "Deny",
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/*"
      ],
      "Condition": {
        "StringNotEquals": {
          "aws:PrincipalAccount": [
            "123456789012"
          ]
        }
      }
    }
  ]
}
```

------

### Beispiel 8: Erzwingen, dass Clients Objekte auf der Grundlage von Objektschlüsselnamen bedingt hochladen oder ETags
<a name="example-conditional-writes-enforce"></a>

Mit bedingten Schreibvorgängen können Sie Ihren `WRITE`-Anforderungen einen zusätzlichen Header hinzufügen, um Vorbedingungen für Ihren S3-Vorgang festzulegen. Dieser Header spezifiziert eine Bedingung, die, wenn sie nicht erfüllt wird, dazu führt, dass der S3-Vorgang fehlschlägt. Beispielsweise können Sie das Überschreiben vorhandener Daten verhindern, indem Sie beim Hochladen des Objekts überprüfen, ob sich kein Objekt mit demselben Schlüsselnamen bereits in Ihrem Bucket befindet. Sie können alternativ das Entity-Tag (ETag) eines Objekts in Amazon S3 überprüfen, bevor Sie ein Objekt schreiben.

Beispiele für Bucket-Richtlinien, die Bedingungen in einer Bucket-Richtlinie verwenden, um bedingte Schreibvorgänge zu erzwingen, finden Sie unter [Erzwingen bedingter Schreibvorgänge in Amazon-S3-Buckets](conditional-writes-enforce.md).

## Beispiele: Amazon-S3-Bedingungsschlüssel für Bucket-Vorgänge
<a name="bucket-keys-in-amazon-s3-policies"></a>

Die folgenden Beispielrichtlinien zeigen, wie Sie Amazon-S3-spezifische Bedingungsschlüssel für Bucket-Operationen verwenden können.

**Topics**
+ [Beispiel 1: Erteilen von `s3:GetObject`-Berechtigungen mit einer Bedingung für eine IP-Adresse](#AvailableKeys-iamV2)
+ [Beispiel 2: Abrufen einer Liste von Objekten in einem Bucket mit einem bestimmten Präfix](#condition-key-bucket-ops-2)
+ [Beispiel 3: Festlegen der maximalen Anzahl von Schlüsseln](#example-numeric-condition-operators)

### Beispiel 1: Erteilen von `s3:GetObject`-Berechtigungen mit einer Bedingung für eine IP-Adresse
<a name="AvailableKeys-iamV2"></a>

Sie können authentifizierten Benutzern die Berechtigung zum Verwenden der `s3:GetObject`-Aktion erteilen, wenn die Anforderung aus einem bestimmten Bereich von IP-Adressen stammt (z. B. `192.0.2.*`), sofern Sie die IP-Adresse nicht ausschließen möchten (z. B. `192.0.2.188`). Im `Condition`-Block sind `IpAddress` und `NotIpAddress` Bedingungen und bei jeder Bedingung ist ein Schlüssel-Wert-Paar zur Auswertung angefügt. Beide Schlüssel-Wert-Paare in diesem Beispiel verwenden den `aws:SourceIp` AWS Wide-Key. Wenn Sie diese Beispielrichtlinie verwenden möchten, ersetzen Sie `user input placeholders` durch Ihre eigenen Informationen.

**Anmerkung**  
Die im `IPAddress`-Block angegebenen Schlüsselwerte `NotIpAddress` und `Condition` verwenden die CIDR-Notation, wie in RFC 4632 beschrieben. [Weitere Informationen finden Sie unter http://www.rfc-editor. org/rfc/rfc](http://www.rfc-editor.org/rfc/rfc4632.txt)4632.txt.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "S3PolicyId1",
    "Statement": [
        {
            "Sid": "statement1",
            "Effect": "Allow",
            "Principal": "*",
            "Action":"s3:GetObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition" : {
                "IpAddress" : {
                    "aws:SourceIp": "192.0.2.0/24" 
                },
                "NotIpAddress" : {
                    "aws:SourceIp": "192.0.2.188/32" 
                } 
            } 
        } 
    ]
}
```

------

Sie können auch andere bedingte Schlüssel für AWS alle Bereiche in Amazon S3 S3-Richtlinien verwenden. Beispielsweise können Sie die Bedingungsschlüssel `aws:SourceVpce` und `aws:SourceVpc` in Bucket-Richtlinien für VPC-Endpunkte angeben. Spezifische Beispiele finden Sie unter [Steuern des Zugriffs von VPC-Endpunkten mit Bucket-Richtlinien](example-bucket-policies-vpc-endpoint.md).

**Anmerkung**  
Für einige AWS globale Bedingungsschlüssel werden nur bestimmte Ressourcentypen unterstützt. Prüfen Sie daher, ob Amazon S3 den globalen Bedingungsschlüssel und den Ressourcentyp unterstützt, die Sie verwenden möchten, oder ob Sie stattdessen einen spezifischen Bedingungsschlüssel von Amazon S3 verwenden müssen. Eine vollständige Liste der unterstützten Ressourcentypen und Bedingungsschlüssel für Amazon S3 finden Sie unter [Aktionen, Ressourcen und Bedingungsschlüssel für Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html) in der *Service-Authorization-Referenz*.  
Weitere Informationen zu den Berechtigungen für S3-API-Operationen nach S3-Ressourcentypen finden Sie unter [Erforderliche Berechtigungen für Amazon-S3-API-Operationen](using-with-s3-policy-actions.md).

### Beispiel 2: Abrufen einer Liste von Objekten in einem Bucket mit einem bestimmten Präfix
<a name="condition-key-bucket-ops-2"></a>

Sie können den `s3:prefix`-Bedingungsschlüssel verwenden, um die Antwort der [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)-API-Operation auf Schlüsselnamen mit einem bestimmten Präfix zu beschränken. Wenn Sie der Bucket-Eigentümer sind, können Sie diesen Bedingungsschlüssel verwenden, um einen Benutzer darauf zu beschränken, den Inhalt eines bestimmten Präfixes im Bucket aufzulisten. Dieser Bedingungsschlüssel `s3:prefix` ist nützlich, wenn Objekte im Bucket nach Schlüsselnamenpräfixen organisiert sind. 

Die Amazon-S3-Konsole verwendet Schlüsselnamenpräfixe zum Anzeigen von Ordnerkonzepten. Nur die Konsole unterstützt das Ordnerkonzept. Die Amazon-S3-API unterstützt ausschließlich Buckets und Objekte. Wenn Sie zum Beispiel zwei Objekte mit den Schlüsselnamen *`public/object1.jpg`* und *`public/object2.jpg`* haben, zeigt die Konsole die Objekte unter dem Ordner *`public`*. In der Amazon-S3-API sind dies Objekte mit Präfixen, nicht Objekte in Ordnern. Weitere Informationen zur Verwendung von Präfixen und Trennzeichen zum Filtern von Zugriffsberechtigungen finden Sie unter [Kontrollieren des Zugriffs auf einen Bucket mit Benutzerrichtlinien](walkthrough1.md). 

In dem folgenden Szenario sind der Bucket-Eigentümer und das übergeordnete Konto, zu dem der Benutzer gehört, dasselbe. Daher kann der Bucket-Eigentümer entweder eine Bucket-Richtlinie oder eine Benutzer-Richtlinie verwenden, um Zugriff zu gewähren. Weitere Informationen zu anderen Bedingungsschlüsseln, die Sie mit der `ListObjectsV2`-API-Operation verwenden können, finden Sie unter [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html).

**Anmerkung**  
Wenn die Versionsverwaltung für den Bucket aktiviert ist, müssen Sie die Berechtigung `s3:ListBucketVersions` in den folgenden Richtlinien erteilen, anstelle der Berechtigung `s3:ListBucket`, um die Objekte im Bucket aufzulisten. Die `s3:ListBucketVersions`-Berechtigung unterstützt auch den `s3:prefix`-Bedingungsschlüssel. 

**Richtlinie für Benutzer:**  
Die folgende Benutzerrichtlinie erteilt die Berechtigung `s3:ListBucket` (siehe [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)) mit einer `Condition`-Anweisung, nach der der Benutzer in der Anfrage ein Präfix mit dem Wert von `projects` angeben muss. Wenn Sie diese Beispielrichtlinie verwenden möchten, ersetzen Sie `user input placeholders` durch Ihre eigenen Informationen.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"statement1",
         "Effect":"Allow",
         "Action": "s3:ListBucket",
         "Resource":"arn:aws:s3:::amzn-s3-demo-bucket",
         "Condition" : {
             "StringEquals" : {
                 "s3:prefix": "projects" 
             }
          } 
       },
      {
         "Sid":"statement2",
         "Effect":"Deny",
         "Action": "s3:ListBucket",
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
         "Condition" : {
             "StringNotEquals" : {
                 "s3:prefix": "projects" 
             }
          } 
       }         
    ]
}
```

------

Die `Condition`-Anweisung beschränkt den Benutzer darauf, nur Objektschlüssel aufzulisten, die das `projects`-Präfix haben. Die hinzugefügte explizite `Deny`‑Anweisung verweigert dem Benutzer das Auflisten von Schlüsseln mit jedem anderen Präfix, unabhängig davon, welche weiteren Berechtigungen der Benutzer haben könnte. Beispielsweise ist es möglich, dass der Benutzer die Berechtigung erhält, Objektschlüssel ohne Einschränkungen aufzulisten – entweder durch Updates der vorherigen Benutzerrichtlinie oder durch eine Bucket-Richtlinie. Da explizite `Deny`-Anweisungen immer `Allow`-Anweisungen überschreiben, wird die Anforderung verweigert, wenn der Benutzer versucht, andere Schlüssel als die aufzulisten, die das `projects`-Präfix haben. 

**Bucket-Richtlinie**  
Wenn Sie das `Principal`‑Element zur oben genannten Benutzerrichtlinie hinzufügen, das den Benutzer identifiziert, besitzen Sie nun eine Bucket-Richtlinie, wie im folgenden Beispiel gezeigt. Wenn Sie diese Beispielrichtlinie verwenden möchten, ersetzen Sie `user input placeholders` durch Ihre eigenen Informationen.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"statement1",
         "Effect":"Allow",
         "Principal": {
            "AWS": "arn:aws:iam::123456789012:user/bucket-owner"
         },  
         "Action":  "s3:ListBucket",
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
         "Condition" : {
             "StringEquals" : {
                 "s3:prefix": "projects" 
             }
          } 
       },
      {
         "Sid":"statement2",
         "Effect":"Deny",
         "Principal": {
            "AWS": "arn:aws:iam::123456789012:user/bucket-owner"
         },  
         "Action": "s3:ListBucket",
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
         "Condition" : {
             "StringNotEquals" : {
                 "s3:prefix": "projects"  
             }
          } 
       }         
    ]
}
```

------

**Testen Sie die Richtlinie mit AWS CLI**  
Sie können die Richtlinie mit dem folgenden `list-object` AWS CLI Befehl testen. Im Befehl geben Sie Benutzeranmeldeinformationen mit dem Parameter `--profile` an. 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 list-objects --bucket amzn-s3-demo-bucket --prefix projects --profile AccountA
```

### Beispiel 3: Festlegen der maximalen Anzahl von Schlüsseln
<a name="example-numeric-condition-operators"></a>

Sie können den Bedingungsschlüssel `s3:max-keys` verwenden, um die maximale Anzahl von Schlüsseln festzulegen, die ein Anforderer in einer [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)- oder [https://docs.aws.amazon.com//AmazonS3/latest/API/API_ListObjectVersions.html](https://docs.aws.amazon.com//AmazonS3/latest/API/API_ListObjectVersions.html)-Anforderung zurückgeben kann. Standardmäßig gibt diese API-Operation bis zu 1000 Schlüssel zurück. Die Liste der numerischen Bedingungsoperatoren, die Sie mit `s3:max-keys` und begleitenden Beispielen verwenden können, finden Sie unter [Numerische Bedingungsoperatoren](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Numeric) im *IAM-Benutzerhandbuch*.