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

Richtlinien und Berechtigungen in StorageGRID

Beitragende netapp-aronk

Hier sind Beispielrichtlinien und Berechtigungen in StorageGRID S3.

Die Struktur einer Richtlinie

In StorageGRID sind die Gruppenrichtlinien mit den S3 Service-Richtlinien für AWS Benutzer (IAM) identisch.

Gruppenrichtlinien sind in StorageGRID erforderlich. Ein Benutzer mit S3-Zugriffsschlüsseln, aber keiner Benutzergruppe zugewiesen oder einer Gruppe ohne Richtlinie zugewiesen, die einige Berechtigungen erteilt, kann auf keine Daten zugreifen.

Bucket- und Gruppenrichtlinien verwenden die meisten Elemente gemeinsam. Richtlinien werden im json-Format erstellt und können mit dem erstellt werden "AWS-Richtliniengenerator"

Alle Richtlinien definieren den Effekt, die Aktion(en) und die Ressource(en). In Bucket-Richtlinien wird auch ein Principal definiert.

Der Effekt wird entweder sein, die Anfrage zuzulassen oder abzulehnen.

Der * Principal*

  • Gilt nur für Bucket-Richtlinien.

  • Der Hauptbenutzer ist der/die Konto(e)/Benutzer, dem/den die Berechtigungen gewährt oder verweigert werden.

  • Kann definiert werden als:

    • Ein Platzhalter „+*“

      "Principal":"*"
      "Principal":{"AWS":"*"}
    • Eine Mandanten-ID für alle Benutzer in einem Mandanten (entspricht AWS-Konto)

      "Principal": { "AWS": "27233906934684427525" }
    • Ein Benutzer (lokal oder föderiert aus dem Mandanten, der sich im Bucket befindet, oder ein anderer Mandant im Grid)

      "Principal": { "AWS": "arn:aws:iam::76233906934699427431:user/tenant1user1" }
      "Principal": { "AWS": "arn:aws:iam::27233906934684427525:federated-user/tenant2user1" }
    • Eine Gruppe (lokal oder föderiert aus dem Mandanten, der sich im Bucket befindet, oder ein anderer Mandant im Grid).

      "Principal": { "AWS": "arn:aws:iam::76233906934699427431:group/DevOps"  }
      "Principal": { "AWS": "arn:aws:iam::27233906934684427525:federated-group/Managers"  }

Die Aktion ist der Satz von S3-Operationen, die dem/den Benutzer(n) gewährt oder verweigert werden.

Hinweis Für Gruppenrichtlinien ist die zulässige Aktion s3:ListBucket erforderlich, damit Benutzer alle S3-Aktionen ausführen können.

Die Ressource ist der Eimer oder Eimer, dem die Principals die Fähigkeit zur Ausführung der Aktionen gewährt oder verweigert werden. Optional kann es eine Bedingung geben, wenn die Richtlinienaktion gültig ist.

Das Format der JSON-Richtlinie sieht wie folgt aus:

{
  "Statement": [
    {
      "Sid": "Custom name for this permission",
      "Effect": "Allow or Deny",
      "Principal": {
        "AWS": [
          "arn:aws:iam::tenant_ID::user/User_Name",
          "arn:aws:iam::tenant_ID::federated-user/User_Name",
          "arn:aws:iam::tenant_ID:group/Group_Name",
          "arn:aws:iam::tenant_ID:federated-group/Group_Name",
          "tenant_ID"
        ]
      },
      "Action": [
        "s3:ListBucket",
        "s3:Other_Action"
      ],
      "Resource": [
        "arn:aws:s3:::Example_Bucket",
        "arn:aws:s3:::Example_Bucket/*"
      ],
    }
  ]
}

Verwenden des AWS-Richtliniengenerators

Der AWS Richtlinien-Generator ist ein großartiges Werkzeug, um den json-Code mit dem richtigen Format und den Informationen zu erhalten, die Sie zu implementieren versuchen.

So generieren Sie die Berechtigungen für eine StorageGRID-Gruppenrichtlinie: * Wählen Sie die IAM-Richtlinie für den Typ der Richtlinie aus. * Wählen Sie die Schaltfläche für den gewünschten Effekt - Zulassen oder verweigern. Es empfiehlt sich, Ihre Richtlinien mit den Deny-Berechtigungen zu starten und dann die Allow-Berechtigungen * in das Dropdown-Menü Actions hinzuzufügen. Klicken Sie auf das Feld neben so vielen S3-Aktionen, die Sie in diese Berechtigung oder das Feld „All Actions“ aufnehmen möchten. * Geben Sie die Bucket-Pfade in das Feld Amazon Resource Name (ARN) ein. Fügen Sie vor dem Bucket-Namen „arn:aws:s3:::“ ein. Beispiel: „arn:aws:s3::example_bucket“

Erstellen Sie eine Gruppenrichtlinie

