Visão geral da lista de controle de acesso (ACL) - Amazon Simple Storage Service

Visão geral da lista de controle de acesso (ACL)

As listas de controle de acesso (ACLs) do Amazon S3 permitem o gerenciamento do acesso aos buckets e objetos. Cada bucket e objeto tem uma ACL anexada como um sub-recurso. Uma ACL define a quais grupos ou Contas da AWS é concedido acesso, bem como o tipo de acesso. Quando um recurso é solicitado, o Amazon S3 consulta a ACL correspondente para verificar se o solicitante tem as permissões de acesso necessárias.

Quando você cria um bucket ou um objeto, o Amazon S3 cria uma ACL padrão que concede ao proprietário do recurso controle total sobre o recurso. Isso é exibido no seguinte exemplo de ACL de bucket (a ACL de objeto padrão tem a mesma estrutura):

<?xml version="1.0" encoding="UTF-8"?> <AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Owner> <ID>*** Owner-Canonical-User-ID ***</ID> <DisplayName>owner-display-name</DisplayName> </Owner> <AccessControlList> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Canonical User"> <ID>*** Owner-Canonical-User-ID ***</ID> <DisplayName>display-name</DisplayName> </Grantee> <Permission>FULL_CONTROL</Permission> </Grant> </AccessControlList> </AccessControlPolicy>

A ACL de exemplo inclui um elemento Owner que identifica o proprietário pelo ID de usuário canônico da Conta da AWS . Para obter instruções sobre como localizar seu ID canônico do usuário, consulte Encontrar um ID de usuário canônico da Conta da AWS . O elemento Grant identifica o favorecido (uma Conta da AWS ou um grupo predefinido) e a permissão concedida. Esta ACL padrão tem um elemento Grant para o proprietário. Conceda permissões adicionando elementos Grant, com cada concessão identificando o favorecido e a permissão.

nota

Uma ACL pode ter até 100 concessões.

Quem é o favorecido?

O favorecido pode ser uma Conta da AWS ou um dos grupos predefinidos do Amazon S3. Você concede permissão a uma Conta da AWS usando o endereço de e-mail ou o ID de usuário canônico. No entanto, se você fornecer um endereço de e-mail na solicitação de concessão, o Amazon S3 encontrará o ID de usuário canônico para essa conta e o adicionará à ACL. As ACLs resultantes sempre conterão o ID de usuário canônico para a Conta da AWS , e não o endereço de e-mail da Conta da AWS .

Ao conceder direitos de acesso, você especifica cada favorecido como um par de tipo=valor, em que o tipo é um dos seguintes:

  • id: se o valor especificado é o ID de usuário canônico de uma Conta da AWS

  • uri — se as permissões estiverem sendo concedidas a um grupo predefinido

  • emailAddress: se o valor especificado é o endereço de e-mail de uma Conta da AWS

Importante

O uso de endereços de e-mail para especificar um favorecido tem suporte somente nas seguintes regiões da AWS:

  • Leste dos EUA (Norte da Virgínia)

  • US West (N. California)

  • Oeste dos EUA (Oregon)

  • Ásia-Pacífico (Cingapura)

  • Asia Pacific (Sydney)

  • Ásia-Pacífico (Tóquio)

  • Europa (Irlanda)

  • América do Sul (São Paulo)

Para obter uma lista de todas as regiões e endpoints em que o Amazon S3 tem suporte, consulte Regions and Endpoints (Regiões e endpoints) na Amazon Web Services General Reference (Referência geral da Amazon Web Services).

exemplo Exemplo: endereço de e-mail

Por exemplo, o cabeçalho x-amz-grant-read a seguir concede às Contas da AWS identificadas por endereços de e-mail permissões para ler dados de objetos e seus metadados:

x-amz-grant-read: emailAddress="xyz@amazon.com", emailAddress="abc@amazon.com"
Atenção

Ao conceder aos recursos acesso a outras Contas da AWS , esteja ciente de que as Contas da AWS podem delegar as permissões delas para usuários das suas próprias contas. Isso é conhecido como acesso entre contas. Para obter informações sobre como usar o acesso entre contas, consulte Criar uma função para delegar permissões a um usuário do IAM no Manual do usuário do IAM.

