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.

Verwendung von 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 den Operationen GetBucket Policy, PutBucket Policy und DeleteBucket Policy S3 verwaltet werden. 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.

Hinweis Es gibt keine Unterschiede in der Priorität zwischen Gruppen- und Bucket-Richtlinien.

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)

Richtlinienaussagen werden mithilfe dieser Struktur erstellt, um Berechtigungen anzugeben: <Effekt> gewähren, um <Principal> <Aktion> auf <Ressource> durchzuführen, wenn <Bedingung> angewendet wird.

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 Hauptelement werden Platzhalterzeichen nicht unterstützt, außer zum Festlegen eines anonymen Zugriffs, der allen Personen die Berechtigung gewährt. Sie legen beispielsweise den Platzhalter (*) als Principal-Wert fest.

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

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.

Konsistenz von Richtlinien

Standardmäßig sind alle Aktualisierungen, die Sie an Gruppenrichtlinien vornehmen, letztendlich konsistent. Wenn eine Gruppenrichtlinie konsistent wird, können die Änderungen aufgrund des Caching von Richtlinien weitere 15 Minuten in Anspruch nehmen. Standardmäßig sind alle Updates an Bucket-Richtlinien stark konsistent.

Sie können bei Bedarf die Konsistenzgarantien für Bucket-Richtlinienaktualisierungen ändern. Beispielsweise kann es vorkommen, dass eine Änderung an einer Bucket-Richtlinie bei einem Standortausfall verfügbar ist.

In diesem Fall können Sie entweder die einstellen Consistency-Control Header in der Anforderung „PutBucket Policy“, oder Sie können die Anforderung „PUT Bucket Consistency Request“ verwenden. Wenn eine Bucket-Richtlinie konsistent wird, können die Änderungen durch das Caching von Richtlinien zusätzliche 8 Sekunden in Anspruch nehmen.

Hinweis Wenn Sie die Konsistenz auf einen anderen Wert setzen, um eine temporäre Situation zu umgehen, stellen Sie sicher, dass die Einstellung auf Bucket-Ebene wieder auf ihren ursprünglichen Wert zurückgesetzt wird, wenn Sie fertig sind. Andernfalls wird für alle zukünftigen Bucket-Anforderungen die geänderte 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 PutBucketPolicy-Vorgang 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. Richtlinienanweisungen in einer Gruppenrichtlinie benötigen das Hauptelement nicht, da die Gruppe als Hauptelement verstanden wird.

  • In einer Richtlinie werden Prinzipale 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 verwendet jetzt die s3:PutReplicationConfiguration-Berechtigung sowohl für die PutBucketReplication- als auch für die DeleteBucketReplication-Aktionen. StorageGRID verwendet für jede Aktion separate Berechtigungen, die mit der ursprünglichen Amazon S3 Spezifikation übereinstimmt.
Hinweis Ein Löschen wird durchgefü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

CreateBucket

Ja.

Hinweis: Nur in Gruppenrichtlinien verwenden.

s3:DeleteBucket

DeleteBucket

s3:DeleteBucketMetadataBenachrichtigung

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

Ja.

s3:DeleteBucketPolicy

DeleteBucketRichtlinien

s3:DeleteReplicationConfiguration

DeleteBucketReplication

Ja, separate Berechtigungen für PUT und DELETE

s3:GetBucketAcl

GetBucketAcl

s3:GetBucketCompliance

GET Bucket-Compliance (veraltet)

Ja.

s3:GetBucketConsistency

Get Bucket-Konsistenz

Ja.

s3:GetBucketCORS

GetBucketCors

s3:GetVerschlüsselungKonfiguration

GetBucketEncryption

s3:GetBucketLastAccessTime

ZEITPUNKT des letzten Zugriffs FÜR den Bucket ABRUFEN

Ja.

s3:GetBucketLocation

GetBucketLocation

s3:GetBucketMetadataBenachrichtigung

