Rodrigo Fernandes
Posted on May 19, 2023
Anotações sobre o AWS S3 Bucket Policies para ajudar na preparação das certificações AWS.
Até o momento as anotações são para as certificações abaixo:
Anotações gerais
- Suporta bucket policies maior que 20 kb
- Deny explicito SEMPRE substitui um Allow
- Aplicado a nível de Bucket
- AWS Policy Generator
- Liberar acesso a Internet, IP, VPC
- Sempre HTTPS
- x-amz-region - Não é uma
condition
valida
Elementos básicos de uma Policy
Resource:
- Ex:
"Resource":["arn:aws:s3:::demo-bucket/*"]
- Buckets, objetos, pontos de acesso e trabalhos são os recursos do Amazon S3 para os quais você pode permitir ou negar permissões.
- Em uma Policy, você usa o ARN para identificar o recurso.
Actions:
- Ex:
"Action":["s3:GetObject"]
- Para cada recurso, o Amazon S3 oferece suporte a um conjunto de operações.
- Você identifica as operações de recursos que permitirão (ou negarão) usando palavras-chave de ação.
- Por exemplo, a permissão s3:ListBucket autoriza o usuário a empregar a operação GET Bucket (List Objects) do Amazon S3.
Effect:
- Ex:
"Effect":"Allow"
- Qual será o efeito quando o usuário solicitar a ação específica - pode ser permitir ou negar.
- Se você não conceder (permitir) explicitamente acesso a um recurso, o acesso estará implicitamente negado.
- Você também pode negar acesso explicitamente a um recurso.
- Você poderia fazer isso para garantir que um usuário não possa acessar o recurso, mesmo se uma Policy diferente conceder acesso.
Principal:
- Ex:
"Principal": "*"
- A conta ou usuário que tem permissão de acesso a ações e recursos na instrução.
- Em uma Policy de bucket, o principal é o usuário, a conta, o serviço ou outra entidade que receba essa permissão.
Condition:
- Condições para quando uma
Policy
está em vigor. - Você pode usar chaves de toda a AWS e chaves específicas do Amazon S3 para especificar
Conditions
em umaPolicy
de acesso do Amazon S3. - Ex:
Bucket Policy para liberar somente HTTPS
- "aws:SecureTransport": "true"
{
"Id": "ExamplePolicy",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowSSLRequestsOnly",
"Action": "s3:*",
"Effect": "Deny",
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET",
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
],
** "Condition": {
"Bool": {
"aws:SecureTransport": "true"
}**
},
"Principal": "*"
}
]
}
Exemplo de bucket policy
{
"Id": "ExamplePolicy",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowSSLRequests",
"Action": "s3:GetObject",
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::mykplabs-policy/*"
],
"Condition": {
"Bool": {
"aws:SecureTransport": "true"
}
},
"Principal": "*"
}
]
}
Restringir o acesso a um indicador HTTP específico
Um site com nome de domínio (www.example.com ou example.com) com links para fotos e vídeos armazenados no bucket do Amazon S3, DOC-EXAMPLE-BUCKET. Por padrão, todos os recursos do Amazon S3 são privados e, portanto, somente a Conta da AWS que criou os recursos pode acessá-lo
Para permitir acesso de leitura a esses objetos em seu site, você pode adicionar uma política de bucket que conceda a permissão s3:GetObject com uma condição, usando a chave aws:Referer
- use
aws:Referer
Exemplo
{
"Version":"2012-10-17",
"Id":"HTTP referer policy example",
"Statement":[
{
"Sid":"Allow GET requests originating from www.example.com and example.com.",
"Effect":"Allow",
"Principal":"*",
"Action":["s3:GetObject","s3:GetObjectVersion"],
"Resource":"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
"Condition":{
"StringLike":{"aws:Referer":["http://www.example.com/*","http://example.com/*"]}
}
}
]
}
Referências
Posted on May 19, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.