Skip to main content
Eine neuere Version dieses Produkts ist erhältlich.
Die deutsche Sprachversion wurde als Serviceleistung für Sie durch maschinelle Übersetzung erstellt. Bei eventuellen Unstimmigkeiten hat die englische Sprachversion Vorrang.

Wie StorageGRID AWS-Richtlinien verwendet, um den Zugriff auf S3-Buckets und Objekte zu steuern

Änderungen vorschlagen

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

Überblick über die Zugriffsrichtlinie

StorageGRID unterstützt drei Arten von Zugriffsrichtlinien:

  • Bucket-Richtlinien, die mithilfe der GetBucketPolicy, PutBucketPolicy und DeleteBucketPolicy S3-API-Operationen oder über den Tenant Manager bzw. die Tenant Management API verwaltet werden. Bucket-Richtlinien sind Buckets zugeordnet, sodass sie den Zugriff von Benutzern im Bucket-Inhaberkonto oder in 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, sodass sie so konfiguriert werden, dass diese Gruppe auf bestimmte Ressourcen zugreifen kann, die diesem Konto gehören. Eine Gruppenrichtlinie gilt nur für eine Gruppe und möglicherweise für mehrere Buckets.

  • Sitzungsrichtlinien, die im Rahmen einer AssumeRole-Anfrage übermittelt werden. Sitzungsrichtlinien gelten nur für die jeweilige Sitzung und definieren zusätzlich zu den durch Gruppen- und Bucket-Richtlinie gewährten Berechtigungen die Berechtigungen des Benutzers.

Hinweis Es besteht kein Unterschied in der Priorität zwischen Gruppenrichtlinien, Bucket-Richtlinien und Sitzungsrichtlinien.

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

  • Statement-ID (Sid) (optional)

  • Wirkung

  • Principal/NotPrincipal

  • Ressource/NotResource

  • Aktion/NotAction

  • Zustand (optional)

Richtlinienanweisungen werden mithilfe dieser Struktur erstellt, um Berechtigungen festzulegen: Grant <Effect> zum Erlauben/Verweigern von <Principal> für die Ausführung von <Action> auf <Resource>, wenn <Condition> zutrifft.

Jedes Richtlinienelement dient einer bestimmten Funktion:

Element Beschreibung

Sid

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

Wirkung

Das Effect-Element dient dazu festzustellen, ob die angegebenen Operationen erlaubt oder verweigert werden. Operationen, die auf Buckets oder Objekten erlaubt (oder verweigert) werden, sind mit den unterstützten Schlüsselwörtern des Action-Elements zu kennzeichnen.

Principal/NotPrincipal

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

Sie müssen lediglich das Principal-Element in einer Bucket-Richtlinie angeben. Bei Gruppenrichtlinien ist die Gruppe, der die Richtlinie zugeordnet ist, das implizite Principal-Element.

Ressource/NotResource

Das Resource-Element identifiziert Buckets und Objekte. Berechtigungen für Buckets und Objekte können mithilfe des Amazon Resource Name (ARN) zur Identifizierung der Ressource erlaubt oder verweigert werden.

Aktion/NotAction

Die Elemente „Aktion“ und „Wirkung“ bilden die beiden Komponenten von Berechtigungen. Wenn eine Gruppe eine Ressource anfordert, wird ihr der Zugriff entweder gewährt oder verweigert. Der Zugriff wird verweigert, sofern Sie keine Berechtigungen explizit zuweisen, jedoch kann eine durch eine andere Richtlinie gewährte Berechtigung durch eine explizite Verweigerung überschrieben werden.

Zustand

Das Element „Bedingung“ ist optional. Bedingungen ermöglichen das Erstellen von Ausdrücken, um festzulegen, wann eine Richtlinie angewendet werden soll.

Im Action-Element kann das Platzhalterzeichen (*) verwendet werden, um alle Operationen oder eine Teilmenge von Operationen anzugeben. Beispielsweise entspricht diese Action Berechtigungen wie s3:GetObject, s3:PutObject und s3:DeleteObject.

s3:*Object

Im Resource-Element können Sie die Platzhalterzeichen (*) und (?) verwenden. Während das Sternchen (*) mit 0 oder mehr Zeichen übereinstimmt, stimmt das Fragezeichen (?) mit einem einzelnen beliebigen Zeichen überein.

