Skip to main content
Die deutsche Sprachversion wurde als Serviceleistung für Sie durch maschinelle Übersetzung erstellt. Bei eventuellen Unstimmigkeiten hat die englische Sprachversion Vorrang.

Verwenden Sie Bucket- und Gruppenzugriffsrichtlinien

StorageGRID verwendet die Richtliniensprache von Amazon Web Services (AWS), um S3-Mietern die Kontrolle über den Zugriff auf Buckets und Objekte in diesen Buckets zu ermöglichen. Das StorageGRID -System implementiert eine Teilmenge der S3 REST API-Richtliniensprache. Zugriffsrichtlinien für die S3-API sind in JSON geschrieben.

Übersicht über die Zugriffsrichtlinie

StorageGRID unterstützt zwei Arten von Zugriffsrichtlinien.

  • Bucket-Richtlinien, die mithilfe der S3-API-Operationen GetBucketPolicy, PutBucketPolicy und DeleteBucketPolicy oder der Tenant Manager- oder Tenant Management-API verwaltet werden. Bucket-Richtlinien sind an Buckets angehängt und daher so konfiguriert, dass sie den Zugriff von Benutzern im Bucket-Eigentümerkonto oder anderen Konten auf den Bucket und die darin enthaltenen Objekte steuern. Eine Bucket-Richtlinie gilt nur für einen Bucket und möglicherweise für mehrere Gruppen.

  • Gruppenrichtlinien, die mithilfe des Tenant Managers oder der Tenant Management API konfiguriert werden. Gruppenrichtlinien sind einer Gruppe im Konto zugeordnet und daher so konfiguriert, dass diese Gruppe auf bestimmte Ressourcen zugreifen kann, die diesem Konto gehören. Eine Gruppenrichtlinie gilt nur für eine Gruppe und möglicherweise mehrere Buckets.

Hinweis Es gibt keinen Unterschied in der Priorität zwischen Gruppen- und Bucket-Richtlinien.

StorageGRID Bucket- und Gruppenrichtlinien folgen einer bestimmten, von Amazon definierten Grammatik. Innerhalb jeder Richtlinie befindet sich ein Array von Richtlinienanweisungen und jede Anweisung enthält die folgenden Elemente:

  • Anweisungs-ID (Sid) (optional)

  • Wirkung

  • Auftraggeber/NichtAuftraggeber

  • Ressource/NichtRessource

  • Aktion/NichtAktion

  • Bedingung (optional)

Richtlinienanweisungen werden mithilfe dieser Struktur erstellt, um Berechtigungen anzugeben: Gewähren Sie <Effekt>, um <Principal> die Ausführung von <Aktion> auf <Ressource> zu erlauben/verweigern, wenn <Bedingung> zutrifft.

Jedes Richtlinienelement wird für eine bestimmte Funktion verwendet:

Element Beschreibung

Sid

Das Sid-Element ist optional. Die Sid dient lediglich als Beschreibung für den Benutzer. Es wird gespeichert, aber nicht vom StorageGRID -System interpretiert.

Wirkung

Verwenden Sie das Effect-Element, um festzulegen, ob die angegebenen Vorgänge zulässig oder verweigert werden. Sie müssen Vorgänge, die Sie für Buckets oder Objekte zulassen (oder verweigern), mithilfe der unterstützten Schlüsselwörter des Aktionselements identifizieren.

Auftraggeber/NichtAuftraggeber

Sie können Benutzern, Gruppen und Konten den Zugriff auf bestimmte Ressourcen und die Ausführung bestimmter Aktionen gestatten. Wenn in der Anfrage keine S3-Signatur enthalten ist, wird der anonyme Zugriff durch Angabe des Platzhalterzeichens (*) als Prinzipal zugelassen. Standardmäßig hat nur der Konto-Root Zugriff auf die Ressourcen, die dem Konto gehören.

Sie müssen nur das Principal-Element in einer Bucket-Richtlinie angeben. Bei Gruppenrichtlinien ist die Gruppe, an die die Richtlinie angehängt ist, das implizite Principal-Element.

Ressource/NichtRessource

Das Ressourcenelement identifiziert Buckets und Objekte. Sie können Berechtigungen für Buckets und Objekte erteilen oder verweigern, indem Sie den Amazon Resource Name (ARN) zur Identifizierung der Ressource verwenden.

Aktion/NichtAktion

