Verwendung von Bucket- und Gruppenzugriffsrichtlinien
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 API oder der Tenant Manager- oder Tenant Management API 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.
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-Policy-Anweisung, die den Effekt „allow“ verwendet, um den Principals, der Admin-Gruppe und der Finanzgruppe federated-group/finance
Berechtigungen zur Ausführung der Aktion s3:ListBucket
für den Bucket namens und die Aktion s3:GetObject
für alle Objekte innerhalb dieses Buckets mybucket
zu geben federated-group/admin
.
{ "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 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 den Header in der Anforderung „PutBucket Policy“ festlegen Consistency-Control
oder die Konsistenzanforderung „PUT Bucket“ verwenden. Wenn eine Bucket-Richtlinie konsistent wird, können die Änderungen durch das Caching von Richtlinien zusätzliche 8 Sekunden in Anspruch nehmen.
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 oder alternativ
NotResource
zum Ausschluss gekennzeichnetResource
. -
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 die Organisation und der Benutzername
Alex
wird gelöscht. Wenn ein neuer Alex der Organisation Beitritt und demselben Benutzernamen zugewiesen wirdAlex
, erbt der neue Benutzer möglicherweise unbeabsichtigt die Berechtigungen, die dem ursprünglichen Benutzer gewährt wurden. -
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.
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. |
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 |
|
Ja, für DIE GET Storage-Nutzung. Hinweis: Nur in Gruppenrichtlinien verwenden. |
s3:ListBucket |
|
|
s3:ListBucketMultipartUploads |
|
|
s3:ListBucketVersions |
Get Bucket-Versionen |
|
s3:PutBucketCompliance |
PUT Bucket-Compliance (veraltet) |
Ja. |
s3:PutBucketConsistency |
PUT Bucket-Konsistenz |
Ja. |
s3:PutBucketCORS |
|
|
s3:PutVerschlüsselungKonfiguration |
|
|
s3:PutBucketLastAccessTime |
PUT Bucket-Zeit für den letzten Zugriff |
Ja. |
s3:PutBucketMetadataBenachrichtigung |
PUT Bucket-Metadaten-Benachrichtigungskonfiguration |
Ja. |
s3:PutBucketNotification |
PutBucketNotificationKonfiguration |
|
s3:PutBucketObjectLockConfiguration |
|
|
s3:PutBucketPolicy |
PutBucketPolicy |
|
s3:PutBucketTagging |
|
|
s3:PutBucketVersionierung |
PutBucketVersioning |
|
s3:PutLifecycleKonfiguration |
|
|
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 |
|
|
s3:BypassGovernanceAufbewahrung |
|
|
s3:DeleteObject |
|
|
s3:DeleteObjectTagging |
DeleteObjectTagging |
|
s3:DeleteObjectVersionTagging |
DeleteObjectTagging (eine spezifische Version des Objekts) |
|
s3:DeleteObjectVersion |
DeleteObject (eine bestimmte Version des Objekts) |
|
s3:GetObject |
|
|
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 |
|
|
s3:PuttObjectLegalOld |
PutObjectLegalHold |
|
s3:PutObjectRetention |
PutObjectRetention |
|
s3:PuttObjectTagging |
PutObjectTagging |
|
s3:PuttObjectVersionTagging |
PutObjectTagging (eine spezifische Version des Objekts) |
|
s3:PutOverwrite Object |
|
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.
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 enthalten. |
StringNotLike |
Vergleicht einen Schlüssel mit einem Zeichenfolgenwert, der auf negatives Matching basiert (Groß-/Kleinschreibung wird beachtet). Kann * und ? Platzhalterzeichen enthalten. |
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. Jede |
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 das im Anforderungskopf angegebene oder aus dem Standardaufbewahrungszeitraum berechnete Aufbewahrungsdatum
|
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 im Element und in Stringvergleiche im Condition
Element verwenden Resource
.
In diesem Beispiel ist die Variable ${aws:username}
Teil des Elements Ressource:
"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}/*" ... }, ...
Variabel | Beschreibung |
---|---|
|
Verwendet den SourceIp-Schlüssel als bereitgestellte Variable. |
|
Verwendet den Benutzernamen-Schlüssel als bereitgestellte Variable. |
|
Verwendet den Service-spezifischen Präfixschlüssel als bereitgestellte Variable. |
|
Verwendet die Service-spezifische max-keys als die angegebene Variable. |
|
Sonderzeichen. Verwendet das Zeichen als Literal * -Zeichen. |
|
Sonderzeichen. Verwendet das Zeichen 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.
-
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. |
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)