Zum Inhalt springen

Bucket Richtlinien

  • Alle Objekte innerhalb des Buckets “my-super-bucket” öffentlich lesbar machen
{
"Statement":[
{
"Sid": "Example-policy1",
"Effect":"Allow",
"Principal":"*",
"Action":"s3:GetObject",
"Resource":"urn:sgws:s3:::my-super-bucket/*"
}
]
}
  • Die Datei “picture.jpg” innerhalb des Buckets “my-super-bucket” öffentlich lesbar machen
{
"Statement":[
{
"Sid": "Example-policy2",
"Effect":"Allow",
"Principal":"*",
"Action":"s3:GetObject",
"Resource":"urn:sgws:s3:::my-super-bucket/picture.jpg"
}
]
}
  • Vollzugriff auf einen Bucket auf eine bestimmte Gruppe von Zugangsdaten innerhalb desselben Projekts beschränken
{
"Statement": [
{
"Sid": "allow-specific-credential-group",
"Effect": "Deny",
"NotPrincipal": {
"AWS": "urn:sgws:identity::12345678901234567890:group/credentials-group-1234"
},
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::my-super-bucket",
"arn:aws:s3:::my-super-bucket/*"
]
}
]
}
  • Lesezugriff für Objekte innerhalb des Buckets “my-super-bucket” für alle Gruppen von Zugangsdaten außer “credential-group-1234”, die weiterhin Vollzugriff hat.
{
"Statement": [
{
"Sid": "allow-specific-credential-group",
"Effect": "Deny",
"NotPrincipal": {
"AWS": "urn:sgws:identity::12345678901234567890:group/credentials-group-1234"
},
"Action": [
"s3:Put*",
"s3:Delete*",
"s3:GetBucket*",
"s3:GetEncryption*",
"s3:List*"
],
"Resource": [
"arn:aws:s3:::my-super-bucket",
"arn:aws:s3:::my-super-bucket/*"
]
}
]
}
  • Öffentlichen Lesezugriff auf Objekte erlauben und Schreib-/Löschzugriff nur für eine bestimmte Gruppe von Zugangsdaten für den Bucket “my-super-bucket” festlegen
{
"Statement": [
{
"Sid": "public-read",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::my-super-bucket",
"arn:aws:s3:::my-super-bucket/*"
]
},
{
"Sid": "allow-specific-credential-group",
"Effect": "Deny",
"NotPrincipal": {
"AWS": "urn:sgws:identity::12345678901234567890:group/credentials-group-1234"
},
"Action": [
"s3:Put*",
"s3:Delete*",
"s3:GetBucket*",
"s3:GetEncryption*",
"s3:List*"
],
"Resource": [
"arn:aws:s3:::my-super-bucket",
"arn:aws:s3:::my-super-bucket/*"
]
}
]
}
  • Zugriff auf einen Bucket auf eine Quell-IP beschränken und außerdem den Vollzugriff auf “credential-group-1234” limitieren. Alle anderen Gruppen von Zugangsdaten können für diesen Bucket nur Listen- und Abrufvorgänge durchführen
{
"Statement": [
{
"Sid": "Restrict-IP-Range",
"Effect": "Deny",
"Principal": "*",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::my-super-bucket/*",
"arn:aws:s3:::my-super-bucket"
],
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"192.168.1.3",
"192.168.1.4"
]
}
}
},
{
"Sid": "Restrict-Group2",
"Effect": "Deny",
"NotPrincipal": {
"AWS": "urn:sgws:identity::12345678901234567890:group/credentials-group-1234"
},
"Action": [
"s3:Create*",
"s3:Put*",
"s3:Delete*",
"s3:Get*"
],
"Resource": [
"arn:aws:s3:::my-super-bucket/*",
"arn:aws:s3:::my-super-bucket"
]
}
]
}
  • Beispielrichtlinie mit mehreren Anweisungen und Bedingungen
{
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Principal": {
"AWS": "urn:sgws:identity::12345678901234567890:group/credentials-group-1234"
},
"Resource": "urn:sgws:s3:::my-super-bucket/*"
},
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Principal": {
"AWS": "urn:sgws:identity::12345678901234567890:group/credentials-group-4567"
},
"Resource": "urn:sgws:s3:::my-super-bucket/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"192.168.1.10",
"192.168.1.20"
]
},
"NotIpAddress": {
"aws:SourceIp": "0.0.0.0"
}
}
}
]
}

Speichern Sie Ihre Richtlinie in einer JSON-Datei und wenden Sie diese wie folgt an:

Terminal-Fenster
s3cmd setpolicy FILE s3://BUCKET
#e.g. s3cmd setpolicy policy.json s3://my-super-bucket

Mit s3cmd gibt es keinen dedizierten Befehl, um nur die Bucket-Richtlinie auszugeben.

Sie können jedoch den Befehl “info” verwenden, um die Richtlinie und zusätzliche Informationen zum Bucket oder Objekt auszugeben.

Terminal-Fenster
s3cmd infos 3://BUCKET[/OBJECT]
#e.g. s3cmd info s3://my-super-bucket

Sie können eine Richtlinie von einem Bucket wie folgt entfernen:

Terminal-Fenster
s3cmd dellifecycle s3://BUCKET
#e.g. s3cmd dellifecycle s3://my-super-bucket