Die Elemente „Aktion“ und „Effekt“ sind die beiden Komponenten von Berechtigungen. Wenn eine Gruppe eine Ressource anfordert, wird ihr der Zugriff auf die Ressource entweder gewährt oder verweigert. Der Zugriff wird verweigert, sofern Sie keine ausdrücklichen Berechtigungen erteilen. Sie können jedoch eine durch eine andere Richtlinie erteilte Berechtigung durch eine explizite Verweigerung außer Kraft setzen.

Zustand

Das Bedingungselement ist optional. Mithilfe von Bedingungen können Sie Ausdrücke erstellen, um zu bestimmen, wann eine Richtlinie angewendet werden soll.

Im Aktionselement können Sie das Platzhalterzeichen (*) verwenden, um alle Vorgänge oder eine Teilmenge von Vorgängen anzugeben. Diese Aktion entspricht beispielsweise Berechtigungen wie s3:GetObject, s3:PutObject und s3:DeleteObject.

s3:*Object

Im Ressourcenelement können Sie die Platzhalterzeichen (*) und (?) verwenden. Während das Sternchen (*) 0 oder mehr Zeichen entspricht, entspricht das Fragezeichen (?) einem beliebigen einzelnen Zeichen.

Im Principal-Element werden Platzhalterzeichen nur zum Festlegen des anonymen Zugriffs unterstützt, der jedem die Berechtigung erteilt. Beispielsweise legen Sie das Platzhalterzeichen (*) als Hauptwert fest.

"Principal":"*"
"Principal":{"AWS":"*"}

Im folgenden Beispiel verwendet die Anweisung die Elemente „Effect“, „Principal“, „Action“ und „Resource“. Dieses Beispiel zeigt eine vollständige Bucket-Richtlinienanweisung, die den Effekt "Zulassen" verwendet, um den Principals, der Admin-Gruppe federated-group/admin und die Finanzgruppe federated-group/finance , Berechtigungen zum Ausführen der Aktion s3:ListBucket auf dem Eimer namens mybucket und die Aktion s3:GetObject auf allen Objekten in diesem Bucket.

{
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::27233906934684427525:federated-group/admin",
          "arn:aws:iam::27233906934684427525:federated-group/finance"
        ]
      },
      "Action": [
        "s3:ListBucket",
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:::mybucket",
        "arn:aws:s3:::mybucket/*"
      ]
    }
  ]
}

Die Bucket-Richtlinie hat eine Größenbeschränkung von 20.480 Bytes und die Gruppenrichtlinie eine Größenbeschränkung von 5.120 Bytes.

Konsistenz für Richtlinien

Standardmäßig sind alle Aktualisierungen, die Sie an Gruppenrichtlinien vornehmen, letztendlich konsistent. Wenn eine Gruppenrichtlinie konsistent wird, kann es aufgrund der Richtlinienzwischenspeicherung weitere 15 Minuten dauern, bis die Änderungen wirksam werden. Standardmäßig sind alle Aktualisierungen, die Sie an Bucket-Richtlinien vornehmen, streng konsistent.

Bei Bedarf können Sie die Konsistenzgarantien für Bucket-Richtlinienaktualisierungen ändern. Beispielsweise möchten Sie möglicherweise, dass eine Änderung an einer Bucket-Richtlinie während eines Site-Ausfalls verfügbar ist.

In diesem Fall können Sie entweder die Consistency-Control Header in der PutBucketPolicy-Anforderung, oder Sie können die PUT Bucket-Konsistenzanforderung verwenden. Wenn eine Bucket-Richtlinie konsistent wird, kann es aufgrund der Richtlinienzwischenspeicherung weitere 8 Sekunden dauern, bis die Änderungen wirksam werden.

Hinweis Wenn Sie die Konsistenz auf einen anderen Wert einstellen, um eine vorübergehende Situation zu umgehen, denken Sie daran, die Einstellung auf Bucket-Ebene wieder auf den ursprünglichen Wert zurückzusetzen, wenn Sie fertig sind. Andernfalls verwenden alle zukünftigen Bucket-Anfragen die geänderte Einstellung.

Verwenden Sie ARN in Richtlinienanweisungen

In Richtlinienanweisungen wird die ARN in den Elementen „Principal“ und „Resource“ verwendet.

  • Verwenden Sie diese Syntax, um die S3-Ressourcen-ARN anzugeben:

    arn:aws:s3:::bucket-name
    arn:aws:s3:::bucket-name/object_key
  • Verwenden Sie diese Syntax, um die ARN der Identitätsressource (Benutzer und Gruppen) anzugeben:

    arn:aws:iam::account_id:root
    arn:aws:iam::account_id:user/user_name
    arn:aws:iam::account_id:group/group_name
    arn:aws:iam::account_id:federated-user/user_name
    arn:aws:iam::account_id:federated-group/group_name

