Acesso uniforme no nível do bucket

Configuração

Esta página aborda o acesso uniforme no nível do bucket, que permite controlar de maneira uniforme o acesso aos recursos do Cloud Storage. Quando você ativa o acesso uniforme no nível do bucket em um bucket, as listas de controle de acesso (ACLs, na sigla em inglês) são desativadas, e apenas as permissões de gerenciamento de identidade e acesso (IAM, na sigla em inglês) no nível do bucket concedem acesso a esse bucket e ao objetos que ele contém. Você revoga todo o acesso concedido por ACLs de objeto e a capacidade de administrar permissões usando ACLs de bucket.

Informações gerais

O Cloud Storage oferece dois sistemas para conceder aos usuários permissão de acesso aos seus buckets e objetos: IAM e Listas de controle de acesso (ACLs, na sigla em inglês). Eles atuam em paralelo. Para que um usuário acesse um recurso do Cloud Storage, basta receber a permissão de um dos sistemas. O IAM é usado em todo o Google Cloud e possibilita que você conceda uma variedade de permissões nos níveis do bucket e do projeto. As ACLs são usadas somente pelo Cloud Storage e têm opções de permissão limitadas, mas permitem que você conceda permissões por objeto.

Para oferecer suporte a um sistema de permissões uniforme, o Cloud Storage tem acesso uniforme no nível do bucket. Usar esse recurso em um bucket desativa as ACLs de todos os recursos do Cloud Storage no bucket. O acesso aos recursos do Cloud Storage é concedido exclusivamente pelo IAM. Importante: o acesso uniforme no nível do bucket não poderá ser desativado se ele estiver ativo em um bucket de 90 dias consecutivos.

É recomendável usar o acesso uniforme no nível do bucket?

Geralmente, é recomendável usar o acesso uniforme no nível do bucket, porque isso unifica e simplifica a forma como você concede acesso aos recursos do Cloud Storage.

O acesso uniforme no nível do bucket também permite usar outros recursos de segurança do Google Cloud, como compartilhamento restrito de domínios, federação de identidade de força de trabalho e Condições do IAM.

Talvez você prefira não usar o acesso uniforme no nível do bucket e, em vez disso, manter listas de controle de acesso refinadas nos seguintes casos:

  • Você quer controlar o acesso a objetos específicos em um bucket por meio de ACLs legadas.

  • quiser que quem fez o upload de um objeto tenha controle total sobre ele, mas menos acesso a outros objetos no bucket.

  • Use a API XML para visualizar ou definir permissões de buckets.

Comportamento com o recurso ativado

Ative o recurso "Acesso uniforme no nível do bucket" ao criar um novo bucket ou quando ativar explicitamente o recurso em um bucket existente.

Depois de ativado, um bucket tem o seguinte comportamento:

  • As solicitações para definir, ler ou modificar ACLs do bucket e do objeto falham com erros 400 Bad Request.

  • As solicitações da API JSON para receber uma projeção completa de metadados do bucket ou do objeto incluem uma ACL vazia como parte da resposta.

  • A propriedade de objeto individual não existe mais. O acesso associado foi revogado e as solicitações de metadados do bucket e do objeto não contêm mais o campo owner.

  • No momento da criação, os buckets recebem papéis do IAM especializados. Se você ativar o acesso uniforme no nível do bucket como parte da criação de um novo bucket, ele terá papéis adicionais do IAM.

    • Esse comportamento mantém as permissões que os objetos herdariam da ACL de objeto padrão de um bucket.

    • Ao ativar o acesso uniforme no nível do bucket em um bucket atual, aplique esses papéis manualmente. Se você já tiver alterado a ACL de objeto padrão do bucket, aplique um conjunto diferente de papéis do IAM.

Comportamento se o recurso for revertido

Para que seja possível desativar o acesso uniforme no nível do bucket e voltar a usar ACLs, o Cloud Storage salva as ACLs atuais. Se você desativar o acesso uniforme no nível do bucket:

  • os objetos recuperam as ACLs salvas;

  • todos os objetos adicionados ao bucket após o acesso uniforme no nível do bucket ter sido ativado recebem ACLs de acordo com as ACLs de objeto padrão usadas pelo bucket.

Considerações ao migrar um bucket atual

