Esempi di policy bucket S3 REST API di StorageGRID
Utilizza gli esempi in questa sezione per creare policy di accesso a StorageGRID per i bucket.
Le policy dei bucket specificano le autorizzazioni di accesso per il bucket a cui sono associate. Configuri una policy per un bucket utilizzando l'API S3 PutBucketPolicy tramite uno di questi strumenti:
-
AWS CLI utilizzando questo comando (consulta "Operazioni sui bucket"):
> aws s3api put-bucket-policy --bucket examplebucket --policy file://policy.json
Esempio: consenti a tutti l'accesso in sola lettura a un bucket
In questo esempio, a tutti, incluso l'anonimo, è consentito elencare gli oggetti nel bucket ed eseguire operazioni GetObject su tutti gli oggetti nel bucket. Tutte le altre operazioni saranno negate. Nota che questa policy potrebbe non essere particolarmente utile perché nessuno, tranne l'utente root dell'account, ha i permessi per scrivere nel bucket.
{
"Statement": [
{
"Sid": "AllowEveryoneReadOnlyAccess",
"Effect": "Allow",
"Principal": "*",
"Action": [ "s3:GetObject", "s3:ListBucket" ],
"Resource": ["arn:aws:s3:::examplebucket","arn:aws:s3:::examplebucket/*"]
}
]
}
Esempio: consenti a tutti in un account l'accesso completo e a tutti in un altro account l'accesso in sola lettura a un bucket
In questo esempio, a tutti gli utenti di un account specificato è consentito l'accesso completo a un bucket, mentre a tutti gli utenti di un altro account specificato è consentito solo visualizzare il contenuto del bucket ed eseguire GetObject operazioni sugli oggetti presenti nel bucket che iniziano con il shared/ prefisso della chiave dell'oggetto.
|
|
In StorageGRID, gli oggetti creati da un account non proprietario (inclusi gli account anonimi) sono di proprietà dell'account proprietario del bucket. La policy del bucket si applica a questi oggetti. |
{
"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/*"
}
}
}
]
}
Esempio: consenti a tutti l'accesso in sola lettura a un bucket e l'accesso completo a un gruppo specificato
In questo esempio, chiunque, incluso l'utente anonimo, può elencare il bucket ed eseguire operazioni GetObject su tutti gli oggetti nel bucket, mentre solo gli utenti appartenenti al gruppo Marketing nello specifico account hanno accesso completo.
{
"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/*"
]
}
]
}
Esempio: consenti a tutti l'accesso in lettura e scrittura a un bucket se il client si trova nell'intervallo IP
In questo esempio, chiunque, incluso l'anonimo, può elencare il bucket ed eseguire qualsiasi operazione sugli oggetti presenti nel bucket, a condizione che le richieste provengano da un intervallo IP specificato (54.240.143.0 a 54.240.143.255, tranne 54.240.143.188). Tutte le altre operazioni saranno negate e tutte le richieste al di fuori dell'intervallo IP saranno negate.
{
"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"}
}
}
]
}
Esempio: consenti l'accesso completo a un bucket esclusivamente a un utente federato specificato
In questo esempio, all'utente federato Alex è consentito l'accesso completo al examplebucket bucket e ai suoi oggetti. A tutti gli altri utenti, incluso ‘root', sono esplicitamente negate tutte le operazioni. Nota però che a ‘root' non vengono mai negati i permessi di Put/Get/DeleteBucketPolicy.
{
"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/*"
]
}
]
}
Esempio: permesso PutOverwriteObject
In questo esempio, l' `Deny`effetto per PutOverwriteObject e DeleteObject garantisce che nessuno possa sovrascrivere o eliminare i dati dell'oggetto, i metadati definiti dall'utente e i tag degli oggetti S3.
{
"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/*"
}
]
}