Visão geral do gerenciamento de acesso - Amazon Simple Storage Service

Visão geral do gerenciamento de acesso

Ao conceder permissões no Amazon S3, você decide quem as recebe, a quais recursos do Amazon S3 as permissões se referem e as ações específicas que deseja permitir nesses recursos. As seções a seguir fornecem uma visão geral dos recursos do Amazon S3 e como determinar o melhor método para controlar o acesso a eles.

Recursos do Amazon S3: buckets e objetos

Na AWS, um recurso é uma entidade com a qual você pode trabalhar. No Amazon S3, os buckets e os objetos são os recursos e ambos têm sub-recursos associados.

Os sub-recursos de bucket incluem o seguinte:

Os sub-recursos de objeto incluem o seguinte:

  • acl – Armazena uma lista de permissões de acesso no objeto. Para obter mais informações, consulte Visão geral da lista de controle de acesso (ACL).

  • restore: oferece suporte para restaurar, temporariamente, um objeto arquivado. Para obter mais informações, consulte Restauração do objeto POST na Referência de APIs do Amazon Simple Storage Service.

    Um objeto na classe de armazenamento do S3 Glacier Flexible Retrieval é um objeto arquivado. Para acessar o objeto, você deve, primeiro, iniciar uma solicitação de restauração, que restaura uma cópia do objeto arquivado. Na solicitação, especifique o número de dias que você deseja que a cópia restaurada exista. Para obter mais informações sobre arquivamento de objetos, consulte Gerenciando seu ciclo de vida de armazenamento.

Propriedade de bucket e objeto do Amazon S3

Buckets e objetos são recursos do Amazon S3. Por padrão, apenas o proprietário dos recursos pode acessá-los. O proprietário do recurso refere-se à Conta da AWS que criou o recurso. Por exemplo:

  • A Conta da AWS que você usa para criar buckets e carregar objetos é a proprietária desses recursos.

  • Se você carregar um objeto usando credenciais de função ou usuário do AWS Identity and Access Management (IAM), a Conta da AWS à qual o usuário ou a função pertence será proprietária do objeto.

  • Um proprietário do bucket pode conceder permissões entre contas à outra Conta da AWS (ou aos usuários em outra conta) para carregar objetos. Nesse caso, a Conta da AWS que carregar os objetos será proprietária deles. O proprietário do bucket não tem permissões nos objetos que outras contas possuem, com as seguintes exceções:

    • O proprietário do bucket paga as faturas. O proprietário do bucket pode negar acesso a todos os objetos ou excluir objetos no bucket, independentemente de quem o possui.

    • O proprietário do bucket pode arquivar todos os objetos ou restaurar os objetos arquivados, independentemente de quem os possui. Arquivo refere-se à classe de armazenamento usada para armazenar os objetos. Para obter mais informações, consulte Gerenciando seu ciclo de vida de armazenamento.

Autenticação de solicitação e propriedade

Todas as solicitações para um bucket são autenticadas ou não autenticadas. As solicitações autenticadas devem incluir um valor de assinatura que autentica o remetente da solicitação. Para solicitações não autenticadas, isso não é necessário. Para obter mais informações sobre autenticação da solicitação, consulte Fazer solicitações.

Um proprietário do bucket pode permitir solicitações não autenticadas. Por exemplo, solicitações PUT Object não autenticadas são permitidas quando um bucket tem uma política pública de bucket, ou quando uma ACL do bucket concede acesso WRITE ou FULL_CONTROL ao grupo All Users (Todos os usuários) ou ao usuário anônimo especificamente. Para obter mais informações sobre políticas de bucket público e listas de controle de acesso (ACLs) públicas, consulte O significado de "público".

Todas as solicitações não autenticadas são feitas pelo usuário anônimo. Esse usuário é representado em ACLs pelo ID de usuário canônico específico 65a011a29cdf8ec533ec3d1ccaae921c. Se for feito o upload de um objeto em um bucket por meio de uma solicitação não autenticada, o usuário anônimo será proprietário o objeto. A ACL padrão do objeto concede FULL_CONTROL ao usuário anônimo como o proprietário do objeto. Portanto, o Amazon S3 permite que solicitações não autenticadas recuperem o objeto ou modifiquem a ACL dele.

