StorageGRID S3 REST API-Bucket-Richtlinienbeispiele
In diesem Abschnitt finden Sie Beispiele, mit denen StorageGRID Zugriffsrichtlinien für Buckets erstellt werden können.
Bucket-Richtlinien legen die Zugriffsberechtigungen für den Bucket fest, dem die Richtlinie zugeordnet ist. Eine Bucket-Richtlinie wird mithilfe der S3 PutBucketPolicy API über eines der folgenden Tools konfiguriert:
-
AWS CLI mit diesem Befehl (siehe "Operationen an Buckets"):
> aws s3api put-bucket-policy --bucket examplebucket --policy file://policy.json
Beispiel: Allen nur Lesezugriff auf einen Bucket gewähren
In diesem Beispiel darf jeder, einschließlich anonymer Benutzer, Objekte im Bucket auflisten und GetObject-Operationen für alle Objekte im Bucket durchführen. Alle anderen Operationen werden verweigert. Es ist zu beachten, dass diese Richtlinie möglicherweise nicht besonders sinnvoll ist, da außer dem Root-Benutzer des Kontos niemand Berechtigungen zum Schreiben in den Bucket hat.
{
"Statement": [
{
"Sid": "AllowEveryoneReadOnlyAccess",
"Effect": "Allow",
"Principal": "*",
"Action": [ "s3:GetObject", "s3:ListBucket" ],
"Resource": ["arn:aws:s3:::examplebucket","arn:aws:s3:::examplebucket/*"]
}
]
}
Beispiel: Allen Benutzern eines Kontos Vollzugriff und allen Benutzern eines anderen Kontos nur Lesezugriff auf einen Bucket.
In diesem Beispiel erhält jeder in einem bestimmten Konto vollständigen Zugriff auf einen Bucket, während jeder in einem anderen bestimmten Konto nur berechtigt ist, den Bucket aufzulisten und GetObject-Operationen an Objekten im Bucket durchzuführen, deren Objektschlüssel mit dem shared/ Objektschlüsselpräfix beginnt.
|
|
In StorageGRID gehören Objekte, die von einem Nicht-Eigentümer-Konto (einschließlich anonymer Konten) erstellt wurden, dem Bucket-Eigentümer-Konto. Die Bucket-Richtlinie gilt für diese Objekte. |
{
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "95390887230002558202"
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::examplebucket",
"arn:aws:s3:::examplebucket/*"
]
},
{
"Effect": "Allow",
"Principal": {
"AWS": "31181711887329436680"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::examplebucket/shared/*"
},
{
"Effect": "Allow",
"Principal": {
"AWS": "31181711887329436680"
},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::examplebucket",
"Condition": {
"StringLike": {
"s3:prefix": "shared/*"
}
}
}
]
}
Beispiel: Allen wird Lesezugriff auf einen Bucket gewährt, während eine bestimmte Gruppe Vollzugriff erhält.
In diesem Beispiel ist es jedem, auch anonymen Benutzern, erlaubt, den Bucket aufzulisten und GetObject-Operationen an allen Objekten im Bucket durchzuführen, während nur Benutzern, die der Gruppe Marketing im angegebenen Konto angehören, voller Zugriff gewährt wird.
{
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::95390887230002558202:federated-group/Marketing"
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::examplebucket",
"arn:aws:s3:::examplebucket/*"
]
},
{
"Effect": "Allow",
"Principal": "*",
"Action": ["s3:ListBucket","s3:GetObject"],
"Resource": [
"arn:aws:s3:::examplebucket",
"arn:aws:s3:::examplebucket/*"
]
}
]
}
Beispiel: Allen Clients im IP-Bereich Lese- und Schreibzugriff auf einen Bucket erlauben
In diesem Beispiel darf jeder, einschließlich anonymer Benutzer, den Bucket auflisten und beliebige Objektoperationen an allen Objekten im Bucket durchführen, sofern die Anfragen aus einem bestimmten IP-Bereich (54.240.143.0 bis 54.240.143.255, außer 54.240.143.188) stammen. Alle anderen Operationen werden abgelehnt, und alle Anfragen außerhalb dieses IP-Bereichs werden abgelehnt.
{
"Statement": [
{
"Sid": "AllowEveryoneReadWriteAccessIfInSourceIpRange",
"Effect": "Allow",
"Principal": "*",
"Action": [ "s3:*Object", "s3:ListBucket" ],
"Resource": ["arn:aws:s3:::examplebucket","arn:aws:s3:::examplebucket/*"],
"Condition": {
"IpAddress": {"aws:SourceIp": "54.240.143.0/24"},
"NotIpAddress": {"aws:SourceIp": "54.240.143.188"}
}
}
]
}
Beispiel: Vollzugriff auf einen Bucket ausschließlich einem bestimmten Verbundbenutzer erlauben
In diesem Beispiel hat der Verbundbenutzer Alex vollen Zugriff auf den examplebucket Bucket und seine Objekte. Allen anderen Benutzern, einschließlich ‘root', werden alle Operationen explizit verweigert. Es ist jedoch zu beachten, dass ‘root' niemals die Berechtigungen für Put/Get/DeleteBucketPolicy entzogen werden.
{
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::95390887230002558202:federated-user/Alex"
},
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::examplebucket",
"arn:aws:s3:::examplebucket/*"
]
},
{
"Effect": "Deny",
"NotPrincipal": {
"AWS": "arn:aws:iam::95390887230002558202:federated-user/Alex"
},
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::examplebucket",
"arn:aws:s3:::examplebucket/*"
]
}
]
}
Beispiel: PutOverwriteObject-Berechtigung
In diesem Beispiel stellt der Deny Effect für PutOverwriteObject und DeleteObject sicher, dass niemand die Daten des Objekts, die benutzerdefinierten Metadaten und die S3-Objekt-Tags überschreiben oder löschen kann.
{
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": [
"s3:PutOverwriteObject",
"s3:DeleteObject",
"s3:DeleteObjectVersion"
],
"Resource": "arn:aws:s3:::wormbucket/*"
},
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::95390887230002558202:federated-group/SomeGroup"
},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::wormbucket"
},
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::95390887230002558202:federated-group/SomeGroup"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::wormbucket/*"
}
]
}