Konfiguration der Bucket-Metadaten-Benachrichtigungen ABRUFEN

Ja.

s3:GetBucketBenachrichtigung

GetBucketNotificationConfiguration

s3:GetBucketObjectLockConfiguration

GetObjectLockConfiguration

s3:GetBucketPolicy

GetBucketPolicy

s3:GetBucketTagging

GetBucketTagging

s3:GetBucketVersionierung

GetBucketVersioning

s3:GetLifecycleKonfiguration

GetBucketLifecycleKonfiguration

s3:GetReplicationConfiguration

GetBucketReplication

s3:ListAllMyBuchs

  • ListBuchs

  • GET Storage-Auslastung

Ja, für DIE GET Storage-Nutzung.

Hinweis: Nur in Gruppenrichtlinien verwenden.

s3:ListBucket

  • ListObjekte

  • HeadBucket

  • Objekt restoreObject

s3:ListBucketMultipartUploads

  • ListMultipartUploads

  • Objekt restoreObject

s3:ListBucketVersions

Get Bucket-Versionen

s3:PutBucketCompliance

PUT Bucket-Compliance (veraltet)

Ja.

s3:PutBucketConsistency

PUT Bucket-Konsistenz

Ja.

s3:PutBucketCORS

  • DeleteBucketCors†

  • PutBucketCors

s3:PutVerschlüsselungKonfiguration

  • DeleteBucketEncryption

  • PutBucketEncryption

s3:PutBucketLastAccessTime

PUT Bucket-Zeit für den letzten Zugriff

Ja.

s3:PutBucketMetadataBenachrichtigung

PUT Bucket-Metadaten-Benachrichtigungskonfiguration

Ja.

s3:PutBucketNotification

PutBucketNotificationKonfiguration

s3:PutBucketObjectLockConfiguration

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

  • PutObjectLockKonfiguration

s3:PutBucketPolicy

PutBucketPolicy

s3:PutBucketTagging

  • DeleteBucketTagging†

  • PutBucketTagging

s3:PutBucketVersionierung

PutBucketVersioning

s3:PutLifecycleKonfiguration

  • DeleteBucketLifecycle†

  • PutBucketLifecycleKonfiguration

s3:PuteReplikationKonfiguration

PutBucketReplication

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

  • AbortMehrteilaUpload

  • Objekt restoreObject

s3:BypassGovernanceAufbewahrung

  • DeleteObject

  • Objekte deObjekteObjekte

  • PutObjectRetention

s3:DeleteObject

  • DeleteObject

  • Objekte deObjekteObjekte

  • Objekt restoreObject

s3:DeleteObjectTagging

DeleteObjectTagging

s3:DeleteObjectVersionTagging

DeleteObjectTagging (eine spezifische Version des Objekts)

s3:DeleteObjectVersion

DeleteObject (eine bestimmte Version des Objekts)

s3:GetObject

  • GetObject

  • HeadObject

  • Objekt restoreObject

  • SelektierObjectContent

s3:GetObjectAcl

GetObjectAcl

s3:GetObjectLegalOld

GetObjectLegalHold

s3:GetObjectRetention

GetObjectRetention

s3:GetObjectTagging

GetObjectTagging

s3:GetObjectVersionTagging

GetObjectTagging (eine spezifische Version des Objekts)

s3:GetObjectVersion

GetObject (eine spezifische Version des Objekts)

s3:ListeMultipartUploadParts

ListParts, RestoreObject

s3:PutObject

  • PutObject

  • CopyObject

  • Objekt restoreObject

  • CreateMultipartUpload

  • CompleteMultipartUpload

  • UploadTeil

  • UploadPartCopy

s3:PuttObjectLegalOld

PutObjectLegalHold

s3:PutObjectRetention

PutObjectRetention

s3:PuttObjectTagging

PutObjectTagging

s3:PuttObjectVersionTagging

PutObjectTagging (eine spezifische Version des Objekts)

