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.

Bucket- und Gruppenzugriffsrichtlinien

Beitragende

StorageGRID verwendet die Richtliniensprache für Amazon Web Services (AWS), um S3-Mandanten die Kontrolle des Zugriffs auf Buckets und Objekte innerhalb dieser Buckets zu ermöglichen. Das StorageGRID System implementiert eine Untermenge der S3-REST-API-Richtliniensprache. Zugriffsrichtlinien für die S3 API werden in JSON geschrieben.

Zugriffsrichtlinien – Überblick

Von StorageGRID werden zwei Arten von Zugriffsrichtlinien unterstützt:

  • Bucket-Richtlinien, die mit DER GET Bucket-Richtlinie konfiguriert sind, PUT Bucket-Richtlinie und S3-API-Operationen FÜR die Bucket-Richtlinie LÖSCHEN. Bucket-Richtlinien sind mit Buckets verknüpft, so dass sie so konfiguriert sind, dass sie den Zugriff durch Benutzer im Bucket-Eigentümerkonto oder andere Konten an den Bucket und die darin befindlichen Objekte steuern. Eine Bucket-Richtlinie gilt nur für einen Bucket und möglicherweise auch für mehrere Gruppen.

  • Gruppenrichtlinien, die mit dem Tenant Manager oder der Mandantenmanagement-API konfiguriert sind. Gruppenrichtlinien sind einer Gruppe im Konto zugeordnet, sodass sie so konfiguriert sind, dass sie der Gruppe ermöglichen, auf bestimmte Ressourcen zuzugreifen, die dem Konto gehören. Eine Gruppenrichtlinie gilt nur für eine Gruppe und möglicherweise für mehrere Buckets.

StorageGRID Bucket und Gruppenrichtlinien folgen einer bestimmten Grammatik, die von Amazon definiert wurde. Innerhalb jeder Richtlinie gibt es eine Reihe von Richtlinienerklärungen, und jede Aussage enthält die folgenden Elemente:

  • Statement-ID (Sid) (optional)

  • Wirkung

  • Principal/NotPrincipal

  • Ressource/Ressource

  • Aktion/Notaktion

  • Bedingung (optional)

Richtlinienerklärungen werden anhand dieser Struktur erstellt, um Berechtigungen festzulegen: Wirkung gewähren, um dem Auftraggeber die Durchführung von Aktionen auf Ressource zu erlauben/zu verweigern, wenn Bedingung zutrifft.

Jedes Richtlinienelement wird für eine bestimmte Funktion verwendet:

Element Beschreibung

Sid

Das Sid-Element ist optional. Der Sid ist nur als Beschreibung für den Benutzer gedacht. Diese wird vom StorageGRID System gespeichert, aber nicht interpretiert.

Wirkung

Verwenden Sie das Effektelement, um festzustellen, ob die angegebenen Vorgänge zulässig oder verweigert werden. Sie müssen anhand der Schlüsselwörter für unterstütztes Aktionselement Operationen identifizieren, die für Buckets oder Objekte zugelassen (oder verweigert) werden.

Principal/NotPrincipal

Benutzer, Gruppen und Konten können auf bestimmte Ressourcen zugreifen und bestimmte Aktionen ausführen. Wenn in der Anfrage keine S3-Signatur enthalten ist, ist ein anonymer Zugriff durch Angabe des Platzhalterzeichens (*) als Principal zulässig. Standardmäßig hat nur das Konto-Root Zugriff auf Ressourcen, die dem Konto gehören.

Sie müssen nur das Hauptelement in einer Bucket-Richtlinie angeben. Bei Gruppenrichtlinien ist die Gruppe, der die Richtlinie zugeordnet ist, das implizite Prinzipalelement.

Ressource/Ressource

Das Ressourcenelement identifiziert Buckets und Objekte. Sie können Buckets und Objekten über den ARN (Amazon Resource Name) Berechtigungen gewähren oder verweigern, um die Ressource zu identifizieren.

Aktion/Notaktion

Die Elemente Aktion und Wirkung sind die beiden Komponenten von Berechtigungen. Wenn eine Gruppe eine Ressource anfordert, wird ihnen entweder der Zugriff auf die Ressource gewährt oder verweigert. Der Zugriff wird verweigert, es sei denn, Sie weisen ausdrücklich Berechtigungen zu, aber Sie können explizites Ablehnen verwenden, um eine von einer anderen Richtlinie gewährte Berechtigung zu überschreiben.

Zustand

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

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

s3:*Object

Im Element Ressource können Sie die Platzhalterzeichen (*) und (?) verwenden. Während das Sternchen (*) mit 0 oder mehr Zeichen übereinstimmt, ist das Fragezeichen (?) Entspricht einem beliebigen Zeichen.

Im Principal-Element werden Platzhalterzeichen nicht unterstützt, außer wenn anonymer Zugriff festgelegt wird, der allen die Berechtigung erteilt. Sie legen beispielsweise den Platzhalter (*) als Principal-Wert fest.

"Principal":"*"