Para evitar que os objetos sejam modificados pelo usuário anônimo, recomendamos que você não implemente políticas de bucket que permitam gravações públicas anônimas em seu bucket ou use ACLs que concedam ao usuário anônimo acesso de gravação ao bucket. Você pode aplicar esse comportamento recomendado usando o Bloqueio de acesso público do Amazon S3.

Para obter mais informações sobre como bloquear o acesso público, consulte Bloquear o acesso público ao armazenamento do Amazon S3. Para obter mais informações sobre ACLs, consulte Visão geral da lista de controle de acesso (ACL).

Importante

Recomendamos que você não use credenciais de usuário raiz da Conta da AWS para fazer solicitações autenticadas. Em vez disso, crie um perfil do IAM e conceda acesso total a ele. Usuários com esse perfil são conhecidos como usuários administradores. Em vez de usar credenciais de usuário raiz da Conta da AWS, você pode usar credenciais atribuídas ao perfil administrador para interagir com a AWS e realizar tarefas, como criar um bucket, criar usuários e conceder permissões a eles. Para obter mais informações, consulte Credenciais de usuário raiz da Conta da AWS e credenciais de usuário do IAM na Referência geral da AWS e Práticas recomendadas de segurança no IAM no Guia do usuário do IAM.

Operações de recurso

O Amazon S3 fornece um conjunto de operações para trabalhar com recursos do Amazon S3. Consulte uma lista das operações disponíveis em Actions defined by Amazon S3 na Referência de autorização do serviço.

Gerenciar o acesso aos recursos

Gerenciar o acesso refere-se à concessão de permissões a outros (usuários e Contas da AWS) para realizar operações de recurso por meio da criação de uma política de acesso. Por exemplo, você pode conceder a permissão PUT Object a um usuário em uma Conta da AWS para que ele possa carregar objetos em seu bucket. Além da concessão de permissões para usuários e contas individuais, você pode conceder permissões a todos (também chamado de acesso anônimo) ou a todos os usuários autenticados (usuários com credenciais da AWS). Por exemplo, se você configurar seu bucket como um site, talvez queira tornar os objetos públicos, concedendo a permissão GET Object a todos.

Opções de política de acesso