So generieren Sie die Berechtigungen für eine Bucket-Richtlinie: * Wählen Sie die S3-Bucket-Richtlinie für den Typ der Richtlinie aus. * Wählen Sie die Schaltfläche für den gewünschten Effekt - Zulassen oder verweigern. Es empfiehlt sich, Ihre Richtlinien mit den Berechtigungen „verweigern“ zu starten und anschließend den Typ „Berechtigungen zulassen“ * in die Benutzer- oder Gruppeninformationen für den Prinzipal einzufügen. * Klicken Sie in der Dropdown-Liste Aktionen auf das Feld neben so vielen S3-Aktionen, die Sie in diese Berechtigung oder das Feld "Alle Aktionen" aufnehmen möchten. * Geben Sie die Bucket-Pfade in das Feld Amazon Resource Name (ARN) ein. Fügen Sie vor dem Bucket-Namen „arn:aws:s3:::“ ein. Beispiel: „arn:aws:s3::example_bucket“

Generieren einer Bucket-Richtlinie

Wenn Sie beispielsweise eine Bucket-Richtlinie erstellen möchten, die allen Benutzern die Ausführung von GetObject-Operationen für alle Objekte im Bucket ermöglicht, während nur Benutzern, die der Gruppe „Marketing“ im angegebenen Konto angehören, Vollzugriff gewährt wird.

  • Wählen Sie als Richtlinientyp S3-Bucket-Richtlinie aus.

  • Wählen Sie den Zulassen-Effekt

  • Geben Sie die Informationen der Marketinggruppe ein - arn:aws:iam::95390887230002558202:Federated-Group/Marketing

  • Klicken Sie auf das Feld für „Alle Aktionen“.

  • Geben Sie die Bucket-Informationen ein - arn:aws:s3:::example_bucket,arn:aws:s3:::example_bucket/*

Generieren Sie die erste Berechtigung in der Richtlinie

  • Klicken Sie auf die Schaltfläche „Anweisung hinzufügen“

Erste Berechtigung in der eingegebenen Richtlinie

  • Wählen Sie den Zulassen-Effekt

  • Geben Sie das Sternchen +* für alle ein

  • Klicken Sie auf das Feld neben GetObject und ListBucket Actions“

Wählen Sie GetObject Wählen Sie ListBucket

  • Geben Sie die Bucket-Informationen ein - arn:aws:s3:::example_bucket,arn:aws:s3:::example_bucket/*

Generieren Sie die zweite Berechtigung in der Richtlinie

  • Klicken Sie auf die Schaltfläche „Anweisung hinzufügen“

Zweite Erlaubnis in der Richtlinie

  • Klicken Sie auf die Schaltfläche „Richtlinie generieren“. Daraufhin wird ein Popup-Fenster mit der erstellten Richtlinie angezeigt.

Die endgültige Ausgabe

  • Kopieren Sie den vollständigen json-Text, der wie folgt aussehen sollte:

{
  "Id": "Policy1744399292233",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1744399152830",
      "Action": "s3:*",
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::example_bucket",
        "arn:aws:s3:::example_bucket/*"
      ],
      "Principal": {
        "AWS": [
          "arn:aws:iam::95390887230002558202:federated-group/Marketing"
        ]
      }
    },
    {
      "Sid": "Stmt1744399280838",
      "Action": [
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::example_bucket",
        "arn:aws:s3:::example_bucket/*"
      ],
      "Principal": "*"
    }
  ]
}

Dieser json kann wie sie ist verwendet werden, oder Sie können die ID- und Versionszeilen über der Zeile "Anweisung" entfernen und Sie können die Sid für jede Berechtigung mit einem aussagekräftigeren Titel für jede Berechtigung anpassen oder diese können auch entfernt werden.

Beispiel:

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

Gruppenrichtlinien (IAM)

Bucket-Zugriff im Home Directory-Stil

Diese Gruppenrichtlinie erlaubt Benutzern nur den Zugriff auf Objekte im Bucket mit dem Namen „username“.

{
"Statement": [
    {
      "Sid": "AllowListBucketOfASpecificUserPrefix",
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::home",
      "Condition": {
        "StringLike": {
          "s3:prefix": "${aws:username}/*"
        }
      }
    },
    {
      "Sid": "AllowUserSpecificActionsOnlyInTheSpecificUserPrefix",
      "Effect": "Allow",
      "Action": "s3:*Object",
      "Resource": "arn:aws:s3:::home/?/?/${aws:username}/*"
    }

  ]
}

Erstellung von Bucket-Objektsperrung verweigern

Diese Gruppenrichtlinie schränkt Benutzer am Erstellen eines Buckets ein, für den die Objektsperre für den Bucket aktiviert ist.

Hinweis

Diese Richtlinie wird in der StorageGRID-Benutzeroberfläche nicht durchgesetzt, sie wird nur durch die S3-API durchgesetzt.

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

Aufbewahrungslimit für Objektsperre

Diese Bucket-Richtlinie beschränkt die Aufbewahrungsdauer der Objektsperre auf maximal 10 Tage

{
 "Version":"2012-10-17",
 "Id":"CustSetRetentionLimits",
 "Statement": [
   {
    "Sid":"CustSetRetentionPeriod",
    "Effect":"Deny",
    "Principal":"*",
    "Action": [
      "s3:PutObjectRetention"
    ],
    "Resource":"arn:aws:s3:::testlock-01/*",
    "Condition": {
      "NumericGreaterThan": {
        "s3:object-lock-remaining-retention-days":"10"
      }
    }
   }
  ]
}

Benutzer daran hindern, Objekte mit VersionID zu löschen

Diese Gruppenrichtlinie schränkt Benutzer davon ab, versionierte Objekte nach VersionID zu löschen

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

Beschränken Sie eine Gruppe auf ein einzelnes Unterverzeichnis (Präfix) mit Lesezugriff

Diese Richtlinie ermöglicht Mitgliedern der Gruppe schreibgeschützten Zugriff auf ein Unterverzeichnis (Präfix) innerhalb eines Buckets. Der Bucket-Name lautet „Study“ und das Unterverzeichnis lautet „study01“.

{
    "Statement": [
        {
            "Sid": "AllowUserToSeeBucketListInTheConsole",
            "Action": [
                "s3:ListAllMyBuckets"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::*"
            ]
        },
        {
            "Sid": "AllowRootAndstudyListingOfBucket",
            "Action": [
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3::: study"
            ],
            "Condition": {
                "StringEquals": {
                    "s3:prefix": [
                        "",
                        "study01/"
                    ],
                    "s3:delimiter": [
                        "/"
                    ]
                }
            }
        },
        {
            "Sid": "AllowListingOfstudy01",
            "Action": [
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::study"
            ],
            "Condition": {
                "StringLike": {
                    "s3:prefix": [
                        "study01/*"
                    ]
                }
            }
        },
        {
            "Sid": "AllowAllS3ActionsInstudy01Folder",
            "Effect": "Allow",
            "Action": [
                "s3:Getobject"
            ],
            "Resource": [
                "arn:aws:s3:::study/study01/*"
            ]
        }
    ]
}

Bucket-Richtlinien

Bucket auf einzelnen Benutzer mit schreibgeschütztem Zugriff beschränken

Diese Richtlinie erlaubt einem einzelnen Benutzer, schreibgeschützten Zugriff auf einen Bucket zu haben und explizit allen anderen Benutzern den zugriff zu verweigert. Die Gruppierung der Ablehenserklärungen an der Spitze der Richtlinie ist eine gute Methode für eine schnellere Bewertung.

{
    "Statement": [
        {
            "Sid": "Deny non user1",
            "Effect": "Deny",
            "NotPrincipal": {
                "AWS": "arn:aws:iam::34921514133002833665:user/user1"
            },
            "Action": [
                "s3:*"
            ],
            "Resource": [
                "arn:aws:s3:::bucket1",
                "arn:aws:s3:::bucket1/*"
            ]
        },
        {
            "Sid": "Allow user1 read access to bucket bucket1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::34921514133002833665:user/user1"
            },
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::bucket1",
                "arn:aws:s3:::bucket1/*"
            ]
        }
    ]
}

Beschränken Sie einen Bucket auf einige Benutzer mit schreibgeschütztem Zugriff.

{
    "Statement": [
      {
        "Sid": "Deny all S3 actions to employees 002-005",
        "Effect": "deny",
        "Principal": {
          "AWS": [
            "arn:aws:iam::46521514133002703882:user/employee-002",
            "arn:aws:iam::46521514133002703882:user/employee-003",
            "arn:aws:iam::46521514133002703882:user/employee-004",
            "arn:aws:iam::46521514133002703882:user/employee-005"
          ]
        },
        "Action": "*",
        "Resource": [
          "arn:aws:s3:::databucket1",
          "arn:aws:s3:::databucket1/*"
        ]
      },
      {
        "Sid": "Allow read-only access for employees 002-005",
        "Effect": "Allow",
        "Principal": {
          "AWS": [
            "arn:aws:iam::46521514133002703882:user/employee-002",
            "arn:aws:iam::46521514133002703882:user/employee-003",
            "arn:aws:iam::46521514133002703882:user/employee-004",
            "arn:aws:iam::46521514133002703882:user/employee-005"
          ]
        },
        "Action": [
          "s3:GetObject",
          "s3:GetObjectTagging",
          "s3:GetObjectVersion"
        ],
        "Resource": [
          "arn:aws:s3:::databucket1",
          "arn:aws:s3:::databucket1/*"
        ]
      }
    ]
}

Beschränken Sie das Löschen versionierter Objekte in einem Bucket

Diese Bucket-Richtlinie beschränkt das Löschen versionierter Objekte durch einen Benutzer (identifiziert durch Benutzer-ID „56622399308951294926“) nach VersionID

{
  "Statement": [
    {
      "Action": [
        "s3:DeleteObjectVersion"
      ],
      "Effect": "Deny",
      "Resource": "arn:aws:s3:::verdeny/*",
      "Principal": {
        "AWS": [
          "56622399308951294926"
        ]
      }
    },
    {
      "Action": "s3:*",
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::verdeny/*",
      "Principal": {
        "AWS": [
          "56622399308951294926"
        ]
      }
    }
  ]
}