Im folgenden Beispiel verwendet die Anweisung die Elemente „Effekt“, „Principal“, „Aktion“ und „Ressource“. Dieses Beispiel zeigt eine vollständige Bucket-Richtlinienanweisung, die den Principals, die Admin-Gruppe, mit dem Effekt „Zulassen“ erhält federated-group/admin Und der Finanzgruppe federated-group/finance, Berechtigungen zur Durchführung der Aktion s3:ListBucket Auf dem genannten Bucket mybucket Und der 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:iam:s3:::mybucket",
        "arn:aws:iam:s3:::mybucket/*"
      ]
    }
  ]
}

Die Bucket-Richtlinie hat eine Größenbeschränkung von 20,480 Byte, und die Gruppenrichtlinie hat ein Größenlimit von 5,120 Byte.

Verwandte Informationen

Verwenden Sie das Mandantenkonto

Einstellungen zur Konsistenzkontrolle für Richtlinien

Standardmäßig sind alle Aktualisierungen, die Sie an Gruppenrichtlinien vornehmen, letztendlich konsistent. Sobald eine Gruppenrichtlinie konsistent wird, können die Änderungen aufgrund von Richtlinien-Caching weitere 15 Minuten dauern. Standardmäßig sind alle Updates an den Bucket-Richtlinien ebenfalls konsistent.

Sie können bei Bedarf die Konsistenzgarantien für Bucket-Richtlinienaktualisierungen ändern. Beispielsweise könnte eine Änderung an einer Bucket-Richtlinie aus Sicherheitsgründen so schnell wie möglich wirksam werden.

In diesem Fall können Sie entweder die einstellen Consistency-Control Kopfzeile in der ANFORDERUNG DER PUT Bucket-Richtlinie, oder Sie können die PUT-Bucket-Konsistenzanforderung verwenden. Wenn Sie die Consistency Control für diese Anfrage ändern, müssen Sie den Wert all verwenden, der die höchste Garantie für die Konsistenz von Lesen nach dem Schreiben bietet. Wenn Sie einen anderen Wert für Consistency Control in einer Kopfzeile für die PUT Bucket Consistency Request angeben, wird die Anforderung abgelehnt. Wenn Sie einen anderen Wert für eine PUT Bucket Policy Request angeben, wird der Wert ignoriert. Sobald eine Bucket-Richtlinie konsistent ist, können die Änderungen aufgrund des Richtlinien-Caching weitere 8 Sekunden dauern.

Hinweis Wenn Sie die Konsistenzstufe auf alle setzen, um eine neue Bucket-Richtlinie früher wirksam zu machen, stellen Sie die Bucket-Level-Kontrolle sicher, dass sie wieder auf ihren ursprünglichen Wert zurückgestellt wird, wenn Sie fertig sind. Andernfalls wird für alle zukünftigen Bucket-Anforderungen die all-Einstellung verwendet.

Verwenden Sie ARN in den Richtlinienerklärungen

In den Richtlinienerklärungen wird das ARN in Haupt- und Ressourcenelementen verwendet.

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

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

    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 zu entsprechen.

  • Internationale Zeichen, die im Objektschlüssel angegeben werden können, sollten mit JSON UTF-8 oder mit JSON \U Escape Sequenzen codiert werden. Die prozentuale Kodierung wird nicht unterstützt.

    Der HTTP-Anforderungskörper für DEN PUT Bucket-Richtlinienvorgang muss mit charset=UTF-8 codiert werden.

Geben Sie Ressourcen in einer Richtlinie an

In Richtlinienausrechnungen können Sie mithilfe des Elements Ressourcen den Bucket oder das Objekt angeben, für das Berechtigungen zulässig oder verweigert werden.

  • Jede Richtlinienanweisung erfordert ein Ressourcenelement. In einer Richtlinie werden Ressourcen durch das Element gekennzeichnet Resource, Oder alternativ , NotResource Für Ausschluss.

  • Sie legen Ressourcen mit einer S3-Ressource ARN fest. Beispiel:

    "Resource": "arn:aws:s3:::mybucket/*"
  • Sie können Richtlinienvariablen auch 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.

Principals in einer Policy angeben