Im Principal-Element werden Platzhalterzeichen nicht unterstützt, außer um anonymer Zugriff zu setzen, der allen Benutzern die Berechtigung erteilt. Zum Beispiel wird das Platzhalterzeichen (*) als Wert für Principal gesetzt.

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

Im folgenden Beispiel wird die Anweisung mit den Elementen „Effect“, „Principal“, „Action“ und „Resource“ verwendet. Dieses Beispiel zeigt eine vollständige Bucket-Policy-Anweisung, die den Effect „Allow“ verwendet, um den Principals, der admin group federated-group/admin und der finance group federated-group/finance, Berechtigungen zu erteilen, die Action s3:ListBucket für den Bucket mit dem Namen mybucket und die Action s3:GetObject für alle Objekte in diesem Bucket auszuführen.

{
  "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 hat eine Größenbeschränkung von 5.120 Bytes.

Einheitlichkeit der Richtlinien

Standardmäßig sind alle Aktualisierungen, die Sie an Gruppenrichtlinien vornehmen, letztendlich konsistent. Wenn eine Gruppenrichtlinie konsistent ist, kann es aufgrund des Richtlinien-Cachings bis zu 15 Minuten dauern, bis die Änderungen wirksam werden. Standardmäßig sind alle Aktualisierungen, die Sie an Bucket-Richtlinien vornehmen, stark konsistent.

Bei Bedarf können die Konsistenzgarantien für Aktualisierungen der Bucket-Richtlinie geändert werden. Beispielsweise kann gewünscht sein, dass eine Änderung an einer Bucket-Richtlinie auch während eines Standortausfalls verfügbar ist.

In diesem Fall kann entweder der Consistency-Control-Header in der PutBucketPolicy-Anfrage gesetzt werden oder die PUT Bucket consistency-Anfrage verwendet werden. Wenn eine Bucket-Richtlinie konsistent wird, können die Änderungen aufgrund des Richtlinien-Cachings bis zu 8 Sekunden benötigen, um wirksam zu werden.

Hinweis Wenn die Konsistenz vorübergehend auf einen anderen Wert gesetzt wird, um eine temporäre Situation zu umgehen, sollte die Einstellung auf Bucket-Ebene nach Abschluss wieder auf den ursprünglichen Wert zurückgesetzt werden. Andernfalls werden alle zukünftigen Bucket-Anfragen die geänderte Einstellung verwenden.

Was ist eine Sitzungsrichtlinie?

Eine Sitzungsrichtlinie ist eine Zugriffsrichtlinie, die die während einer bestimmten Sitzung verfügbaren Berechtigungen vorübergehend einschränkt, beispielsweise wenn ein Benutzer einer Gruppe beitritt. Eine Sitzungsrichtlinie kann nur eine Teilmenge der Berechtigungen zulassen und keine zusätzlichen Berechtigungen gewähren. Die Gruppe selbst kann über umfassendere Berechtigungen verfügen.

ARN in Richtlinienaussagen verwenden

In Richtlinienanweisungen wird der ARN in Principal- und Resource-Elementen verwendet.

  • Diese Syntax gibt den S3-Ressourcen-ARN an:

    arn:aws:s3:::bucket-name
    arn:aws:s3:::bucket-name/object_key
  • Diese Syntax gibt den ARN der Identitätsressource (Benutzer und Gruppen) an:

    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 innerhalb des Objektschlüssels abzugleichen.

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

    Der HTTP-Anfragetext für die PutBucketPolicy-Operation muss mit charset=UTF-8 kodiert sein.

Ressourcen in einer Richtlinie angeben

In Richtlinienanweisungen kann das Resource-Element verwendet werden, um den Bucket oder das Objekt anzugeben, für das Berechtigungen erlaubt oder verweigert werden.

  • Jede Richtlinienaussage erfordert ein Ressourcenelement. In einer Richtlinie werden Ressourcen durch das Element Resource oder alternativ NotResource für Ausschluss gekennzeichnet.

  • Sie geben Ressourcen mithilfe eines S3-Ressourcen-ARN an. Zum Beispiel:

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

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

Geben Sie Prinzipale in einer Richtlinie an.

Das Principal-Element dient zur Identifizierung des Benutzers, der Gruppe oder des Mandantenkontos, dem der Zugriff auf die Ressource durch die Richtlinienanweisung erlaubt oder 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 Principal gilt.

  • In einer Richtlinie werden Principals durch das Element „Principal“ oder alternativ „NotPrincipal“ für den Ausschluss bezeichnet.

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

    "Principal": { "AWS": "account_id"}
    "Principal": { "AWS": "identity_arn" }
  • Dieses Beispiel verwendet die Mandantenkonto-ID 27233906934684427525, die das Stammkonto und alle Benutzer des Kontos 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 („Managers“) angeben:

    "Principal": { "AWS": "arn:aws:iam::27233906934684427525:federated-group/Managers"  }
  • Es kann ein anonymer Prinzipal angegeben werden:

    "Principal": "*"
  • Um Mehrdeutigkeiten zu vermeiden, kann die Benutzer-UUID anstelle des Benutzernamens verwendet werden:

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

    Angenommen, Alex verlässt das Unternehmen und der Benutzername Alex wird gelöscht. Wenn ein neuer Alex dem Unternehmen beitritt und denselben Alex Benutzernamen erhält, könnte der neue Benutzer unbeabsichtigt die Berechtigungen des ursprünglichen Benutzers übernehmen.

  • Der Principal-Wert kann einen Gruppen-/Benutzernamen angeben, der beim Erstellen einer Bucket-Richtlinie noch nicht existiert.

Berechtigungen in einer Richtlinie angeben

In einer Richtlinie wird das Element „Action“ verwendet, um Berechtigungen für eine Ressource zu erlauben oder zu verweigern. Es gibt eine Reihe von Berechtigungen, die in einer Richtlinie angegeben werden können, die durch das Element „Action“ oder alternativ „NotAction“ für den Ausschluss gekennzeichnet sind. Jedes dieser Elemente entspricht bestimmten S3 REST API-Operationen.

Die Tabelle listet die Berechtigungen auf, 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 und DeleteBucketReplication. StorageGRID verwendet separate Berechtigungen für jede Aktion, was der ursprünglichen Amazon S3-Spezifikation entspricht.
Hinweis Ein Löschvorgang wird durchgeführt, wenn mit einem Put ein vorhandener Wert überschrieben wird.

Berechtigungen, die für Buckets gelten

Berechtigungen S3 REST API Operationen Kundenspezifisch für StorageGRID

s3:CreateBucket

CreateBucket

Ja.

Hinweis: Nur in Gruppenrichtlinien verwenden.

s3:DeleteBucket

DeleteBucket

s3:DeleteBucketMetadataNotification

Bucket-Metadatenbenachrichtigungskonfiguration löschen

Ja

s3:DeleteBucketPolicy

DeleteBucketPolicy

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:GetEncryptionConfiguration

GetBucketEncryption

s3:GetBucketLastAccessTime

Letzte Zugriffszeit des Buckets abrufen

Ja

s3:GetBucketLocation

GetBucketLocation

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:ListAllMyBuckets

  • ListBuckets

  • Speichernutzung abrufen

Ja, für GET Storage Usage.

Hinweis: Nur in Gruppenrichtlinien verwenden.

s3:ListBucket

  • ListObjects

  • HeadBucket

  • RestoreObject

s3:ListBucketMultipartUploads

  • ListMultipartUploads

  • RestoreObject

s3:ListBucketVersions

GET Bucket-Versionen

s3:PutBucketCompliance

PUT Bucket Compliance (veraltet)

Ja

s3:PutBucketConsistency

PUT Bucket Konsistenz

Ja

s3:PutBucketCORS

  • DeleteBucketCors†

  • PutBucketCors

s3:PutEncryptionConfiguration

  • DeleteBucketEncryption

  • PutBucketEncryption

s3:PutBucketLastAccessTime

PUT Bucket letzter Zugriffszeitpunkt

Ja

s3:PutBucketMetadataNotification

PUT Bucket Metadaten-Benachrichtigungskonfiguration

Ja

s3:PutBucketNotification

PutBucketNotificationConfiguration

s3:PutBucketObjectLockConfiguration

  • CreateBucket mit dem x-amz-bucket-object-lock-enabled: true Request-Header (erfordert außerdem die Berechtigung s3:CreateBucket)

  • PutObjectLockConfiguration

s3:PutBucketPolicy

PutBucketPolicy

s3:PutBucketTagging

  • DeleteBucketTagging†

  • 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 Kundenspezifisch für StorageGRID

s3:AbortMultipartUpload

  • AbortMultipartUpload

  • RestoreObject

s3:BypassGovernanceRetention

  • DeleteObject

  • DeleteObjects

  • PutObjectRetention

s3:DeleteObject

  • DeleteObject

  • DeleteObjects

  • 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

  • CopyObject

  • 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

  • CopyObject

  • PutObjectTagging

  • DeleteObjectTagging

  • CompleteMultipartUpload

Ja

s3:RestoreObject

RestoreObject

PutOverwriteObject-Berechtigung verwenden

Die s3:PutOverwriteObject Berechtigung 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 eines Objekts, benutzerdefinierte Metadaten oder S3-Objekt-Tags überschreiben kann.

Mögliche Einstellungen für diese Berechtigung sind:

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

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

    • Wenn unter demselben Pfad bereits ein Objekt gefunden wird:

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

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

      • Wenn die S3-Versionierung aktiviert ist, verhindert die Einstellung „Deny“, dass PutObjectTagging- oder DeleteObjectTagging-Operationen das TagSet eines Objekts und seiner nicht aktuellen Versionen ändern.

    • Wenn kein vorhandenes Objekt gefunden wird, hat diese Berechtigung keine Auswirkung.

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

Hinweis Wenn die aktuelle S3-Richtlinie das Überschreiben zulässt und die PutOverwriteObject-Berechtigung auf Verweigern gesetzt ist, kann der Client weder die Daten eines Objekts, benutzerdefinierte Metadaten noch Objekt-Tags überschreiben. Wenn außerdem das Kontrollkästchen Prevent client modification aktiviert ist (Configuration > Security settings > Network and objects), hat diese Einstellung Vorrang vor der Einstellung der PutOverwriteObject-Berechtigung.

Bedingungen in einer Richtlinie angeben

Bedingungen definieren, wann eine Richtlinie wirksam wird. 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:

  • Zeichenkette

  • Numerisch

  • Boolescher Wert

  • IP-Adresse

  • Nullprüfung

Bedingungsoperatoren Beschreibung

StringEquals

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

StringNotEquals

Vergleicht einen Schlüssel mit einem Zeichenkettenwert anhand einer negierten Übereinstimmung (Groß-/Kleinschreibung).

StringEqualsIgnoreCase

Vergleicht einen Schlüssel mit einem Zeichenkettenwert anhand einer exakten Übereinstimmung (Groß-/Kleinschreibung wird ignoriert).

StringNotEqualsIgnoreCase

Vergleicht einen Schlüssel mit einem Zeichenkettenwert auf Basis einer negierten Übereinstimmung (Groß-/Kleinschreibung wird ignoriert).

StringLike

Vergleicht einen Schlüssel mit einem Zeichenkettenwert anhand einer exakten Übereinstimmung (Groß-/Kleinschreibung). Kann die Platzhalterzeichen * und ? enthalten.

StringNotLike

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

NumericEquals

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

NumericNotEquals

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

NumericGreaterThan

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

NumericGreaterThanEquals

Vergleicht einen Schlüssel mit einem numerischen Wert anhand einer Übereinstimmung nach dem Prinzip „größer als oder gleich“.

NumericLessThan

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

NumericLessThanEquals

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

Bool

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

IpAddress

Vergleicht einen Schlüssel mit einer IP-Adresse oder einem Bereich von IP-Adressen.

NotIpAddress

Vergleicht einen Schlüssel mit einer IP-Adresse oder einem Bereich von IP-Adressen auf Basis einer negierten Übereinstimmung.

Null

Prüft, ob ein Bedingungsschlüssel im aktuellen Anfragekontext vorhanden ist.

IfExists

Wird an jeden Bedingungsoperator außer der Null-Bedingung angehängt, um das Fehlen des entsprechenden Bedingungsschlüssels zu prüfen. Gibt TRUE zurück, wenn der Bedingungsschlüssel nicht vorhanden ist.

Unterstützte Bedingungsschlüssel

Bedingungsschlüssel Aktionen Beschreibung

aws:SourceIp

IP-Operatoren

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

Hinweis: Wenn die S3-Anfrage über den Load Balancer Service auf Admin Nodes und Gateways Nodes gesendet wurde, erfolgt der Vergleich mit der IP-Adresse, die stromaufwärts des Load Balancer Service liegt.

Hinweis: Bei Verwendung eines nicht transparenten Load Balancers eines Drittanbieters erfolgt ein Vergleich mit der IP-Adresse dieses Load Balancers. Sämtliche X-Forwarded-For Header werden ignoriert, da ihre Gültigkeit nicht überprüft 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 im Parameter Trennzeichen einer ListObjects- oder ListObjectVersions-Anfrage angegebenen Wert verglichen.

s3:ExistingObjectTag/<tag-key>

s3:DeleteObjectTagging

s3:DeleteObjectVersionTagging

s3:GetObject

s3:GetObjectAcl

3:GetObjectTagging

s3:GetObjectVersion

s3:GetObjectVersionAcl

s3:GetObjectVersionTagging

s3:PutObjectAcl

s3:PutObjectTagging

s3:PutObjectVersionAcl

s3:PutObjectVersionTagging

Es wird vorausgesetzt, dass das bestehende Objekt den spezifischen Tag-Schlüssel und Wert besitzt.

s3:max-keys

s3:ListBucket und

s3:ListBucketVersions-Berechtigungen

Wird mit dem in einer ListObjects oder ListObjectVersions Anfrage angegebenen Parameter max-keys verglichen.

s3:object-lock-mode

s3:PutObject

Vergleicht mit dem object-lock-mode erweiterten Anfrageheader in der PutObject, CopyObject und CreateMultipartUpload Anfrage.

s3:object-lock-mode

s3:PutObjectRetention

Vergleicht mit dem object-lock-mode aus dem XML-Body in der PutObjectRetention Anfrage erweiterten Inhalt.

s3:object-lock-remaining-retention-days

s3:PutObject

Vergleicht das im `x-amz-object-lock-retain-until-date`Anforderungsheader angegebene oder aus der Standardaufbewahrungsdauer des Buckets berechnete Aufbewahrungsdatum, um sicherzustellen, dass diese Werte im zulässigen Bereich für die folgenden Anfragen liegen:

  • PutObject

  • CopyObject

  • CreateMultipartUpload

s3:object-lock-remaining-retention-days

s3:PutObjectRetention

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

s3:prefix

s3:ListBucket und

s3:ListBucketVersions-Berechtigungen

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

s3:RequestObjectTag/<tag-key>

s3:PutObject

s3:PutObjectTagging

s3:PutObjectVersionTagging

Wenn die Objektanfrage Tags enthält, sind ein spezifischer Tag-Schlüssel und ein spezifischer Tag-Wert erforderlich.

s3:x-amz-server-side-encryption-customer-algorithm

s3:PutObject

Vergleicht mit dem sse-customer-algorithm oder mit dem copy-source-sse-customer-algorithm aus dem Anfrage-Header, der in der PutObject, CopyObject, CreateMultipartUpload, UploadPart, UploadPartCopy und CompleteMultipartUpload Anfrage erweitert wurde.

Variablen in einer Richtlinie angeben

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

In diesem Beispiel ist die Variable ${aws:username} Teil des Resource-Elements:

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

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

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

${aws:SourceIp}

Verwendet den SourceIp-Schlüssel als die bereitgestellte Variable.

${aws:username}

Verwendet den Schlüssel für den Benutzernamen als bereitgestellte Variable.

${s3:prefix}

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

${s3:max-keys}

Verwendet den dienstspezifischen Schlüssel max-keys als bereitgestellte Variable.

${*}

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

${?}

Sonderzeichen. Verwendet das Zeichen als wörtliches Fragezeichen.

${$}

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

Richtlinien erstellen, die eine besondere Behandlung erfordern

Richtlinien können mitunter Berechtigungen erteilen, die sicherheitsgefährdend oder für den laufenden Betrieb problematisch sind, beispielsweise die Sperrung des Root-Benutzers des Kontos. Die StorageGRID S3 REST API Implementierung ist bei der Richtlinienvalidierung weniger restriktiv als Amazon, bei der Richtlinienauswertung jedoch genauso streng.

Richtlinienbeschreibung Richtlinientyp Amazon Verhalten StorageGRID Verhalten

Jegliche Berechtigungen für das Root-Konto für sich selbst verweigern

Bucket

Gültig und durchgesetzt, aber das Root-Benutzer-Konto behält die Berechtigung für alle S3-Bucket-Richtlinienoperationen

Dasselbe

Sich selbst alle Berechtigungen für Benutzer/Gruppe verweigern

Gruppe

Gültig und durchgesetzt

Dasselbe

Einer ausländischen Kontengruppe beliebige Berechtigungen erlauben

Bucket

Ungültiger Principal

Gültig, aber die Berechtigungen für alle S3-Bucket-Richtlinienoperationen führen zu einem 405-Fehler (Methode nicht zulässig), wenn sie durch eine Richtlinie erlaubt sind

Einem fremden Konto (Root oder Benutzer) beliebige Berechtigungen gewähren

Bucket

Gültig, aber die Berechtigungen für alle S3-Bucket-Richtlinienoperationen führen zu einem 405-Fehler (Methode nicht zulässig), wenn sie durch eine Richtlinie erlaubt sind

Dasselbe

Allen Berechtigungen für alle Aktionen gewähren

Bucket

Gültig, aber für alle S3-Bucket-Richtlinienoperationen wird für das fremde Root-Konto und die Benutzer der Fehler 405 Method Not Allowed zurückgegeben.

Dasselbe

Allen wird die Berechtigung für alle Aktionen verweigert

Bucket

Gültig und durchgesetzt, aber das Root-Benutzer-Konto behält die Berechtigung für alle S3-Bucket-Richtlinienoperationen

Dasselbe

Der Principal ist ein nicht existierender Benutzer oder eine nicht existierende Gruppe

Bucket

Ungültiger Principal

Gültig

Die Ressource ist ein nicht existierender S3-Bucket

Gruppe

Gültig

Dasselbe

Principal ist eine lokale Gruppe

Bucket

Ungültiger Principal

Gültig

Die Richtlinie gewährt einem Nicht-Inhaber-Konto (einschließlich anonymer Konten) Berechtigungen zum Ablegen von Objekten.

Bucket

Gültig. Die Objekte gehören dem Erstellerkonto, und die Bucket-Richtlinie findet keine Anwendung. Das Erstellerkonto muss die Zugriffsberechtigungen für das Objekt mithilfe von Objekt-ACLs erteilen.

Gültig. Objekte gehören dem Bucket-Eigentümerkonto. Bucket-Richtlinie gilt.

Write-once-read-many (WORM)-Schutz

Sie können Write-Once-Read-Many (WORM) Buckets erstellen, um Daten, benutzerdefinierte Objektmetadaten und S3-Objekt-Tags zu schützen. Die WORM-Buckets werden so konfiguriert, dass neue Objekte erstellt werden können und das Überschreiben oder Löschen vorhandener Inhalte verhindert wird. Eine der hier beschriebenen Methoden kann verwendet werden.

Um sicherzustellen, dass Überschreibungen immer verhindert werden, können Sie Folgendes tun:

  • Im Grid Manager unter Konfiguration > Sicherheit > Sicherheitseinstellungen > Netzwerk und Objekte das Kontrollkästchen Clientänderungen verhindern auswählen.

  • Die folgenden Regeln und S3-Richtlinien gelten:

    • Eine PutOverwriteObject DENY-Operation zur S3-Richtlinie hinzufügen.

    • Eine DeleteObject DENY-Operation zur S3-Richtlinie hinzufügen.

    • Eine PutObject ALLOW-Operation zur S3-Richtlinie hinzufügen.

Hinweis Die Einstellung DeleteObject auf DENY in einer S3-Richtlinie verhindert nicht, dass ILM Objekte löscht, wenn eine Regel wie „null Kopien nach 30 Tagen“ existiert.
Hinweis Selbst wenn all diese Regeln und Richtlinien angewendet werden, bieten sie keinen Schutz vor gleichzeitigen Schreibvorgängen (siehe Situation A). Sie schützen jedoch vor sequenziell abgeschlossenen Überschreibungen (siehe Situation B).

Situation A: Gleichzeitige Schreibvorgänge (nicht abgesichert)

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

Situation B: Sequenziell abgeschlossene Überschreibungen (geschützt)

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