A política de acesso descreve quem tem acesso a quê. Você pode associar uma política de acesso a um recurso (bucket e objeto) ou um usuário. Conforme necessário, você pode classificar as políticas de acesso do Amazon S3 disponíveis da seguinte maneira:

  • Políticas com base em recursos: as políticas de bucket e listas de controle de acesso (ACLs) são com base em recurso porque você as anexa aos recursos do Amazon S3.

    
							Diagrama que descreve recursos da Conta da AWS, incluindo um bucket do S3 com uma ACL e uma política de bucket, e os objetos do S3 com ACLs de objeto.
    • ACL – Cada bucket e objeto tem uma ACL associada. Uma ACL é uma lista de concessões que identifica o concessionário e a permissão concedida. Você usa ACLs para conceder permissões básicas de leitura/gravação a outras Contas da AWS. As ACLs usam um esquema XML específico do Amazon S3.

      Esta é uma ACL de bucket de exemplo. A concessão na ACL mostra um proprietário do bucket com permissão de controle total.

      <?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>

      As ACLs de bucket e objeto usam o mesmo esquema XML.

    • Política de bucket: você pode adicionar uma política de bucket para conceder a outras Contas da AWS ou usuários do IAM permissões ao bucket e aos objetos contidos nele. As permissões de objeto aplicam-se somente aos objetos criados pela proprietário do bucket. As políticas do bucket suplementam e, em muitos casos, substituem as políticas de acesso com base em ACL.

      A seguir há um exemplo de política de bucket. Você expressa a política de bucket (e a política de usuário) usando um arquivo JSON. A política concede permissão de leitura anônima a todos os objetos em um bucket. A política de bucket tem uma instrução, que permite a ação s3:GetObject (permissão de leitura) em objetos em um bucket chamado examplebucket.  Especificando principal com um caractere curinga (*), a política concede acesso anônimo. Tenha cuidado ao fazer isso. Por exemplo, a seguinte política de bucket tornaria os objetos publicamente acessíveis.

      { "Version":"2012-10-17", "Statement": [ { "Sid":"GrantAnonymousReadPermissions", "Effect":"Allow", "Principal": "*", "Action":["s3:GetObject"], "Resource":["arn:aws:s3:::awsexamplebucket1/*"] } ] }
  • Políticas de usuário: você pode usar o IAM para gerenciar o acesso a recursos do Amazon S3. Você pode criar usuários, grupos e funções do IAM em sua conta e anexar políticas de acesso que concedem acesso a recursos da AWS, incluindo o Amazon S3.

    
							Diagrama que descreve o administrador da Conta da AWS e outros usuários com as políticas anexadas ao usuário.

    Para obter mais informações sobre o IAM, consulte AWS Identity and Access Management (IAM).

    Veja a seguir um exemplo de política de usuário. Você não pode conceder permissões anônimas em uma política de usuário do IAM, pois a política é anexada a um usuário. A política de exemplo permite ao usuário associado que está anexado executar seis ações diferentes do Amazon S3 em um bucket nos objetos contidos nele. É possível anexar essa política a um usuário, grupo ou função específico do IAM.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AssignUserActions", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket", "s3:DeleteObject", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::awsexamplebucket1/*", "arn:aws:s3:::awsexamplebucket1" ] }, { "Sid": "ExampleStatement2", "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" } ] }

Quando o Amazon S3 recebe uma solicitação, deve avaliar todas as políticas de acesso para determinar se deve autorizar ou negar a solicitação. Para obter mais informações sobre como o Amazon S3 avalia essas políticas, consulte Como o Amazon S3 autoriza uma solicitação.

IAM Access Analyzer para S3

No console do Amazon S3, é possível usar o IAM Access Analyzer para S3 a fim de revisar todos os buckets com listas de controle de acesso (ACLs) de bucket, políticas de bucket ou políticas de ponto de acesso que concedem acesso público ou compartilhado. O IAM Access Analyzer para S3 alerta você sobre buckets que são configurados para permitir o acesso a qualquer pessoa na internet ou a outras Contas da AWS, incluindo Contas da AWS fora da organização. Para cada bucket público ou compartilhado, você recebe descobertas que relatam a origem e o nível de acesso público ou compartilhado.

No IAM Access Analyzer para S3, é possível bloquear todo o acesso público a um bucket com um único clique. Recomendamos que você bloqueie todo o acesso aos buckets, a menos que exija acesso público para dar suporte a um caso de uso específico. Antes de bloquear todo o acesso público, certifique-se de que os aplicativos continuarão funcionando corretamente sem acesso público. Para obter mais informações, consulte Bloquear o acesso público ao armazenamento do Amazon S3.

Você também pode detalhar as configurações de permissão no nível do bucket para definir níveis granulares de acesso. Para casos de uso específicos e verificados que exigem acesso público ou compartilhado, você pode confirmar e registrar sua intenção de que o bucket permaneça público ou compartilhado arquivando as descobertas do bucket. Você pode acessar novamente e modificar essas configurações de bucket a qualquer momento. Você também pode fazer download das descobertas como um relatório CSV para fins de auditoria.

O IAM Access Analyzer para S3 está disponível sem custo adicional no console do Amazon S3. O IAM Access Analyzer para S3 usa tecnologia do AWS Identity and Access Management (IAM) Access Analyzer. Para usar o IAM Access Analyzer para S3 no console do Amazon S3, você deve acessar o console do IAM e criar um analisador no nível da conta no IAM Access Analyzer por região.

Para obter mais informações sobre o IAM Access Analyzer para S3, consulte Revisar o acesso de bucket usando o IAM Access Analyzer para S3.

Qual método de controle de acesso devo usar?

Com as opções disponíveis para gravar uma política de acesso, surgem as seguintes perguntas:

  • Quando devo usar qual método de controle de acesso? Por exemplo, para conceder permissões de bucket, devo usar uma política de bucket ou uma ACL de bucket?

    Possuo um bucket e os objetos no bucket. Devo usar uma política de acesso baseada em recursos ou uma política baseada em identidade do IAM?

    Se eu usar uma política de acesso baseada em recursos, devo usar uma política de bucket ou uma ACL de objeto para gerenciar permissões de objeto?

  • Possuo um bucket, mas não possuo todos os seus objetos. Como as permissões de acesso são gerenciadas para objetos que alguém possui?

  • Se eu conceder acesso usando uma combinação dessas opções de política de acesso, como o Amazon S3 determinará se um usuário tem permissão para executar uma operação solicitada?

As seções a seguir explicam essas alternativas de controle de acesso, como o Amazon S3 avalia mecanismos de controle de acesso e quando usar cada método de controle de acesso. Também fornecem demonstrações com exemplos.