s3:PutOverwrite Object

  • PutObject

  • CopyObject

  • PutObjectTagging

  • DeleteObjectTagging

  • CompleteMultipartUpload

Ja.

s3:RestoreObject

Objekt restoreObject

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, benutzerdefinierten Metadaten oder S3-Objekt-Tagging des Objekts 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 PutObjectTagging- oder DeleteObjectTagging-Operationen 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 der Effekt der gleiche, als ob Allow-were gesetzt wurden.

Hinweis Wenn die aktuelle S3-Richtlinie Überschreiben zulässt und die PutOverwriteObject-Berechtigung auf Deny festgelegt ist, kann der Client die Daten, benutzerdefinierten Metadaten oder Objekt-Tagging eines Objekts nicht überschreiben. Wenn zusätzlich das Kontrollkästchen Client-Änderung verhindern aktiviert ist (KONFIGURATION > Sicherheitseinstellungen > Netzwerk und Objekte), setzt diese Einstellung die Einstellung der PutOverwriteObject-Berechtigung außer Kraft.

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 basierend auf dem „größer als“-Vergleich.

ZahlungGreaterThanEquals

Vergleicht einen Schlüssel mit einem numerischen Wert basierend auf dem „größer als oder gleich“-Vergleich.

NumericLessThan

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

ZahlungWenigerThanEquals

Vergleicht einen Schlüssel mit einem numerischen Wert basierend auf dem „kleiner als oder gleich“-Vergleich.

Bool

Vergleicht einen Schlüssel mit einem booleschen Wert basierend auf „true“ oder „false“-Matching.

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

Zustandsschlüssel Aktionen Beschreibung

aws:SourceIp

IP-Operatoren

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 ihre Gültigkeit nicht ermittelt werden kann.

aws:Benutzername

Ressource/Identität

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

s3:Trennzeichen

s3:ListBucket und

s3:ListBucketVersions Berechtigungen

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

s3:ExistingObjectTag/<tag-key>

s3:DeleteObjectTagging

s3:DeleteObjectVersionTagging

s3:GetObject

s3:GetObjectAcl

3:GetObjectTagging

s3:GetObjectVersion

s3:GetObjectVersionAkl

s3:GetObjectVersionTagging

s3:PutObjectAcl

s3:PuttObjectTagging

s3:PutObjectVersionAcl

s3:PuttObjectVersionTagging

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

s3:max-keys

s3:ListBucket und

s3:ListBucketVersions Berechtigungen

Wird mit dem Parameter max-keys verglichen, der in einer ListObjects- oder ListObjectVersions-Anforderung angegeben ist.

s3:verbleibende Object-Lock-Retention-Tage

s3:PutObject

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:

  • PutObject

  • CopyObject

  • CreateMultipartUpload

s3:verbleibende Object-Lock-Retention-Tage

s3:PutObjectRetention

Vergleicht das in der PutObjectRetention-Anfrage angegebene Aufbewahrungsdatum, um sicherzustellen, dass es innerhalb des zulässigen Bereichs liegt.

s3:Präfix

s3:ListBucket und

s3:ListBucketVersions Berechtigungen

Wird mit dem Präfix-Parameter verglichen, der in einer ListObjects- oder ListObjectVersions-Anforderung angegeben ist.

s3:RequestObjectTag/<tag-key>

s3:PutObject

s3:PuttObjectTagging

s3:PuttObjectVersionTagging

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

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

Die Richtlinie gewährt einem Konto ohne Eigentümer (einschließlich anonymer Konten) Berechtigungen zum Setzen 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:

  • Gehen Sie im Grid Manager zu CONFIGURATION > Security > Security settings > Network and Objects 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 PutObject ALLOW-Vorgang hinzu.

Hinweis Wenn in einer S3-Richtlinie DeleteObject auf DENY festgelegt wird, verhindert dies nicht, dass ILM Objekte löscht, wenn eine Regel wie „Zero Copies after 30 days“ vorhanden ist.
Hinweis Selbst wenn alle 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)