Verwenden Sie das Hauptelement, um das Benutzer-, Gruppen- oder Mandantenkonto zu identifizieren, das über die Richtlinienanweisung Zugriff auf die Ressource erlaubt/verweigert wird.

  • Jede Richtlinienanweisung in einer Bucket-Richtlinie muss ein Principal Element enthalten. Richtlinienerklärungen in einer Gruppenpolitik benötigen das Hauptelement nicht, da die Gruppe als Hauptbestandteil verstanden wird.

  • In einer Richtlinie werden die Prinzipien durch das Element „Principal,“ oder alternativ „NotPrincipal“ für den Ausschluss gekennzeichnet.

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

    "Principal": { "AWS": "account_id"}
    "Principal": { "AWS": "identity_arn" }
  • In diesem Beispiel wird die Mandanten-Account-ID 27233906934684427525 verwendet, die das Konto-Root und alle Benutzer im Konto enthält:

     "Principal": { "AWS": "27233906934684427525" }
  • Sie können nur das Konto-Root angeben:

    "Principal": { "AWS": "arn:aws:iam::27233906934684427525:root" }
  • Sie können einen bestimmten föderierten Benutzer („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 Principal angeben:

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

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

    Angenommen, Alex verlässt zum Beispiel die Organisation und den Benutzernamen Alex Wird gelöscht. Wenn ein neuer Alex der Organisation beitritt und dem gleichen zugewiesen wird Alex Benutzername: Der neue Benutzer erbt möglicherweise unbeabsichtigt die dem ursprünglichen Benutzer gewährten Berechtigungen.

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

Legen Sie Berechtigungen in einer Richtlinie fest

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

In den Tabellen werden die Berechtigungen aufgeführt, die auf Buckets angewendet werden, sowie die Berechtigungen, die für Objekte gelten.

Hinweis Amazon S3 nutzt jetzt die Berechtigung s3:PutReplicationConfiguration sowohl für DIE PUT- als AUCH DELETE-Bucket-Replizierungsaktionen. StorageGRID verwendet für jede Aktion separate Berechtigungen, die mit der ursprünglichen Amazon S3 Spezifikation übereinstimmt.
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 Individuell für StorageGRID

s3:CreateBucket

Put Bucket

s3:DeleteBucket

Bucket LÖSCHEN

s3:DeleteBucketMetadataBenachrichtigung

Konfiguration für die Benachrichtigung über Bucket-Metadaten LÖSCHEN

Ja.

s3:DeleteBucketPolicy

Bucket-Richtlinie LÖSCHEN

s3:DeleteReplicationConfiguration

Bucket-Replizierung LÖSCHEN

Ja, separate Berechtigungen für PUT und DELETE*

s3:GetBucketAcl

Bucket-ACL ABRUFEN

s3:GetBucketCompliance

GET Bucket-Compliance (veraltet)

Ja.

s3:GetBucketConsistency

Get Bucket-Konsistenz

Ja.

s3:GetBucketCORS

Bucket-Cors ABRUFEN

s3:GetVerschlüsselungKonfiguration

Get Bucket-Verschlüsselung

s3:GetBucketLastAccessTime

ZEITPUNKT des letzten Zugriffs FÜR den Bucket ABRUFEN

Ja.

s3:GetBucketLocation

Bucket-Speicherort ABRUFEN

s3:GetBucketMetadataBenachrichtigung

Konfiguration der Bucket-Metadaten-Benachrichtigungen ABRUFEN

Ja.

s3:GetBucketBenachrichtigung

Bucket-Benachrichtigung ABRUFEN

s3:GetBucketObjectLockConfiguration

Konfiguration der Objektsperre ABRUFEN

s3:GetBucketPolicy

Get Bucket-Richtlinie

s3:GetBucketTagging

Get Bucket-Tagging

s3:GetBucketVersionierung

Get Bucket-Versionierung

s3:GetLifecycleKonfiguration

BUCKET-Lebenszyklus ABRUFEN

s3:GetReplicationConfiguration

GET Bucket-Replizierung

s3:ListAllMyBuchs

  • GET Service

  • GET Storage-Auslastung

Ja, für GET Storage Usage

s3:ListBucket

  • Bucket ABRUFEN (Objekte auflisten)

  • EIMER

  • WIEDERHERSTELLUNG VON POSTOBJEKTEN

s3:ListBucketMultipartUploads

  • Mehrteilige Uploads Auflisten

  • WIEDERHERSTELLUNG VON POSTOBJEKTEN

s3:ListBucketVersions

Get Bucket-Versionen

s3:PutBucketCompliance

PUT Bucket-Compliance (veraltet)

Ja.

s3:PutBucketConsistency

PUT Bucket-Konsistenz

Ja.

s3:PutBucketCORS

  • Bucket Cors† LÖSCHEN

  • Bucket-Cors EINGEBEN

s3:PutVerschlüsselungKonfiguration

  • Bucket-Verschlüsselung LÖSCHEN

  • Bucket-Verschlüsselung

s3:PutBucketLastAccessTime

PUT Bucket-Zeit für den letzten Zugriff

Ja.

s3:PutBucketMetadataBenachrichtigung

PUT Bucket-Metadaten-Benachrichtigungskonfiguration

Ja.

s3:PutBucketNotification

PUT Bucket-Benachrichtigung

s3:PutBucketObjectLockConfiguration

  • Geben Sie Bucket mit dem EIN x-amz-bucket-object-lock-enabled: true Kopfzeile anfordern (erfordert auch die Berechtigung s3:CreateBucket)

  • PUT Objekt Lock-Konfiguration

s3:PutBucketPolicy

Bucket-Richtlinie

s3:PutBucketTagging

  • Bucket-Tagging† löschen

  • PUT Bucket-Tagging

s3:PutBucketVersionierung

PUT Bucket-Versionierung

s3:PutLifecycleKonfiguration

  • Bucket-Lebenszyklus LÖSCHEN†

  • PUT Bucket-Lebenszyklus

s3:PuteReplikationKonfiguration

PUT Bucket-Replizierung

Ja, separate Berechtigungen für PUT und DELETE*

Berechtigungen, die sich auf Objekte beziehen

Berechtigungen S3-REST-API-OPERATIONEN Individuell für StorageGRID

s3:AbortMehrteilaUpload

  • Abbrechen Von Mehrteiligen Uploads

  • WIEDERHERSTELLUNG VON POSTOBJEKTEN

s3:DeleteObject

  • Objekt LÖSCHEN

  • LÖSCHEN Sie mehrere Objekte

  • WIEDERHERSTELLUNG VON POSTOBJEKTEN

s3:DeleteObjectTagging

Objekt-Tagging LÖSCHEN

s3:DeleteObjectVersionTagging

Objekt-Tagging LÖSCHEN (eine bestimmte Version des Objekts)

s3:DeleteObjectVersion

Objekt LÖSCHEN (eine bestimmte Version des Objekts)

s3:GetObject

  • GET Objekt

  • HEAD Objekt

  • WIEDERHERSTELLUNG VON POSTOBJEKTEN

  • Wählen Sie Objektinhalt

s3:GetObjectAcl

GET Objekt-ACL

s3:GetObjectLegalOld

HOLD-Aufbewahrung für Objekte

s3:GetObjectRetention

Aufbewahrung von Objekten

s3:GetObjectTagging

Get Objekt-Tagging

s3:GetObjectVersionTagging

GET Object Tagging (eine bestimmte Version des Objekts)

s3:GetObjectVersion

GET Object (eine bestimmte Version des Objekts)

s3:ListeMultipartUploadParts

Teile auflisten, Objekt WIEDERHERSTELLEN

s3:PutObject

  • PUT Objekt

  • PUT Objekt - Kopieren

  • WIEDERHERSTELLUNG VON POSTOBJEKTEN

  • Initiieren Von Mehrteiligen Uploads

  • Abschließen Von Mehrteiligen Uploads

  • Hochladen Von Teilen

  • Hochladen Von Teilen - Kopieren

s3:PuttObjectLegalOld

LEGALE Aufbewahrung des Objekts EINGEBEN

s3:PutObjectRetention

AUFBEWAHRUNG von Objekten

s3:PuttObjectTagging

PUT Objekt-Tagging

s3:PuttObjectVersionTagging

PUT Objekt-Tagging (eine bestimmte Version des Objekts)

s3:PutOverwrite Object

  • PUT Objekt

  • PUT Objekt - Kopieren

  • PUT Objekt-Tagging

  • Objekt-Tagging LÖSCHEN

  • Abschließen Von Mehrteiligen Uploads

Ja.

s3:RestoreObject

WIEDERHERSTELLUNG VON POSTOBJEKTEN

Verwenden Sie PutOverwriteObject-Berechtigung

die s3:PutOverwriteObject-Berechtigung ist eine benutzerdefinierte StorageGRID-Berechtigung, die für Vorgänge gilt, die Objekte erstellen oder aktualisieren. Durch diese Berechtigung wird festgelegt, ob der Client die Daten, benutzerdefinierte Metadaten oder S3-Objekt-Tagging überschreiben kann.

Mögliche Einstellungen für diese Berechtigung sind:

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

  • Deny: Der Client kann ein Objekt nicht überschreiben. Wenn die Option „Ablehnen“ eingestellt ist, funktioniert die Berechtigung „PutOverwriteObject“ wie folgt:

    • Wenn ein vorhandenes Objekt auf demselben Pfad gefunden wird:

      • Die Daten des Objekts, benutzerdefinierte Metadaten oder S3 Objekt-Tagging können nicht überschrieben werden.

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

      • Wenn die S3-Versionierung aktiviert ist, verhindert die Einstellung Deny, dass PUT Objekt-Tagging oder DELETE Objekt-Tagging die TagSet für ein Objekt und seine nicht aktuellen Versionen ändert.

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

  • Wenn diese Berechtigung nicht vorhanden ist, ist der Effekt der gleiche, als ob Allow-were gesetzt wurden.

Wichtig Wenn die aktuelle S3-Richtlinie eine Überschreibung zulässt und die Berechtigung PutOverwriteObject auf Deny gesetzt ist, kann der Client die Daten eines Objekts, benutzerdefinierte Metadaten oder Objekt-Tagging nicht überschreiben. Wenn zusätzlich das Kontrollkästchen Client Modification verhindern* aktiviert ist (CONFIGURATION System Grid options), überschreibt diese Einstellung die Einstellung der PutOverwriteObject-Berechtigung.
Verwandte Informationen

Beispiele für S3-Gruppenrichtlinien

Legen Sie Bedingungen in einer Richtlinie fest

Die Bedingungen legen fest, wann eine Richtlinie in Kraft sein wird. Die Bedingungen bestehen aus Bedienern und Schlüsselwertpaaren.

Bedingungen Verwenden Sie Key-Value-Paare für die Auswertung. Ein Bedingungselement kann mehrere Bedingungen enthalten, und jede Bedingung kann mehrere Schlüsselwert-Paare enthalten. Der Bedingungsblock verwendet das folgende Format:

Condition: {
     condition_type: {
          condition_key: condition_values

Im folgenden Beispiel verwendet die IPAddress-Bedingung den SourceIp-Bedingungsschlüssel.

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

Unterstützte Bedingungsoperatoren

Bedingungsoperatoren werden wie folgt kategorisiert:

  • Zeichenfolge

  • Numerisch

  • Boolesch

  • IP-Adresse

  • Null-Prüfung

Bedingungsoperatoren Beschreibung

StringEquals

Vergleicht einen Schlüssel mit einem Zeichenfolgenwert, der auf exakter Übereinstimmung basiert (Groß-/Kleinschreibung wird beachtet).

StringNotEquals

Vergleicht einen Schlüssel mit einem Zeichenfolgenwert, der auf negatives Matching basiert (Groß-/Kleinschreibung wird beachtet).

StringEqusIgnoreCase

Vergleicht einen Schlüssel mit einem Zeichenfolgenwert, der auf exakter Übereinstimmung basiert (Groß-/Kleinschreibung wird ignoriert).

StringNotEqualesIgnoreCase

Vergleicht einen Schlüssel mit einem String-Wert, der auf negatives Matching basiert (Groß-/Kleinschreibung wird ignoriert).

StringLike

Vergleicht einen Schlüssel mit einem Zeichenfolgenwert, der auf exakter Übereinstimmung basiert (Groß-/Kleinschreibung wird beachtet). Kann * und ? Platzhalterzeichen.

StringNotLike

Vergleicht einen Schlüssel mit einem Zeichenfolgenwert, der auf negatives Matching basiert (Groß-/Kleinschreibung wird beachtet). Kann * und ? Platzhalterzeichen.

Ziffern

Vergleicht einen Schlüssel mit einem numerischen Wert, der auf exakter Übereinstimmung basiert.

ZiffernNotequals

Vergleicht einen Schlüssel mit einem numerischen Wert, der auf negatives Matching basiert.

NumericGreaterThan

Vergleicht einen Schlüssel mit einem numerischen Wert, der auf „größer als“-Übereinstimmung basiert.

ZahlungGreaterThanEquals

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

NumericLessThan

Vergleicht einen Schlüssel mit einem numerischen Wert, der auf „weniger als“-Übereinstimmung basiert.

ZahlungWenigerThanEquals

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

Bool

Vergleicht einen Schlüssel mit einem Booleschen Wert auf der Grundlage von „true“ oder „false“-Übereinstimmung.

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 negatiertem Abgleich.

Null

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

Unterstützte Bedingungsschlüssel

Kategorie Die entsprechenden Bedingungsschlüssel Beschreibung

IP-Operatoren

aws:SourceIp

Vergleicht mit der IP-Adresse, von der die Anfrage gesendet wurde. Kann für Bucket- oder Objektvorgänge verwendet werden

Hinweis: wurde die S3-Anfrage über den Lastbalancer-Dienst auf Admin-Knoten und Gateways-Knoten gesendet, wird dies mit der IP-Adresse verglichen, die vor dem Load Balancer Service liegt.

Hinweis: Wenn ein Drittanbieter-, nicht-transparenter Load Balancer verwendet wird, wird dies mit der IP-Adresse dieses Load Balancer verglichen. Alle X-Forwarded-For Kopfzeile wird ignoriert, da seine Gültigkeit nicht ermittelt werden kann.

Ressource/Identität

aws:Benutzername

Vergleicht mit dem Benutzernamen des Absenders, von dem die Anfrage gesendet wurde. Kann für Bucket- oder Objektvorgänge verwendet werden

s3:ListBucket und

s3:ListBucketVersions Berechtigungen

s3:Trennzeichen

Vergleicht mit dem Parameter Trennzeichen, der in einer Anforderung GET Bucket oder GET Bucket Object Version angegeben ist.

s3:ListBucket und

s3:ListBucketVersions Berechtigungen

s3:max-keys

Vergleicht den Parameter max-keys, der in einer Anforderung FÜR GET Bucket oder GET Bucket Object-Versionen angegeben ist.

s3:ListBucket und

s3:ListBucketVersions Berechtigungen

s3:Präfix

Vergleicht mit dem Präfixparameter, der in einer Anforderung FÜR GET Bucket oder GET Bucket Object-Versionen angegeben ist.

s3:PutObject

s3:verbleibende Object-Lock-Retention-Tage

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

  • PUT Objekt

  • PUT Objekt - Kopieren

  • Initiieren Von Mehrteiligen Uploads

s3:PutObjectRetention

s3:verbleibende Object-Lock-Retention-Tage

Vergleicht mit dem in der ANFORDERUNG PUT Object Retention angegebenen Aufbewahrungsdatum, um sicherzustellen, dass dieser innerhalb des zulässigen Bereichs liegt.

Geben Sie Variablen in einer Richtlinie an

Sie können Variablen in Richtlinien verwenden, um die Richtlinieninformationen auszufüllen, wenn sie verfügbar sind. Sie können Richtlinienvariablen in verwenden Resource Element und in String-Vergleichen im Condition Element:

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

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

In diesem Beispiel die Variable ${aws:username} Ist Teil des Bedingungswertes im Bedingungsblock:

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

${aws:SourceIp}

Verwendet den SourceIp-Schlüssel als bereitgestellte Variable.

${aws:username}

Verwendet den Benutzernamen-Schlüssel als bereitgestellte Variable.

${s3:prefix}

Verwendet den Service-spezifischen Präfixschlüssel als bereitgestellte Variable.

${s3:max-keys}

Verwendet die Service-spezifische max-keys als die angegebene Variable.

${*}

Sonderzeichen. Verwendet das Zeichen als Literal * -Zeichen.

${?}

Sonderzeichen. Verwendet den Charakter als Literal ? Zeichen.

${$}

Sonderzeichen. Verwendet das Zeichen als Literal USD Zeichen.

Erstellen von Richtlinien, die eine spezielle Handhabung erfordern

Manchmal kann eine Richtlinie Berechtigungen erteilen, die für die Sicherheit oder die Gefahr für einen fortgesetzten Betrieb gefährlich sind, z. B. das Sperren des Root-Benutzers des Kontos. Die StorageGRID S3-REST-API-Implementierung ist bei der Richtlinienvalidierung weniger restriktiv als Amazon, aber auch bei der Richtlinienbewertung streng.

Richtlinienbeschreibung Richtlinientyp Verhalten von Amazon Verhalten von StorageGRID

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

Eimer

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

Gleich

Verweigern Sie selbst jegliche Berechtigungen für Benutzer/Gruppe

Gruppieren

Gültig und durchgesetzt

Gleich

Erlauben Sie einer fremden Kontogruppe jegliche Berechtigung

Eimer

Ungültiger Principal

Gültig, aber die Berechtigungen für alle S3-Bucket-Richtlinienvorgänge geben bei Richtlinienzugelassen durch eine Richtlinie einen nicht zugelassenen 405-Method-Fehler zurück

Berechtigung für ein ausländisches Konto oder einen Benutzer zulassen

Eimer

Gültig, aber die Berechtigungen für alle S3-Bucket-Richtlinienvorgänge geben bei Richtlinienzugelassen durch eine Richtlinie einen nicht zugelassenen 405-Method-Fehler zurück

Gleich

Alle Berechtigungen für alle Aktionen zulassen

Eimer

Gültig, aber Berechtigungen für alle S3-Bucket-Richtlinienvorgänge geben einen 405 Methode nicht erlaubten Fehler für das ausländische Konto Root und Benutzer zurück

Gleich

Alle Berechtigungen für alle Aktionen verweigern

Eimer

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

Gleich

Principal ist ein nicht existierender Benutzer oder eine Gruppe

Eimer

Ungültiger Principal

Gültig

Die Ressource ist ein nicht existierender S3-Bucket

Gruppieren

Gültig

Gleich

Principal ist eine lokale Gruppe

Eimer

Ungültiger Principal

Gültig

Policy gewährt einem nicht-Inhaberkonto (einschließlich anonymer Konten) Berechtigungen zum PUT von Objekten

Eimer

Gültig. Objekte sind Eigentum des Erstellerkontos, und die Bucket-Richtlinie gilt nicht. Das Ersteller-Konto muss über Objekt-ACLs Zugriffsrechte für das Objekt gewähren.

Gültig. Der Eigentümer der Objekte ist das Bucket-Owner-Konto. Bucket-Richtlinie gilt.

WORM-Schutz (Write Once, Read Many)

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

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

  • Wählen Sie im Grid Manager die Option KONFIGURATION System Grid-Optionen und aktivieren Sie das Kontrollkästchen Client-Änderung verhindern.

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

    • Fügen Sie der S3-Richtlinie einen PutOverwriteObject DENY-Vorgang hinzu.

    • Fügen Sie der S3-Richtlinie einen DeleteObject DENY-Vorgang hinzu.

    • Fügen Sie der S3-Richtlinie einen PUT Object ALLOW-Vorgang hinzu.

Wichtig Wenn DeleteObject in einer S3-Richtlinie VERWEIGERT wird, verhindert dies nicht, dass ILM Objekte löscht, wenn eine Regel wie „Zero Copies after 30 days“ vorhanden ist.
Wichtig Selbst wenn all diese Regeln und Richtlinien angewendet werden, schützen sie sich nicht vor gleichzeitigen Schreibvorgängen (siehe Situation A). Sie schützen vor sequenziellen Überschreibungen (siehe Situation B).

Situation A: Gleichzeitige Schreibvorgänge (nicht bewacht)

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

Situation B: Sequentielle abgeschlossene Überschreibungen (bewacht gegen)

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

Objektmanagement mit ILM

Beispiele für S3-Richtlinien

Verwenden Sie die Beispiele in diesem Abschnitt, um StorageGRID-Zugriffsrichtlinien für Buckets und Gruppen zu erstellen.

Beispiele für S3-Bucket-Richtlinien

Bucket-Richtlinien geben die Zugriffsberechtigungen für den Bucket an, mit dem die Richtlinie verknüpft ist. Bucket-Richtlinien werden mithilfe der S3-PutBucketPolicy-API konfiguriert.

Eine Bucket-Richtlinie kann mithilfe der AWS CLI wie folgt konfiguriert werden:

> aws s3api put-bucket-policy --bucket examplebucket --policy file://policy.json

Beispiel: Lesezugriff auf einen Bucket zulassen

In diesem Beispiel darf jeder, auch anonym, Objekte im Bucket auflisten und get-Objektvorgänge an allen Objekten im Bucket durchführen. Alle anderen Operationen werden abgelehnt. Beachten Sie, dass diese Richtlinie möglicherweise nicht besonders nützlich ist, da niemand außer dem Konto-Root über Berechtigungen zum Schreiben in den Bucket verfügt.

{
  "Statement": [
    {
      "Sid": "AllowEveryoneReadOnlyAccess",
      "Effect": "Allow",
      "Principal": "*",
      "Action": [ "s3:GetObject", "s3:ListBucket" ],
      "Resource": ["arn:aws:s3:::examplebucket","arn:aws:s3:::examplebucket/*"]
    }
  ]
}

Beispiel: Jeder in einem Konto Vollzugriff zulassen, und jeder in einem anderen Konto hat nur Lesezugriff auf einen Bucket

In diesem Beispiel ist jedem in einem bestimmten Konto der vollständige Zugriff auf einen Bucket gestattet, während jeder in einem anderen angegebenen Konto nur die Liste des Buckets und die Durchführung von GetObject-Operationen für Objekte im Bucket erlaubt ist, die mit dem beginnen shared/ Objektschlüsselpräfix.

Hinweis In StorageGRID sind Objekte, die von einem nicht-Inhaberkonto erstellt wurden (einschließlich anonymer Konten), Eigentum des Bucket-Inhaberkontos. Die Bucket-Richtlinie gilt für diese Objekte.
{
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "95390887230002558202"
      },
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::examplebucket",
        "arn:aws:s3:::examplebucket/*"
      ]
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "31181711887329436680"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::examplebucket/shared/*"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "31181711887329436680"
      },
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::examplebucket",
      "Condition": {
        "StringLike": {
          "s3:prefix": "shared/*"
        }
      }
    }
  ]
}

Beispiel: Lesezugriff für einen Bucket und vollständiger Zugriff durch angegebene Gruppe

In diesem Beispiel dürfen alle, einschließlich anonym, den Bucket auflisten und GET-Objektvorgänge für alle Objekte im Bucket durchführen, während nur Benutzer der Gruppe gehören Marketing Im angegebenen Konto ist Vollzugriff erlaubt.

{
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::95390887230002558202:federated-group/Marketing"
      },
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::examplebucket",
        "arn:aws:s3:::examplebucket/*"
      ]
    },
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": ["s3:ListBucket","s3:GetObject"],
      "Resource": [
        "arn:aws:s3:::examplebucket",
        "arn:aws:s3:::examplebucket/*"
      ]
    }
  ]
}

Beispiel: Jeder Lese- und Schreibzugriff auf einen Bucket zulassen, wenn Client im IP-Bereich ist

In diesem Beispiel darf jeder, einschließlich anonym, den Bucket auflisten und beliebige Objektvorgänge an allen Objekten im Bucket durchführen, vorausgesetzt, dass die Anforderungen aus einem bestimmten IP-Bereich stammen (54.240.143.0 bis 54.240.143.255, außer 54.240.143.188). Alle anderen Vorgänge werden abgelehnt, und alle Anfragen außerhalb des IP-Bereichs werden abgelehnt.

{
  "Statement": [
    {
      "Sid": "AllowEveryoneReadWriteAccessIfInSourceIpRange",
      "Effect": "Allow",
      "Principal": "*",
      "Action": [ "s3:*Object", "s3:ListBucket" ],
      "Resource": ["arn:aws:s3:::examplebucket","arn:aws:s3:::examplebucket/*"],
      "Condition": {
        "IpAddress": {"aws:SourceIp": "54.240.143.0/24"},
        "NotIpAddress": {"aws:SourceIp": "54.240.143.188"}
      }
    }
  ]
}

Beispiel: Vollständigen Zugriff auf einen Bucket zulassen, der ausschließlich von einem festgelegten föderierten Benutzer verwendet wird

In diesem Beispiel ist dem föderierten Benutzer Alex der vollständige Zugriff auf das erlaubt examplebucket Bucket und seine Objekte. Alle anderen Benutzer, einschließlich ‘root', werden ausdrücklich allen Operationen verweigert. Beachten Sie jedoch, dass ‘root' niemals die Berechtigungen zum Put/get/DeleteBucketPolicy verweigert wird.

{
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::95390887230002558202:federated-user/Alex"
      },
      "Action": [
        "s3:*"
      ],
      "Resource": [
        "arn:aws:s3:::examplebucket",
        "arn:aws:s3:::examplebucket/*"
      ]
    },
    {
      "Effect": "Deny",
      "NotPrincipal": {
        "AWS": "arn:aws:iam::95390887230002558202:federated-user/Alex"
      },
      "Action": [
        "s3:*"
      ],
      "Resource": [
        "arn:aws:s3:::examplebucket",
        "arn:aws:s3:::examplebucket/*"
      ]
    }
  ]
}

Beispiel: PutOverwriteObject-Berechtigung

In diesem Beispiel ist der Deny Effect für PutOverwriteObject und DeleteObject stellt sicher, dass niemand die Daten, benutzerdefinierte Metadaten und S3-Objekt-Tagging überschreiben oder löschen kann.

{
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "s3:PutOverwriteObject",
        "s3:DeleteObject",
        "s3:DeleteObjectVersion"
      ],
      "Resource": "arn:aws:s3:::wormbucket/*"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::95390887230002558202:federated-group/SomeGroup"

},
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::wormbucket"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::95390887230002558202:federated-group/SomeGroup"

},
      "Action": "s3:*",
      "Resource": "arn:aws:s3:::wormbucket/*"
    }
  ]
}
Verwandte Informationen

Operationen auf Buckets

Beispiele für S3-Gruppenrichtlinien

Gruppenrichtlinien legen die Zugriffsberechtigungen für die Gruppe fest, der die Richtlinie zugeordnet ist. Es gibt keine Principal Element in der Richtlinie, da sie implizit ist. Gruppenrichtlinien werden mit dem Tenant Manager oder der API konfiguriert.

Beispiel: Legen Sie eine Gruppenrichtlinie mit Tenant Manager fest

Wenn Sie den Tenant Manager zum Hinzufügen oder Bearbeiten einer Gruppe verwenden, können Sie auswählen, wie Sie die Gruppenrichtlinie erstellen möchten, die definiert, welche S3-Zugriffsberechtigungen Mitglieder dieser Gruppe haben. Gehen Sie wie folgt vor:

  • Kein S3-Zugriff: Standardoption. Benutzer in dieser Gruppe haben keinen Zugriff auf S3-Ressourcen, es sei denn, der Zugriff wird mit einer Bucket-Richtlinie gewährt. Wenn Sie diese Option auswählen, hat nur der Root-Benutzer standardmäßig Zugriff auf S3-Ressourcen.

  • Schreibgeschützter Zugriff: Benutzer in dieser Gruppe haben schreibgeschützten Zugriff auf S3-Ressourcen. Benutzer in dieser Gruppe können beispielsweise Objekte auflisten und Objektdaten, Metadaten und Tags lesen. Wenn Sie diese Option auswählen, wird im Textfeld der JSON-String für eine schreibgeschützte Gruppenrichtlinie angezeigt. Sie können diesen String nicht bearbeiten.

  • Vollzugriff: Benutzer in dieser Gruppe haben vollen Zugriff auf S3-Ressourcen, einschließlich Buckets. Wenn Sie diese Option auswählen, wird im Textfeld der JSON-String für eine Richtlinie mit vollem Zugriff angezeigt. Sie können diesen String nicht bearbeiten.

  • Benutzerdefiniert: Benutzern in der Gruppe werden die Berechtigungen erteilt, die Sie im Textfeld angeben.

    In diesem Beispiel dürfen Mitglieder der Gruppe nur ihren spezifischen Ordner (Schlüsselpräfix) im angegebenen Bucket auflisten und darauf zugreifen.

    Fügen Sie der Mandantengruppe benutzerdefinierte Gruppenrichtlinien hinzu

Beispiel: Vollständigen Zugriff auf alle Buckets zulassen

In diesem Beispiel sind alle Mitglieder der Gruppe berechtigt, vollständigen Zugriff auf alle Buckets des Mandantenkontos zu erhalten, sofern nicht ausdrücklich von der Bucket-Richtlinie abgelehnt wurde.

{
  "Statement": [
    {
      "Action": "s3:*",
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::*"
    }
  ]
}

Beispiel: Schreibgeschützter Zugriff auf alle Buckets für Gruppen zulassen

In diesem Beispiel haben alle Mitglieder der Gruppe schreibgeschützten Zugriff auf S3-Ressourcen, sofern nicht ausdrücklich von der Bucket-Richtlinie abgelehnt wird. Benutzer in dieser Gruppe können beispielsweise Objekte auflisten und Objektdaten, Metadaten und Tags lesen.

{
  "Statement": [
    {
      "Sid": "AllowGroupReadOnlyAccess",
      "Effect": "Allow",
      "Action": [
        "s3:ListAllMyBuckets",
        "s3:ListBucket",
        "s3:ListBucketVersions",
        "s3:GetObject",
        "s3:GetObjectTagging",
        "s3:GetObjectVersion",
        "s3:GetObjectVersionTagging"
      ],
      "Resource": "arn:aws:s3:::*"
    }
  ]
}

Beispiel: Gruppenmitglieder haben vollen Zugriff auf ihre „folder“ in einem Bucket

In diesem Beispiel dürfen Mitglieder der Gruppe nur ihren spezifischen Ordner (Schlüsselpräfix) im angegebenen Bucket auflisten und darauf zugreifen. Beachten Sie, dass bei der Festlegung der Privatsphäre dieser Ordner Zugriffsberechtigungen aus anderen Gruppenrichtlinien und der Bucket-Richtlinie berücksichtigt werden sollten.

{
  "Statement": [
    {
      "Sid": "AllowListBucketOfASpecificUserPrefix",
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::department-bucket",
      "Condition": {
        "StringLike": {
          "s3:prefix": "${aws:username}/*"
        }
      }
    },
    {
      "Sid": "AllowUserSpecificActionsOnlyInTheSpecificUserPrefix",
      "Effect": "Allow",
      "Action": "s3:*Object",
      "Resource": "arn:aws:s3:::department-bucket/${aws:username}/*"
    }
  ]
}
Verwandte Informationen

Verwenden Sie das Mandantenkonto