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 é 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 fazer upload de objetos é a proprietária desses recursos.

  • Se você fizer upload de 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 pertencem é 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 fazer upload de objetos. Nesse caso, a Conta da AWS que faz upload dos objetos é proprietária desses objetos. 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 root da Conta da AWS para fazer solicitações autenticadas. Em vez disso, crie um usuário do IAM e conceda acesso total a ele. Esses usuários são conhecidos como usuários administradores. As credenciais do usuário administrador podem ser usadas, em vez das credenciais do usuário root da Conta da AWS, para interagir com a AWS e executar tarefas, como criar um bucket, criar usuários e conceder permissões a eles. Para obter mais informações, consulte Credenciais de usuário root 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 Manual 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. Para ver uma lista das operações disponíveis, consulte Ações definidas pelo Amazon S3.

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, criando 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 o usuário possa fazer upload de 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 de leitura/gravação básicas 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: para seu 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.

Analisador de acesso para S3

No console do Amazon S3, você pode usar o Analisador de acesso para S3 para 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 Access Analyzer para S3 alerta sobre buckets do S3 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 Analisador de acesso para S3, você pode 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 Analisador de acesso para S3 está disponível sem custo adicional no console do Amazon S3. O Access Analyzer para S3 é fornecido pelo AWS Identity and Access Management (IAM) Access Analyzer. Para usar o Analisador de acesso para S3 no console do Amazon S3, você deve visitar o console do IAM e criar um analisador no nível da conta no Analisador de acesso do IAM por região.

Para obter mais informações sobre o Access Analyzer for S3, consulte Revisar o acesso de bucket usando o Access Analyzer for 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 de usuário 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.