Weitere Überlegungen:

  • Sie können das Sternchen (*) als Platzhalter verwenden, um null oder mehr Zeichen im Objektschlüssel abzugleichen.

  • Internationale Zeichen, die im Objektschlüssel angegeben werden können, sollten mit JSON UTF-8 oder mit JSON \u-Escapesequenzen codiert werden. Prozentkodierung wird nicht unterstützt.

    Der HTTP-Anforderungstext für den PutBucketPolicy-Vorgang muss mit charset=UTF-8 codiert sein.

Angeben von Ressourcen in einer Richtlinie

In Richtlinienanweisungen können Sie das Ressourcenelement verwenden, um den Bucket oder das Objekt anzugeben, für das Berechtigungen erteilt oder verweigert werden.

  • Jede Richtlinienanweisung erfordert ein Ressourcenelement. In einer Richtlinie werden Ressourcen durch das Element gekennzeichnet Resource oder alternativ NotResource zum Ausschluss.

  • Sie geben Ressourcen mit einer S3-Ressourcen-ARN an. Beispiel:

    "Resource": "arn:aws:s3:::mybucket/*"
  • Sie können auch Richtlinienvariablen innerhalb des Objektschlüssels verwenden. Beispiel:

    "Resource": "arn:aws:s3:::mybucket/home/${aws:username}/*"
  • Der Ressourcenwert kann einen Bucket angeben, der beim Erstellen einer Gruppenrichtlinie noch nicht vorhanden ist.

Angeben von Prinzipalen in einer Richtlinie

Verwenden Sie das Principal-Element, um den Benutzer, die Gruppe oder das Mandantenkonto zu identifizieren, dem durch die Richtlinienanweisung der Zugriff auf die Ressource gestattet bzw. verweigert wird.

  • Jede Richtlinienanweisung in einer Bucket-Richtlinie muss ein Principal-Element enthalten. Richtlinienanweisungen in einer Gruppenrichtlinie benötigen das Principal-Element nicht, da die Gruppe als Auftraggeber verstanden wird.

  • In einer Richtlinie werden Auftraggeber durch das Element „Principal“ oder alternativ „NotPrincipal“ zum Ausschluss gekennzeichnet.

  • Kontobasierte Identitäten müssen mithilfe einer ID oder einer ARN angegeben werden:

    "Principal": { "AWS": "account_id"}
    "Principal": { "AWS": "identity_arn" }
  • In diesem Beispiel wird die Mandantenkonto-ID 27233906934684427525 verwendet, die das Stammkonto und alle Benutzer im Konto umfasst:

     "Principal": { "AWS": "27233906934684427525" }
  • Sie können nur das Stammkonto angeben:

    "Principal": { "AWS": "arn:aws:iam::27233906934684427525:root" }
  • Sie können einen bestimmten Verbundbenutzer („Alex“) angeben:

    "Principal": { "AWS": "arn:aws:iam::27233906934684427525:federated-user/Alex" }
  • Sie können eine bestimmte föderierte Gruppe („Manager“) angeben:

    "Principal": { "AWS": "arn:aws:iam::27233906934684427525:federated-group/Managers"  }
  • Sie können einen anonymen Auftraggeber angeben:

    "Principal": "*"
  • Um Mehrdeutigkeiten zu vermeiden, können Sie anstelle des Benutzernamens die Benutzer-UUID verwenden:

    arn:aws:iam::27233906934684427525:user-uuid/de305d54-75b4-431b-adb2-eb6b9e546013

    Nehmen wir beispielsweise an, Alex verlässt die Organisation und der Benutzername Alex wird gelöscht. Wenn ein neuer Alex in die Organisation eintritt und ihm die gleiche Alex Benutzernamen, könnte der neue Benutzer unbeabsichtigt die dem ursprünglichen Benutzer erteilten Berechtigungen erben.

  • Der Prinzipalwert kann einen Gruppen-/Benutzernamen angeben, der beim Erstellen einer Bucket-Richtlinie noch nicht vorhanden ist.

Festlegen von Berechtigungen in einer Richtlinie