Encontrar um ID de usuário canônico da Conta da AWS

O ID de usuário canônico está associado à Conta da AWS . Este ID é uma longa string de caracteres, como 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be. Para obter informações sobre como encontrar o ID de usuário canônico da sua conta, consulte Como encontrar o ID de usuário canônico da Conta da AWS .

Você também pode pesquisar o ID de usuário canônico de uma Conta da AWS lendo a ACL de um bucket ou objeto para o qual a Conta da AWS tem permissões de acesso. Quando uma Conta da AWS individual recebe permissões por meio de uma solicitação de concessão, um registro de concessão é adicionado à ACL com o ID de usuário canônico da conta.

nota

Se você tornar seu bucket público (não recomendado) qualquer usuário não autenticado pode carregar objetos para o bucket. Esses usuários anônimos não têm uma Conta da AWS . Quando um usuário anônimo carrega um objeto em seu bucket, Amazon S3 adiciona um ID de usuário canônico especial (65a011a29cdf8ec533ec3d1ccaae921c) como o dono do objeto no ACL. Para obter mais informações, consulte Propriedade de bucket e objeto do Amazon S3.

Grupos predefinidos do Amazon S3

O Amazon S3 tem um conjunto de grupos predefinidos. Ao conceder acesso de conta a um grupo, especifique um dos URIs em vez do ID de usuário canônico. Fornecemos os seguintes grupos predefinidos:

  • Grupo Usuários autenticados: representado por http://acs.amazonaws.com/groups/global/AuthenticatedUsers.

    Este grupo representa todas as Contas da AWS . A permissão de acesso a esse grupo permite que qualquer Conta da AWS acesse o recurso. No entanto, todas as solicitações devem estar assinadas (autenticadas).

    Atenção

    Quando você concede acesso ao grupo Authenticated Users, qualquer usuário autenticado da AWS em todo o mundo pode acessar seu recurso.

  • Grupo Todos os usuários: representado por http://acs.amazonaws.com/groups/global/AllUsers.

    A permissão de acesso a esse grupo permite que qualquer um acesse o recurso. As solicitações podem estar assinadas (autenticadas) ou não (anônimas). As solicitações não assinadas omitem o cabeçalho Autenticação na solicitação.

    Atenção

    Recomendamos fortemente que você nunca conceda ao grupo All Users permissões WRITE, WRITE_ACP ou FULL_CONTROL. Por exemplo, embora WRITE as permissões não permitam que não proprietários substituam ou excluam objetos existentes, as permissões WRITE ainda permitem que qualquer pessoa armazene objetos em seu bucket, pelo qual você é cobrado. Para obter mais informações sobre essas permissões, consulte a seguinte seção Quais permissões posso conceder?.

  • Grupo Entrega de logs: representado por http://acs.amazonaws.com/groups/s3/LogDelivery.

    A permissão WRITE em um bucket permite que esse grupo grave logs de acesso ao servidor (consulte Registrar em log as solicitações com registro em log de acesso ao servidor) no bucket.

nota

Ao usar ACLs, um favorecido pode ser uma Conta da AWS ou um dos grupos predefinidos do Amazon S3. No entanto, o favorecido não pode ser um usuário do IAM. Para obter mais informações sobre os usuários e as permissões da AWS no IAM, vá para Uso do AWS Identity and Access Management.

Quais permissões posso conceder?

A tabela a seguir lista o conjunto de permissões para as quais o Amazon S3 oferece suporte em uma ACL. O conjunto de permissões da ACL é o mesmo para a ACL de objetos e para a ACL de bucket. No entanto, dependendo do contexto (ACL de buckets ou ACL de objetos), essas permissões da ACL concedem permissão para operações de bucket ou objeto específicas. A tabela lista as permissões e descreve seus significados no contexto de objetos e buckets.

Para obter mais informações sobre permissões de ACL no console do Amazon S3, consulte Configurar ACLs.

