Configuração de permissões para acesso ao site
Ao configurar um bucket como um site estático, se você desejar que seu site seja público, poderá conceder acesso público de leitura. Para tornar o bucket publicamente legível, é necessário desabilitar as configurações de bloqueio de acesso público do bucket e gravar uma política de bucket que conceda acesso público de leitura. Se o bucket contiver objetos que não são do proprietário do bucket, talvez também seja necessário adicionar uma lista de controle de acesso (ACL) de objeto que conceda acesso de leitura a todos.
Se você não quiser desativar as configurações de acesso público de bloqueio para seu bucket, mas ainda quiser que seu site seja público, poderá criar uma distribuição do Amazon CloudFront para servir seu site estático. Para obter mais informações, consulte Acelerar seu site com o Amazon CloudFront ou Usar uma distribuição do Amazon CloudFront para servir um site estático no Guia do desenvolvedor do Amazon Route 53.
nota
No endpoint de site, se um usuário solicitar um objeto que não existe, o Amazon S3 retornará um código de resposta HTTP 404 (Not Found)
. Se o objeto existir, mas não você não tiver permissão de leitura nele, o endpoint de site retornará o código de resposta HTTP 403 (Access Denied)
. O usuário pode usar o código de resposta para inferir se um objeto específico existe. Se você não quiser esse comportamento, não ative o suporte de site para seu bucket.
Tópicos
Etapa 1: Editar configurações de bloqueio de acesso público do S3
Se quiser configurar um bucket existente como um site estático que tenha acesso público, você deverá editar as configurações de bloqueio de acesso público desse bucket. Você também pode ter que editar suas configurações de bloqueio de acesso público no nível da conta. O Amazon S3 aplica a combinação mais restritiva das configurações de bloqueio de acesso público no nível do bucket e no nível da conta.
Por exemplo, se você permitir o acesso público a um bucket, mas bloquear todo o acesso público no nível da conta, o Amazon S3 continuará a bloquear o acesso público ao bucket. Neste cenário, você precisaria editar as configurações de bloqueio de acesso público no nível do bucket e no nível da conta. Para obter mais informações, consulte Bloquear o acesso público ao armazenamento do Amazon S3.
Por padrão, o Amazon S3 bloqueia o acesso público à sua conta e aos seus buckets. Se quiser usar um bucket para hospedar um site estático, use estas etapas para editar as configurações de bloqueio de acesso público.
Atenção
Antes de concluir estas etapas, revise Bloquear o acesso público ao armazenamento do Amazon S3 para garantir que você entenda e aceite os riscos envolvidos em permitir o acesso público. Ao desativar as configurações de bloqueio de acesso público para tornar seu bucket público, qualquer pessoa na Internet pode acessá-lo. Recomendamos que você bloqueie todo o acesso público aos buckets.
-
Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/
. -
Escolha o nome do bucket configurado como um site estático.
-
Escolha Permissions (Permissões).
-
Em Block public access (bucket settings) (Bloqueio de acesso público (configurações de bucket), escolha Edit (Editar).
-
Desmarque Block all public access (Bloquear todo acesso público) e escolha Save changes (Salvar alterações).
O Amazon S3 desativa as configurações do Bloqueio de Acesso Público para o bucket. Para criar um site público estático, talvez também seja necessário editar as configurações do Bloqueio de Acesso Público para sua conta antes de adicionar uma política de bucket. Se as configurações do Bloqueio de Acesso Público da conta estiverem ativadas no momento, você verá uma observação em Bloquear acesso público (configurações de bucket).
Etapa 2: Adicionar uma política de bucket
Para tornar os objetos no bucket publicamente legíveis, você deverá gravar uma política de bucket que conceda a todos a permissão s3:GetObject
.
Depois de editar as configurações do Bloqueio de acesso público do S3, é possível adicionar uma política de bucket para conceder acesso público de leitura ao bucket. Ao conceder um acesso público de leitura, qualquer pessoa na Internet pode acessar seu bucket.
Importante
A política a seguir é somente um exemplo e concede acesso total aos conteúdos do bucket. Antes de prosseguir com esta etapa, revise Como posso proteger os arquivos no meu bucket do Amazon S3?
-
Em Buckets, escolha o nome do seu bucket.
-
Escolha Permissions (Permissões).
-
Em Bucket Policy (Política de bucket), escolha Edit (Editar).
-
Para conceder acesso público de leitura ao site, copie a política de bucket a seguir e cole-a no Bucket policy editor (Editor de política de bucket).
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadGetObject", "Effect": "Allow", "Principal": "*", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::
Bucket-Name
/*" ] } ] } -
Atualize o
Resource
para o nome do bucket.Na política de bucket do exemplo anterior,
Bucket-Name
é um espaço reservado para o nome do bucket. Para usar essa política de bucket com seu próprio bucket, você deve atualizar esse nome para corresponder ao nome do seu bucket. -
Selecione Save changes.
Uma mensagem é exibida indicando que a política de bucket foi adicionada com sucesso.
Se você vir um erro que diz
Policy has invalid resource
, confirme se o nome do bucket na política de bucket corresponde ao nome do seu bucket. Para obter informações sobre como adicionar uma política de bucket, consulte Como adicionar uma política de bucket do S3?Se você receber uma mensagem de erro e não puder salvar a política do bucket, verifique suas configurações de acesso público para confirmar que você permite acesso público ao bucket.
Listas de controle de acesso de objetos
É possível usar uma política de bucket para conceder permissão de leitura aos seus objetos. No entanto, a política de bucket se aplica somente a objetos que sejam do proprietário do bucket. Se o seu bucket contiver objetos que não sejam do proprietário do bucket, ele deverá usar a lista de controle de acesso (ACL) do objeto para conceder permissão READ pública nesses objetos.
A Propriedade de objetos do S3 é uma configuração no nível do bucket do Amazon S3 que você pode usar para controlar a propriedade de objetos carregados no bucket e para desabilitar ou habilitar as ACLs. Por padrão, a Propriedade de Objetos está definida com a configuração Imposto pelo proprietário do bucket e todas as ACLs estão desabilitadas. Quando as ACLs são desabilitadas, o proprietário do bucket possui todos os objetos do bucket e gerencia o acesso a eles exclusivamente usando políticas de gerenciamento de acesso.
A maioria dos casos de uso modernos no Amazon S3 não exige mais o uso de ACLs. Recomendamos manter as ACLs desabilitadas, exceto em circunstâncias incomuns em que seja necessário controlar o acesso para cada objeto individualmente. Com as ACLs desabilitadas, é possível usar políticas para controlar o acesso a todos os objetos no bucket, independentemente de quem carregou os objetos para o bucket. Para ter mais informações, consulte Controlar a propriedade de objetos e desabilitar ACLs para seu bucket.
Importante
Se o bucket usar a configuração Imposto pelo proprietário do bucket para a Propriedade de Objetos do S3, será necessário usar políticas para conceder acesso ao bucket e aos objetos contidos nele. Quando a configuração Imposto pelo proprietário do bucket estiver habilitada, as solicitações para definir listas de controle de acesso (ACLs) ou atualizar ACLs falharão e retornarão o código de erro AccessControlListNotSupported
. Ainda há suporte para solicitações de leitura de ACLs.
Para tornar um objeto publicamente legível usando uma ACL, conceda a permissão READ ao grupo AllUsers
, como mostrado no elemento de concessão a seguir. Adicione esse elemento de concessão à ACL do objeto. Para obter informações sobre o gerenciamento de ACLs, consulte Visão geral da lista de controle de acesso (ACL).
<Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group"> <URI>http://acs.amazonaws.com/groups/global/AllUsers</URI> </Grantee> <Permission>READ</Permission> </Grant>