Exemplos de políticas de bucket
Use os exemplos nesta seção para criar políticas de acesso do StorageGRID para buckets.
As políticas de bucket especificam as permissões de acesso para o bucket ao qual a política está anexada. Você configura uma política de bucket usando a API PutBucketPolicy do S3 por meio de uma destas ferramentas:
-
AWS CLI usando este comando (consulte"Operações em baldes" ):
> aws s3api put-bucket-policy --bucket examplebucket --policy file://policy.json
Exemplo: permitir que todos tenham acesso somente leitura a um bucket
Neste exemplo, todos, incluindo anônimos, têm permissão para listar objetos no bucket e executar operações GetObject em todos os objetos no bucket. Todas as outras operações serão negadas. Observe que esta política pode não ser particularmente útil porque ninguém, exceto o root da conta, tem permissão para gravar no bucket.
{
"Statement": [
{
"Sid": "AllowEveryoneReadOnlyAccess",
"Effect": "Allow",
"Principal": "*",
"Action": [ "s3:GetObject", "s3:ListBucket" ],
"Resource": ["arn:aws:s3:::examplebucket","arn:aws:s3:::examplebucket/*"]
}
]
}
Exemplo: permitir que todos em uma conta tenham acesso total e todos em outra conta tenham acesso somente leitura a um bucket
Neste exemplo, todos em uma conta especificada têm permissão para acesso total a um bucket, enquanto todos em outra conta especificada têm permissão apenas para listar o bucket e executar operações GetObject em objetos no bucket começando com o shared/ prefixo de chave de objeto.
|
|
No StorageGRID, os objetos criados por uma conta não proprietária (incluindo contas anônimas) são de propriedade da conta do proprietário do bucket. A política de bucket se aplica a esses objetos. |
{
"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/*"
}
}
}
]
}
Exemplo: permitir que todos tenham acesso somente leitura a um bucket e acesso total ao grupo especificado
Neste exemplo, todos, incluindo anônimos, têm permissão para listar o bucket e executar operações GetObject em todos os objetos no bucket, enquanto apenas os usuários pertencentes ao grupo Marketing na conta especificada têm acesso total.
{
"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/*"
]
}
]
}
Exemplo: permitir que todos tenham acesso de leitura e gravação a um bucket se o cliente estiver no intervalo de IP
Neste exemplo, todos, incluindo anônimos, têm permissão para listar o bucket e executar quaisquer operações de objeto em todos os objetos no bucket, desde que as solicitações venham de um intervalo de IP especificado (54.240.143.0 a 54.240.143.255, exceto 54.240.143.188). Todas as outras operações serão negadas, e todas as solicitações fora do intervalo de IP serão negadas.
{
"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"}
}
}
]
}
Exemplo: permitir acesso total a um bucket exclusivamente por um usuário federado especificado
Neste exemplo, o usuário federado Alex tem acesso total ao examplebucket balde e seus objetos. Todos os outros usuários, incluindo root', têm todas as operações explicitamente negadas. Observe, no entanto, que root' nunca tem permissões negadas para 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/*"
]
}
]
}
Exemplo: permissão PutOverwriteObject
Neste exemplo, o Deny O efeito para PutOverwriteObject e DeleteObject garante que ninguém possa substituir ou excluir os dados do objeto, os metadados definidos pelo usuário e a marcação de objetos do 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/*"
}
]
}