Permissões de ACL
Permissão Quando concedida em um bucket Quando concedida em um objeto
READ Permite ao favorecido listar os objetos no bucket Permite ao favorecido ler os dados do objeto e seus metadados
WRITE Permite que o favorecido crie novos objetos no bucket. Para os proprietários de bucket e objeto de objetos existentes, também permite exclusões e substituições desses objetos. Não aplicável
READ_ACP Permite ao favorecido ler a ACL do bucket Permite ao favorecido ler a ACL do objeto
WRITE_ACP Permite ao favorecido gravar a ACL para o bucket aplicável Permite ao favorecido gravar a ACL para o objeto aplicável
FULL_CONTROL Concede ao favorecido as permissões READ, WRITE, READ_ACP e WRITE_ACP no bucket Concede ao favorecido as permissões READ, READ_ACP e WRITE_ACP no objeto
Atenção

Tenha cuidado ao conceder permissões de acesso a buckets e objetos do S3. Por exemplo, conceder acesso de WRITE a um bucket permite que o favorecido crie objetos no bucket. É altamente recomendável que você leia esta seção Visão geral da lista de controle de acesso (ACL) inteira antes da concessão de permissões.

Mapeamento das permissões da ACL e das permissões da política de acesso

Conforme mostrado na tabela anterior, uma ACL concede apenas um conjunto finito de permissões, em comparação com o número de permissões que pode ser definido em uma política de acesso (consulte Ações do Amazon S3). Cada uma dessas permissões permite uma ou mais operações do Amazon S3.

A tabela a seguir mostra como cada uma das permissões da ACL se correlaciona com as permissões de política de acesso correspondentes. Como você pode ver, a política de acesso permite mais permissões que uma ACL. Use ACLs principalmente para conceder permissões básicas de leitura/gravação, similares às permissões de sistema de arquivos. Para obter mais informações sobre quando usar uma ACL, consulte Diretrizes para políticas de acesso.

Para obter mais informações sobre permissões de ACL no console do Amazon S3, consulte Configurar ACLs.

Permissão da ACL Permissões correspondentes da política de acesso quando permissões da ACL são concedidas em um bucket Permissões correspondentes da política de acesso quando permissões da ACL são concedidas em um objeto
READ s3:ListBucket, s3:ListBucketVersions, e s3:ListBucketMultipartUploads s3:GetObject e s3:GetObjectVersion
WRITE

s3:PutObject

O proprietário do bucket pode criar, substituir e excluir qualquer objeto no bucket, e o proprietário do objeto tem FULL_CONTROL sobre seu objeto.

Além disso, quando o favorecido é o proprietário do bucket, conceder a permissão WRITE em uma ACL do bucket permite que a ação s3:DeleteObjectVersion seja executada em qualquer versão naquele bucket.

Não aplicável
READ_ACP s3:GetBucketAcl s3:GetObjectAcl e s3:GetObjectVersionAcl
WRITE_ACP s3:PutBucketAcl s3:PutObjectAcl e s3:PutObjectVersionAcl
FULL_CONTROL Equivalente a conceder as permissões READ, WRITE, READ_ACP e WRITE_ACP da ACL. Assim, essa permissão da ACL equivale à combinação das permissões correspondentes da política de acesso. Equivalente a conceder as permissões READ, READ_ACP e WRITE_ACP da ACL. Assim, essa permissão da ACL equivale à combinação das permissões correspondentes da política de acesso.

Chaves de condição

Ao conceder permissões de política de acesso, você pode usar chaves de condição para restringir o valor da ACL em um objeto usando uma política de bucket. As chaves de contexto abaixo correspondem a ACLs. Você pode usar essas chaves de contexto para obrigar a usar uma ACL específica em uma solicitação:

  • s3:x-amz-grant-read: exigir acesso de leitura.

  • s3:x-amz-grant-write: exigir acesso de gravação.

  • s3:x-amz-grant-read-acp: exigir acesso de leitura à ACL do bucket.

  • s3:x-amz-grant-write-acp: exigir acesso de gravação à ACL do bucket.

  • s3:x-amz-grant-full-control: exigir controle total.

  • s3:x-amz-acl ‐ exigir um ACL pré-configurada.