Ao ativar o acesso uniforme no nível do bucket em um bucket atual, é preciso garantir que os usuários e serviços que anteriormente dependiam de ACLs para acesso tenham suas permissões migradas para o IAM. Nesta seção, é possível ver a descrição de algumas etapas que precisam ser seguidas ao migrar um bucket para acesso uniforme no nível do bucket. Observe que, como as ACLs e o IAM são sincronizados quanto a permissões de bucket, as considerações se concentram especificamente no acesso a objetos no seu bucket, e não no acesso ao bucket.

Pense se uma permissão do IAM no nível do bucket superexpõe dados

Antes de atribuir os equivalentes do IAM às ACLs, pense no seguinte:

  • Uma permissão do IAM aplicada no nível do bucket é válida para todos os objetos dele, enquanto as ACLs de objeto podem variar conforme o objeto.

Se você quiser aplicar um determinado acesso a alguns objetos, mas não a outros, é preciso agrupá-los em buckets separados. Cada agrupamento precisa conter objetos com as mesmas permissões.

Verifique o uso da ACL do objeto

Ao migrar para acesso uniforme no nível do bucket, é preciso verificar se os objetos no bucket estão sendo acessados por meio das ACLs aplicadas a eles. Para verificar isso, o Cloud Monitoring tem uma métrica que rastreia o uso da ACL. Se a métrica indicar que os usuários ou serviços dependem de ACLs para acessar os objetos, é necessário atribuir equivalentes de IAM ao bucket antes de ativar o acesso uniforme no nível do bucket. Para ver um guia sobre como verificar o uso da ACL no Monitoring, consulte Verificar o uso da ACL.

Use essa métrica para determinar se a ativação do recurso "Acesso uniforme no nível do bucket" quebraria seu fluxo de trabalho:

Métrica Descrição
storage.googleapis.com/authz/acl_operations_count O número de operações de ACL que serão desativadas quando o recurso "Acesso uniforme no nível do bucket" estiver ativado ou dividido por tipo de operação e bucket de ACL.

Uma operação importante da ACL a ser examinada é OBJECT_ACCESS_REQUIRED_OBJECT_ACL:

  • Se esse número for zero, nenhuma ACL no nível do objeto foi necessária para acessar objetos nas últimas seis semanas. As políticas do IAM estão cobrindo as permissões necessárias no nível do bucket ou do projeto.

  • Se esse número for maior que zero, alguma solicitação de acesso a objetos nas últimas seis semanas exigiu permissões de ACL de objeto. Atribua políticas de IAM equivalentes antes de ativar o acesso uniforme no nível do bucket.

Para mais informações sobre as métricas do Monitoring, consulte Métricas, séries temporais e recursos.

Verifique a ACL de objeto padrão do bucket

Os buckets sem acesso uniforme no nível do bucket têm uma ACL de objeto padrão associada. A ACL de objeto padrão é aplicada a novos objetos adicionados a esses buckets, a menos que uma ACL seja fornecida explicitamente no momento em que o objeto é adicionado ao bucket.

Por exemplo, os buckets geralmente usam a ACL predefinida projectPrivate como a ACL de objeto padrão. projectPrivate concede ao objeto READER permissão com relação aos visualizadores de projetos associados ao bucket e concede ao objeto OWNER permissão com relação aos editores e proprietários do projeto. associados ao bucket.

Antes de ativar o recurso "Acesso uniforme no nível do bucket", verifique a ACL de objeto padrão do seu bucket. Considere se você quer conceder as permissões associadas à ACL de objeto padrão depois de ativar o acesso uniforme no nível do bucket. Nesse caso, atribua equivalentes do IAM ao bucket.

Atribuir equivalentes do IAM a ACLs de objeto

As ACLs de objeto podem conceder um tipo de acesso que o IAM não fornece no momento. Para garantir que os usuários atuais não percam o acesso a objetos com a ativação do acesso uniforme no nível do bucket, use a tabela a seguir e atribua os usuários afetados aos papéis apropriados do IAM.

Permissão ACL de objeto Papel equivalente do IAM
READER Leitor de objeto legado do Storage (roles/storage.legacyObjectReader)
OWNER Proprietário de objeto legado do Storage (roles/storage.legacyObjectOwner)

Considerações ao usar condições do IAM

Para evitar conflitos entre as políticas de IAM de um bucket e as ACLs de objeto, as Condições de IAM só podem ser usadas em buckets com acesso uniforme no nível do bucket ativado. Isso significa o seguinte:

A seguir