In einer Richtlinie wird das Aktionselement verwendet, um Berechtigungen für eine Ressource zuzulassen/zu verweigern. Es gibt eine Reihe von Berechtigungen, die Sie in einer Richtlinie angeben können. Diese werden durch das Element „Action“ oder alternativ „NotAction“ zum Ausschluss gekennzeichnet. Jedes dieser Elemente ist bestimmten S3 REST-API-Operationen zugeordnet.

In den Tabellen sind die Berechtigungen aufgeführt, die für Buckets gelten, und die Berechtigungen, die für Objekte gelten.

Hinweis Amazon S3 verwendet jetzt die Berechtigung s3:PutReplicationConfiguration sowohl für die Aktionen PutBucketReplication als auch DeleteBucketReplication. StorageGRID verwendet für jede Aktion separate Berechtigungen, was der ursprünglichen Amazon S3-Spezifikation entspricht.
Hinweis Ein Löschen wird ausgeführt, wenn ein Put zum Überschreiben eines vorhandenen Werts verwendet wird.

Berechtigungen, die für Buckets gelten

Berechtigungen S3 REST API-Operationen Benutzerdefiniert für StorageGRID

s3:Bucket erstellen

Bucket erstellen

Ja.

Hinweis: Nur in Gruppenrichtlinien verwenden.

s3:Bucket löschen

Bucket löschen

s3:DeleteBucketMetadataNotification

Konfiguration der Benachrichtigung über DELETE-Bucket-Metadaten

Ja

s3:DeleteBucketPolicy

DeleteBucketPolicy

s3:Replikationskonfiguration löschen

DeleteBucketReplication

Ja, separate Berechtigungen für PUT und DELETE

s3:GetBucketAcl

GetBucketAcl

s3:GetBucketCompliance

GET Bucket-Konformität (veraltet)

Ja

s3:GetBucketConsistency

GET Bucket-Konsistenz

Ja

s3:GetBucketCORS

GetBucketCors

s3:GetEncryptionConfiguration

GetBucketEncryption

s3:GetBucketLastAccessTime

GET Bucket – Letzte Zugriffszeit

Ja

s3:GetBucketLocation

BucketLocation abrufen

s3:GetBucketMetadataNotification

GET Bucket-Metadaten-Benachrichtigungskonfiguration

Ja

s3:GetBucketNotification

GetBucketNotificationConfiguration

s3:GetBucketObjectLockConfiguration

GetObjectLockConfiguration

s3:GetBucketPolicy

GetBucketPolicy

s3:GetBucketTagging

GetBucketTagging

s3:GetBucketVersioning

GetBucketVersioning

s3:GetLifecycleConfiguration

GetBucketLifecycleConfiguration

s3:GetReplicationConfiguration

GetBucketReplication

s3:ListeAlleMeineBuckets

  • Buckets auflisten

  • GET-Speichernutzung

Ja, für die GET-Speichernutzung.

Hinweis: Nur in Gruppenrichtlinien verwenden.

s3:ListBucket

  • ListObjects

  • Kopfeimer

  • RestoreObject

s3:ListBucketMultipartUploads

  • ListMultipartUploads

  • RestoreObject

s3:ListBucketVersions

GET Bucket-Versionen

s3:PutBucketCompliance

PUT-Bucket-Konformität (veraltet)

Ja

s3:PutBucketConsistency

PUT Bucket-Konsistenz

Ja

s3:PutBucketCORS

  • DeleteBucketCors†

  • PutBucketCors

s3:PutEncryptionConfiguration

  • DeleteBucketEncryption

  • PutBucketEncryption

s3:PutBucketLastAccessTime

PUT Bucket: Letzte Zugriffszeit

Ja

s3:PutBucketMetadataNotification

Konfiguration der Benachrichtigung über PUT-Bucket-Metadaten

Ja

s3:PutBucketNotification

PutBucketNotificationConfiguration

s3:PutBucketObjectLockConfiguration

  • CreateBucket mit dem x-amz-bucket-object-lock-enabled: true Anforderungsheader (erfordert auch die Berechtigung s3:CreateBucket)

  • PutObjectLockConfiguration

s3:PutBucketPolicy

PutBucketPolicy

s3:PutBucketTagging

  • BucketTagging löschen†

  • PutBucketTagging

s3:PutBucketVersioning

PutBucketVersioning

s3:PutLifecycleConfiguration

  • DeleteBucketLifecycle†

  • PutBucketLifecycleConfiguration

s3:PutReplicationConfiguration

PutBucketReplication

Ja, separate Berechtigungen für PUT und DELETE

Berechtigungen, die für Objekte gelten