Para obter exemplos de políticas que envolvem cabeçalhos específicos de ACL, consulte Exemplo 1: Concessão da permissão s3:PutObject com uma condição que exige que o proprietário do bucket obtenha controle total. Para obter uma lista completa de chaves de condição específicas do Amazon S3, consulte Ações, recursos e chaves de condição do Amazon S3.

Amostra de ACL

A seguir, a amostra de ACL em um bucket identifica o proprietário do recurso e um conjunto de concessões. O formato é a representação XML de uma ACL na API REST do Amazon S3. O proprietário do bucket tem FULL_CONTROL sobre o recurso. Além disso, a ACL mostra como as permissões são concedidas em um recurso para duas Contas da AWS , identificadas pelo ID de usuário canônico, e para dois grupos predefinidos do Amazon S3 discutidos na seção anterior.

<?xml version="1.0" encoding="UTF-8"?> <AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Owner> <ID>Owner-canonical-user-ID</ID> <DisplayName>display-name</DisplayName> </Owner> <AccessControlList> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"> <ID>Owner-canonical-user-ID</ID> <DisplayName>display-name</DisplayName> </Grantee> <Permission>FULL_CONTROL</Permission> </Grant> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"> <ID>user1-canonical-user-ID</ID> <DisplayName>display-name</DisplayName> </Grantee> <Permission>WRITE</Permission> </Grant> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"> <ID>user2-canonical-user-ID</ID> <DisplayName>display-name</DisplayName> </Grantee> <Permission>READ</Permission> </Grant> <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> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group"> <URI>http://acs.amazonaws.com/groups/s3/LogDelivery</URI> </Grantee> <Permission>WRITE</Permission> </Grant> </AccessControlList> </AccessControlPolicy>

ACL pré-configurada

O Amazon S3 oferece suporte a um conjunto de concessões predefinidas, conhecidas como ACLs pré-configuradas. Cada ACL pré-configurada tem um conjunto predefinido de concessões e permissões. A tabela a seguir lista o conjunto de ACLs pré-configuradas e as concessões predefinidas associadas.

ACL pré-configurada Aplica-se a Permissões adicionadas à ACL
private Bucket e objeto O proprietário obtém FULL_CONTROL. Ninguém mais tem direitos de acesso (padrão).
public-read Bucket e objeto O proprietário obtém FULL_CONTROL. O grupo AllUsers (consulte Quem é o favorecido?) obtém acesso READ.
public-read-write Bucket e objeto O proprietário obtém FULL_CONTROL. O grupo AllUsers obtém os acessos READ e WRITE. Essa concessão não costuma ser recomendada em um bucket.
aws-exec-read Bucket e objeto O proprietário obtém FULL_CONTROL. O Amazon EC2 obtém acesso READ a GET um pacote de imagem de máquina da Amazon (AMI) do Amazon S3.
authenticated-read Bucket e objeto O proprietário obtém FULL_CONTROL. O grupo AuthenticatedUsers obtém acesso READ.
bucket-owner-read Objeto O proprietário do objeto obtém FULL_CONTROL. O proprietário do bucket obtém acesso READ. Se você especificar essa ACL pré-configurada ao criar um bucket, o Amazon S3 a ignorará.
bucket-owner-full-control Objeto Os proprietários do objeto e do bucket obtêm FULL_CONTROL sobre o objeto. Se você especificar essa ACL pré-configurada ao criar um bucket, o Amazon S3 a ignorará.
log-delivery-write Bucket O grupo LogDelivery obtém as permissões WRITE e READ_ACP no bucket. Para obter mais informações sobre logs, consulte (Registrar em log as solicitações com registro em log de acesso ao servidor).
nota

Você pode especificar apenas uma dessas ACLs pré-configuradas na solicitação.

Especifique uma ACL pré-configurada na solicitação usando o cabeçalho de solicitação x-amz-acl. Quando o Amazon S3 recebe uma solicitação com uma ACL pré-configurada, ele adiciona as concessões predefinidas à ACL do recurso.