DEV Community

Rodrigo Fernandes
Rodrigo Fernandes

Posted on

AWS S3 - Bucket Policies

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:

Image description

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 Policyestá em vigor.
  • Você pode usar chaves de toda a AWS e chaves específicas do Amazon S3 para especificar Conditionsem uma Policyde acesso do Amazon S3.
  • Ex:

Image description


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": "*"
    }
  ]
}
Enter fullscreen mode Exit fullscreen mode

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": "*"
    }
  ]
}
Enter fullscreen mode Exit fullscreen mode

Restringir o acesso a um indicador HTTP específico

Documentação oficial

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/*"]}
      }
    }
  ]
}
Enter fullscreen mode Exit fullscreen mode

Referências

AWS Q Developer image

Your AI Code Assistant

Ask anything about your entire project, code and get answers and even architecture diagrams. Built to handle large projects, Amazon Q Developer works alongside you from idea to production code.

Start free in your IDE

Top comments (0)

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay