Amazon S3: Configurando políticas de acesso

No último tutorial sobre S3, falamos de como enviar muitos arquivos ou diretórios inteiros para o S3 de uma forma muito fácil. Mas apenas guardar seus arquivos no S3 não garante que eles estarão acessíveis pela sua aplicação. É preciso configurar políticas de acesso ao conteúdo do seu bucket. Definir políticas de acesso é muito importante pois são elas que definem quem pode ler, enviar e alterar o conteúdo do seu bucket.

Para quem ouve falar pela primeira vez em definição de políticas de acesso, pode achar que é algo complicado. Mas não é tão complicado assim. O AWS console facilita muito o gerenciamento das políticas de acesso com sua interface gráfica. Mesmo quem não tem familiaridade com comandos bash e programação, pode facilmente decidir quem vai acessar, enviar e apagar conteúdo de um bucket específico.

Para definir nossa política, devemos fazer o login no AWS console e acessar a aba S3.

Depois, devemos escolher o bucket que vai ter sua política definida e clicar no botão Properties no canto superior direito do console:

Na parte inferior do console, você poderá ver as informações sobre o bucket como região, nome, data de criação e na aba Permissions encontraremos a opção “Add bucket policy” ou “Edit bucket policy” se você já tiver uma política definida.

Ao clicar, o editor de políticas se abrirá. Você deve digitar a sua política e clicar em salvar.

Neste tutorial, serão mostrados 3 tipos de políticas. Vamos a elas:

Garantir acesso de leitura para todos

Neste caso, todos terão acesso de leitura para o conteúdo do seu bucket.

{
  "Version":"2008-10-17",
  "Statement":[
     {
	"Sid":"AddPerm",
        "Effect":"Allow",
	  "Principal": {
            "AWS": "*"
         },
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::bucketname/*"
      ]
    }
  ]
}

O que a política acima faz? Ela tem o efeito de permitir(Allow) a leitura do conteúdo(GetObject) do seu bucket(resource). Não esqueça de trocar bucketname pelo nome do seu bucket.

Restringir o acesso de leitura para a sua aplicação

Considero esta política bem importante pois com ela você evita hotlinking. Apenas os sites que você indicar terão acesso de leitura para o conteúdo do seu bucket.

{
  "Version":"2008-10-17",
  "Id":"http referer policy example",
  "Statement":[
    {
      "Sid":"Allow get requests referred by www.mysite.com and mysite.com",
      "Effect":"Allow",
      "Principal":"*",
      "Action":"s3:GetObject",
      "Resource":"arn:aws:s3:::bucketname/*",
      "Condition":{
        "StringLike":{
          "aws:Referer":[
            " http://www.mysite.com/*",
            " http://mysite.com/*"
          ]
        }
      }
    }
  ]
}

Aqui o acesso é permitido apenas para os sites indicados. Desta forma, a política permite(Allow) a leitura do conteúdo(GetObject) do seu bucket(resource) para os sites indicados(Referer).

Estabelecer acesso de leitura e escrita

Neste exemplo, vamos estabelecer quais sites poderão ler e alterar o conteúdo do bucket. Esta política é importante quando você sua aplicação aceita download de arquivos como fotos e filmes que serão armazenados no S3.

{
  "Version":"2008-10-17",
  "Id":"http referer policy example",
  "Statement":[
    {
      "Sid":"Allow get requests referred by www.mysite.com and mysite.com",
      "Effect":"Allow",
      "Principal":"*",
      "Action":"s3:GetObject",
      "Resource":"arn:aws:s3:::bucketname/*",
      "Condition":{
        "StringLike":{
          "aws:Referer":[
            " http://www.mysite.com/*",
            " http://mysite.com/*"
          ]
        }
      }
    },

{
      "Sid":"Allow put requests referred by www.mysite.com and mysite.com",
      "Effect":"Allow",
      "Principal":"*",
      "Action":"s3:PutObject",
      "Resource":"arn:aws:s3:::bucketname/*",
      "Condition":{
        "StringLike":{
          "aws:Referer":[
            " http://www.mysite.com/*",
            " http://mysite.com/*"
          ]
        }
      }
    }
] }

Além destas políticas, é possível permitir e negar acessos por ip. Mais exemplos podem ser encontrados na documentação do S3 na própria Amazon.

Uma novidade recente que a Amazon disponibilizou para facilitar ainda mais o gerenciamento de políticas foi o AWS Policy Generator. Com ele você pode estabelecer políticas para o S3 e também para os outros serviços da Amazon como o SNS, SQS e IAM. Para usar o AWS Policy Generator é só clicar na opção quando estiver com o Bucket Policy Editor aberto.

No blog oficial, você encontra passo-a-passo de como utilizar o AWS Policy Generator.

4 thoughts on “Amazon S3: Configurando políticas de acesso

Add yours

  1. Olá Gostaria de saber como liberar apenas um bucket para um usuário especifico.
    Exemplo:
    usuário joao pudesse ter acesso total apenas ao bucket meu-site.
    Como proceder neste caso?

  2. Olá, gostei muito do sei artigo. Como eu faço para permitir acesso apenas a uma pasta especifica dentro do bucket?

Deixe um comentário

Este site utiliza o Akismet para reduzir spam. Fica a saber como são processados os dados dos comentários.

Site no WordPress.com.

EM CIMA ↑