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

Top comments (0)