Berechtigungen S3 REST API-Operationen Benutzerdefiniert für StorageGRID

s3:AbortMultipartUpload

  • AbortMultipartUpload

  • RestoreObject

s3:BypassGovernanceRetention

  • Objekt löschen

  • Objekte löschen

  • PutObjectRetention

s3:Objekt löschen

  • Objekt löschen

  • Objekte löschen

  • RestoreObject

s3:DeleteObjectTagging

DeleteObjectTagging

s3:DeleteObjectVersionTagging

DeleteObjectTagging (eine bestimmte Version des Objekts)

s3:DeleteObjectVersion

DeleteObject (eine bestimmte Version des Objekts)

s3:GetObject

  • GetObject

  • HeadObject

  • RestoreObject

  • SelectObjectContent

s3:GetObjectAcl

GetObjectAcl

s3:GetObjectLegalHold

GetObjectLegalHold

s3:GetObjectRetention

GetObjectRetention

s3:GetObjectTagging

GetObjectTagging

s3:GetObjectVersionTagging

GetObjectTagging (eine bestimmte Version des Objekts)

s3:GetObjectVersion

GetObject (eine bestimmte Version des Objekts)

s3:ListMultipartUploadParts

ListParts, RestoreObject

s3:PutObject

  • PutObject

  • Objekt kopieren

  • RestoreObject

  • CreateMultipartUpload

  • CompleteMultipartUpload

  • UploadPart

  • UploadPartCopy

s3:PutObjectLegalHold

PutObjectLegalHold

s3:PutObjectRetention

PutObjectRetention

s3:PutObjectTagging

PutObjectTagging

s3:PutObjectVersionTagging

PutObjectTagging (eine bestimmte Version des Objekts)

s3:PutOverwriteObject

  • PutObject

  • Objekt kopieren

  • PutObjectTagging

  • DeleteObjectTagging

  • CompleteMultipartUpload

Ja

s3:RestoreObject

RestoreObject

PutOverwriteObject-Berechtigung verwenden

Die Berechtigung s3:PutOverwriteObject ist eine benutzerdefinierte StorageGRID Berechtigung, die für Vorgänge gilt, die Objekte erstellen oder aktualisieren. Die Einstellung dieser Berechtigung bestimmt, ob der Client die Daten, benutzerdefinierten Metadaten oder S3-Objektmarkierungen eines Objekts überschreiben kann.

Mögliche Einstellungen für diese Berechtigung sind:

  • Zulassen: Der Client kann ein Objekt überschreiben. Dies ist die Standardeinstellung.

  • Ablehnen: Der Client kann ein Objekt nicht überschreiben. Wenn die Berechtigung „PutOverwriteObject“ auf „Verweigern“ gesetzt ist, funktioniert sie wie folgt:

    • Wenn ein vorhandenes Objekt am gleichen Pfad gefunden wird:

      • Die Daten, benutzerdefinierten Metadaten oder S3-Objektmarkierungen des Objekts können nicht überschrieben werden.

      • Alle laufenden Aufnahmevorgänge werden abgebrochen und ein Fehler zurückgegeben.

      • Wenn die S3-Versionierung aktiviert ist, verhindert die Einstellung „Verweigern“, dass PutObjectTagging- oder DeleteObjectTagging-Vorgänge das TagSet für ein Objekt und seine nicht aktuellen Versionen ändern.

    • Wenn ein vorhandenes Objekt nicht gefunden wird, hat diese Berechtigung keine Wirkung.

  • Wenn diese Berechtigung nicht vorhanden ist, ist die Wirkung dieselbe, als ob „Zulassen“ gesetzt wäre.

Hinweis Wenn die aktuelle S3-Richtlinie das Überschreiben zulässt und die Berechtigung „PutOverwriteObject“ auf „Verweigern“ gesetzt ist, kann der Client die Daten, benutzerdefinierten Metadaten oder Objektmarkierungen eines Objekts nicht überschreiben. Wenn außerdem das Kontrollkästchen Client-Änderung verhindern aktiviert ist (KONFIGURATION > Sicherheitseinstellungen > Netzwerk und Objekte), überschreibt diese Einstellung die Einstellung der Berechtigung „PutOverwriteObject“.

Bedingungen in einer Richtlinie angeben

Bedingungen definieren, wann eine Richtlinie in Kraft tritt. Bedingungen bestehen aus Operatoren und Schlüssel-Wert-Paaren.

Bedingungen verwenden Schlüssel-Wert-Paare zur Auswertung. Ein Bedingungselement kann mehrere Bedingungen enthalten und jede Bedingung kann mehrere Schlüssel-Wert-Paare enthalten. Der Bedingungsblock verwendet das folgende Format:

Condition: {
     condition_type: {
          condition_key: condition_values

Im folgenden Beispiel verwendet die Bedingung „IpAddress“ den Bedingungsschlüssel „SourceIp“.

"Condition": {
    "IpAddress": {
      "aws:SourceIp": "54.240.143.0/24"
		...
},
		...

Unterstützte Bedingungsoperatoren

Bedingungsoperatoren werden wie folgt kategorisiert:

  • Zeichenfolge

  • Numerisch

  • Boolescher Wert

  • IP-Adresse

  • Nullprüfung

Bedingungsoperatoren Beschreibung

StringEquals

Vergleicht einen Schlüssel mit einem Zeichenfolgenwert auf Basis einer genauen Übereinstimmung (Groß-/Kleinschreibung beachten).

StringNotEquals

Vergleicht einen Schlüssel mit einem Zeichenfolgenwert basierend auf negierter Übereinstimmung (Groß-/Kleinschreibung beachten).

StringEqualsIgnoreCase

Vergleicht einen Schlüssel mit einem Zeichenfolgenwert basierend auf einer genauen Übereinstimmung (Groß-/Kleinschreibung wird ignoriert).

StringNotEqualsIgnoreCase

Vergleicht einen Schlüssel mit einem Zeichenfolgenwert basierend auf negierter Übereinstimmung (Groß-/Kleinschreibung wird ignoriert).

StringLike

Vergleicht einen Schlüssel mit einem Zeichenfolgenwert auf Basis einer genauen Übereinstimmung (Groß-/Kleinschreibung beachten). Kann die Platzhalterzeichen * und ? enthalten.

StringNotLike

Vergleicht einen Schlüssel mit einem Zeichenfolgenwert basierend auf negierter Übereinstimmung (Groß-/Kleinschreibung beachten). Kann die Platzhalterzeichen * und ? enthalten.

NumericEquals

Vergleicht einen Schlüssel mit einem numerischen Wert auf Basis einer exakten Übereinstimmung.

NumericNotEquals

Vergleicht einen Schlüssel mit einem numerischen Wert basierend auf negierter Übereinstimmung.

NumerischGrößerAls

Vergleicht einen Schlüssel mit einem numerischen Wert basierend auf einer „Größer-als“-Übereinstimmung.

NumerischGrößerAlsGleich

Vergleicht einen Schlüssel mit einem numerischen Wert basierend auf der Übereinstimmung „größer als oder gleich“.

NumericLessThan

Vergleicht einen Schlüssel mit einem numerischen Wert basierend auf einer „kleiner als“-Übereinstimmung.

NumerischKleinerAlsGleich

Vergleicht einen Schlüssel mit einem numerischen Wert basierend auf der Übereinstimmung „kleiner als oder gleich“.

Bool

Vergleicht einen Schlüssel mit einem Booleschen Wert basierend auf der Übereinstimmung „wahr oder falsch“.

IP-Adresse

Vergleicht einen Schlüssel mit einer IP-Adresse oder einem IP-Adressbereich.

NotIpAddress

Vergleicht einen Schlüssel mit einer IP-Adresse oder einem IP-Adressbereich basierend auf negierter Übereinstimmung.

Null

Überprüft, ob im aktuellen Anforderungskontext ein Bedingungsschlüssel vorhanden ist.

Unterstützte Bedingungsschlüssel

Bedingungsschlüssel Aktionen Beschreibung

aws:SourceIp

IP-Betreiber

Wird mit der IP-Adresse verglichen, von der die Anfrage gesendet wurde. Kann für Bucket- oder Objektoperationen verwendet werden.

Hinweis: Wenn die S3-Anforderung über den Load Balancer-Dienst auf Admin-Knoten und Gateway-Knoten gesendet wurde, wird dies mit der IP-Adresse vor dem Load Balancer-Dienst verglichen.

Hinweis: Wenn ein nicht transparenter Load Balancer eines Drittanbieters verwendet wird, wird dies mit der IP-Adresse dieses Load Balancers verglichen. Beliebig X-Forwarded-For Header wird ignoriert, da seine Gültigkeit nicht festgestellt werden kann.

aws:Benutzername

Ressource/Identität

Wird mit dem Benutzernamen des Absenders verglichen, von dem die Anfrage gesendet wurde. Kann für Bucket- oder Objektoperationen verwendet werden.

s3:Trennzeichen

s3:ListBucket und

s3:ListBucketVersions-Berechtigungen

Wird mit dem in einer ListObjects- oder ListObjectVersions-Anforderung angegebenen Trennzeichenparameter verglichen.

s3:ExistingObjectTag/<Tag-Schlüssel>

s3:DeleteObjectTagging

s3:DeleteObjectVersionTagging

s3:GetObject

s3:GetObjectAcl

3:GetObjectTagging

s3:GetObjectVersion

s3:GetObjectVersionAcl

s3:GetObjectVersionTagging

s3:PutObjectAcl

s3:PutObjectTagging

s3:PutObjectVersionAcl

s3:PutObjectVersionTagging

Erfordert, dass das vorhandene Objekt über den spezifischen Tag-Schlüssel und -Wert verfügt.

s3:max-Schlüssel

s3:ListBucket und

s3:ListBucketVersions-Berechtigungen

Wird mit dem in einer ListObjects- oder ListObjectVersions-Anforderung angegebenen Max-Keys-Parameter verglichen.

s3:Objektsperre-verbleibende-Aufbewahrungstage

s3:PutObject

Vergleicht mit dem Aufbewahrungsdatum, das in der x-amz-object-lock-retain-until-date Anforderungsheader oder berechnet aus der Standardaufbewahrungsdauer des Buckets, um sicherzustellen, dass diese Werte innerhalb des zulässigen Bereichs für die folgenden Anforderungen liegen:

  • PutObject

  • Objekt kopieren

  • CreateMultipartUpload

s3:Objektsperre-verbleibende-Aufbewahrungstage

s3:PutObjectRetention

Vergleicht mit dem in der PutObjectRetention-Anforderung angegebenen Aufbewahrungsdatum, um sicherzustellen, dass es innerhalb des zulässigen Bereichs liegt.

s3:Präfix

s3:ListBucket und

s3:ListBucketVersions-Berechtigungen

Wird mit dem in einer ListObjects- oder ListObjectVersions-Anforderung angegebenen Präfixparameter verglichen.

s3:RequestObjectTag/<Tag-Schlüssel>

s3:PutObject

s3:PutObjectTagging

s3:PutObjectVersionTagging

Erfordert einen bestimmten Tag-Schlüssel und -Wert, wenn die Objektanforderung Tagging enthält.

Angeben von Variablen in einer Richtlinie

Sie können Variablen in Richtlinien verwenden, um Richtlinieninformationen einzufügen, wenn diese verfügbar sind. Sie können Richtlinienvariablen in der Resource Element und in Stringvergleichen im Condition Element.

In diesem Beispiel ist die Variable ${aws:username} ist Teil des Ressourcenelements:

"Resource": "arn:aws:s3:::bucket-name/home/${aws:username}/*"

In diesem Beispiel ist die Variable ${aws:username} ist Teil des Bedingungswerts im Bedingungsblock:

"Condition": {
    "StringLike": {
      "s3:prefix": "${aws:username}/*"
		...
},
		...
Variable Beschreibung

${aws:SourceIp}

Verwendet den SourceIp-Schlüssel als bereitgestellte Variable.

${aws:username}

Verwendet den Benutzernamenschlüssel als bereitgestellte Variable.

${s3:prefix}

Verwendet den dienstspezifischen Präfixschlüssel als bereitgestellte Variable.

${s3:max-keys}

Verwendet den dienstspezifischen Max-Keys-Schlüssel als bereitgestellte Variable.

${*}

Sonderzeichen. Verwendet das Zeichen als wörtliches *-Zeichen.

${?}

Sonderzeichen. Verwendet das Zeichen als wörtliches ?-Zeichen.

${$}

Sonderzeichen. Verwendet das Zeichen als wörtliches $-Zeichen.

Erstellen Sie Richtlinien, die eine besondere Behandlung erfordern

Manchmal kann eine Richtlinie Berechtigungen erteilen, die eine Gefahr für die Sicherheit oder den laufenden Betrieb darstellen, wie etwa das Sperren des Root-Benutzers des Kontos. Die StorageGRID S3 REST-API-Implementierung ist bei der Richtlinienvalidierung weniger restriktiv als Amazon, bei der Richtlinienauswertung jedoch ebenso streng.

Richtlinienbeschreibung Richtlinientyp Amazon-Verhalten StorageGRID -Verhalten

Verweigern Sie sich selbst alle Berechtigungen für das Root-Konto

Eimer

Gültig und erzwungen, aber das Root-Benutzerkonto behält die Berechtigung für alle S3-Bucket-Richtlinienvorgänge

Dasselbe

Sich selbst alle Berechtigungen für Benutzer/Gruppe verweigern

Gruppe

Gültig und durchgesetzt

Dasselbe

Erteilen Sie einer fremden Kontogruppe alle Berechtigungen

Eimer

Ungültiger Auftraggeber

Gültig, aber Berechtigungen für alle S3-Bucket-Richtlinienvorgänge geben einen 405-Methodenfehler zurück, wenn sie durch eine Richtlinie erlaubt sind

Erteilen Sie einem fremden Root- oder Benutzerkonto alle Berechtigungen

Eimer

Gültig, aber Berechtigungen für alle S3-Bucket-Richtlinienvorgänge geben einen 405-Methodenfehler zurück, wenn sie durch eine Richtlinie erlaubt sind

Dasselbe

Jedem die Berechtigung für alle Aktionen erteilen

Eimer

Gültig, aber Berechtigungen für alle S3-Bucket-Richtlinienvorgänge geben einen 405-Methode nicht zulässig-Fehler für das Stammkonto und die Benutzer des Fremdkontos zurück

Dasselbe

Allen die Berechtigung für alle Aktionen verweigern

Eimer

Gültig und erzwungen, aber das Root-Benutzerkonto behält die Berechtigung für alle S3-Bucket-Richtlinienvorgänge

Dasselbe

Der Auftraggeber ist ein nicht vorhandener Benutzer oder eine nicht vorhandene Gruppe.

Eimer

Ungültiger Auftraggeber

Gültig

Ressource ist ein nicht vorhandener S3-Bucket

Gruppe

Gültig

Dasselbe

Principal ist eine lokale Gruppe

Eimer

Ungültiger Auftraggeber

Gültig

Die Richtlinie erteilt Nichtbesitzerkonten (einschließlich anonymer Konten) die Berechtigung, Objekte abzulegen.

Eimer

Gültig. Objekte sind Eigentum des Erstellerkontos und die Bucket-Richtlinie gilt nicht. Das Erstellerkonto muss mithilfe von Objekt-ACLs Zugriffsberechtigungen für das Objekt erteilen.

Gültig. Objekte sind Eigentum des Bucket-Eigentümerkontos. Es gilt die Bucket-Richtlinie.

WORM-Schutz (Write-Once-Read-Many)

Sie können WORM-Buckets (Write-Once-Read-Many) erstellen, um Daten, benutzerdefinierte Objektmetadaten und S3-Objekt-Tagging zu schützen. Sie konfigurieren die WORM-Buckets, um die Erstellung neuer Objekte zu ermöglichen und das Überschreiben oder Löschen vorhandener Inhalte zu verhindern. Verwenden Sie einen der hier beschriebenen Ansätze.

Um sicherzustellen, dass Überschreibungen immer verweigert werden, können Sie:

  • Gehen Sie im Grid Manager zu KONFIGURATION > Sicherheit > Sicherheitseinstellungen > Netzwerk und Objekte und aktivieren Sie das Kontrollkästchen Client-Änderung verhindern.

  • Wenden Sie die folgenden Regeln und S3-Richtlinien an:

    • Fügen Sie der S3-Richtlinie eine PutOverwriteObject DENY-Operation hinzu.

    • Fügen Sie der S3-Richtlinie eine DeleteObject DENY-Operation hinzu.

    • Fügen Sie der S3-Richtlinie eine PutObject ALLOW-Operation hinzu.

Hinweis Das Festlegen von „DeleteObject“ auf „DENY“ in einer S3-Richtlinie verhindert nicht, dass ILM Objekte löscht, wenn eine Regel wie „Null Kopien nach 30 Tagen“ vorhanden ist.
Hinweis Selbst wenn alle diese Regeln und Richtlinien angewendet werden, schützen sie nicht vor gleichzeitigen Schreibvorgängen (siehe Situation A). Sie schützen vor sequenziellen Überschreibungen (siehe Situation B).

Situation A: Gleichzeitige Schreibvorgänge (nicht geschützt)

/mybucket/important.doc
PUT#1 ---> OK
PUT#2 -------> OK

Situation B: Sequentielles Überschreiben abgeschlossen (vorbeugend)

/mybucket/important.doc
PUT#1 -------> PUT#2 ---X (denied)