Cloud Identity and Access Management

Nesta página, você encontra uma visão geral sobre o Cloud Identity and Access Management (Cloud IAM) e o uso dele no controle de acesso a intervalos e objetos no Cloud Storage. Para saber como definir e gerenciar as permissões do Cloud IAM de intervalos e projetos do Cloud Storage, consulte Como usar permissões do Cloud IAM. Para ver outras formas de controlar o acesso a intervalos e objetos, consulte Visão geral do controle de acesso.

Nesta página, falamos sobre os aspectos do Cloud IAM que são relevantes para o Cloud Storage. Para ver informações detalhadas sobre o Cloud IAM e seus recursos gerais, consulte o guia de desenvolvedor dessa ferramenta. Em especial, veja a seção Como gerenciar políticas do Cloud IAM.

Visão geral

Com o Cloud Identity and Access Management (Cloud IAM), você controla quem tem acesso aos recursos do projeto do Google Cloud Platform. Nos recursos, estão incluídos os intervalos do Cloud Storage e os objetos armazenados neles, além de outras entidades do GCP como instâncias do Compute Engine.

O conjunto de regras de acesso aplicado a um recurso é chamado de política do Cloud IAM. Ela define as ações que os usuários podem executar em todos os objetos ou intervalos do projeto. Quando a política é aplicada a um intervalo único, ela define as ações que os usuários podem executar nesse intervalo específico e nos objetos dele.

Por exemplo, crie para um dos seus intervalos uma política do Cloud IAM que forneça ao usuário controle administrativo sobre esse intervalo. Além disso, é possível adicionar outro usuário à política do Cloud IAM em todo o projeto que possibilite a ele ver objetos em qualquer intervalo do projeto.

Os membros são o "quem" do Cloud IAM. Eles podem ser usuários individuais, grupos, domínios ou o público como um todo. Aos membros, são atribuídos papéis que permitem a execução de ações no Cloud Storage, bem como no GCP de maneira geral. Cada papel é um conjunto de uma ou mais permissões. Elas são as unidades básicas do Cloud IAM. Com cada permissão, é possível executar uma determinada ação.

Com a permissão storage.objects.create, você cria objetos. Ela está em papéis como roles/storage.objectCreator, em que é a única permissão, e em roles/storage.objectAdmin, em que muitas permissões são agrupadas. Se você atribuir o papel roles/storage.objectCreator a um membro para um intervalo específico, ele só poderá criar objetos nesse intervalo. Se você atribuir a outro membro o papel roles/storage.objectAdmin para o intervalo, ele poderá executar tarefas adicionais, como excluir objetos, mas apenas nesse intervalo. Se esses dois usuários só receberem esses papéis, eles não terão conhecimento de outros intervalos no projeto. Se você atribuir um papel roles/storage.objectAdmin a um terceiro membro, mas fizer isso para o projeto e não apenas para um intervalo único, ele terá acesso a qualquer objeto em qualquer intervalo do projeto.

Ao usar o Cloud IAM com o Cloud Storage, é fácil limitar as permissões de um membro sem a necessidade de modificar a permissão de cada intervalo ou objeto individualmente.

Permissões

Com as permissões, os membros podem executar ações específicas em intervalos ou objetos no Cloud Storage. Com a permissão storage.buckets.list, um membro pode listar os intervalos no projeto. Não conceda permissões diretamente aos membros. Em vez disso, atribua papéis que têm uma ou mais permissões agrupadas neles.

Para ver uma lista de referência das permissões do Cloud IAM aplicáveis ao Cloud Storage, consulte Permissões do Cloud IAM para o Cloud Storage.

Papéis

Os papéis são um pacote de uma ou mais permissões. Por exemplo, roles/storage.objectViewer contém as permissões storage.objects.get e storage.objects.list. Você atribui papéis aos membros, e isso permite que eles executem ações nos intervalos e objetos do projeto.

Para ver uma lista de referência dos papéis do Cloud IAM aplicáveis ao Cloud Storage, consulte Papéis do Cloud IAM para o Cloud Storage.

Comparação entre os papéis no nível do projeto e no nível do intervalo

A concessão de papéis no nível do intervalo não afeta os papéis concedidos no nível do projeto e vice-versa. Use esses dois níveis de granularidade para personalizar suas permissões. Por exemplo, digamos que você queira dar permissão ao usuário para ler objetos em qualquer intervalo, mas para criar objetos somente em um intervalo específico. Para isso, dê a um usuário o papel roles/storage.objectViewer no nível do projeto para que ele leia objetos armazenados em qualquer intervalo do projeto e o papel roles/storage.objectCreator no nível de um intervalo específico para que ele crie objetos somente nesse intervalo.

Alguns papéis podem ser usados nos níveis de projeto e de intervalo. Quando usados no nível do projeto, as permissões que eles contêm se aplicam a todos os intervalos e objetos do projeto. No nível de intervalo, as permissões se aplicam apenas a um intervalo específico e aos objetos nele contidos. roles/storage.admin, roles/storage.objectViewer e roles/storage.objectCreator são exemplos desses papéis.

Alguns papéis só podem ser aplicados a um nível. Por exemplo, o papel Viewer só pode ser aplicado no nível do projeto, e roles/storage.legacyObjectOwner no nível do intervalo.

Relação com as ACLs

Os papéis do Cloud IAM para intervalos legados funcionam em conjunto com as ACLs do intervalo: quando você adiciona ou remove um papel do intervalo legado, as ACLs associadas a ele refletirão essas alterações. Da mesma forma, a alteração de uma ACL específica de um intervalo atualiza o papel do intervalo legado correspondente.

Papel do Intervalo legado ACL equivalente
roles/storage.legacyBucketReader Leitor do intervalo
roles/storage.legacyBucketWriter Escritor do intervalo
roles/storage.legacyBucketOwner Proprietário do intervalo

Todos os outros papéis do Cloud IAM no nível do intervalo ou do projeto funcionam independentemente das ACLs. Por exemplo, se você fornecer a um usuário o papel Visualizador de objetos do Storage, as ACLs não serão alteradas. Isso significa que é possível usar papéis do Cloud IAM no nível do intervalo para conceder acesso amplo a todos os objetos do intervalo, além de utilizar ACLs de objeto detalhadas para personalizar o acesso a objetos específicos no intervalo.

Permissão do Cloud IAM para alterar as ACLs

Use o Cloud IAM para conceder aos membros a permissão necessária para alterar as ACLs nos objetos. Com as seguintes permissões de storage.buckets em conjunto, os usuários trabalham com ACLs de intervalo e de objeto padrão: .get, .getIamPolicy, .setIamPolicy e .update.

Da mesma forma, com as seguintes permissões de storage.objects em conjunto, os usuários trabalham com ACLs de objeto: .get, .getIamPolicy, .setIamPolicy e .update.

Papéis personalizados

O Cloud IAM tem muitos papéis predefinidos que incluem casos de uso comum. No entanto, é possível definir os próprios papéis e especificar as permissões contidas nos pacotes. Para isso, o Cloud IAM oferece papéis personalizados.

Tipos de membros

Há vários tipos diferentes de membros. Por exemplo, as contas e os grupos do Google representam dois tipos gerais, enquanto allAuthenticatedUsers e allUsers são dois tipos especializados. Para ver uma lista de tipos comuns de membros no Cloud IAM, consulte Conceitos relacionados à identidade. Além dos tipos listados, o Cloud IAM é compatível com os seguintes tipos de membros, que podem ser aplicados especificamente às políticas do Cloud IAM do intervalo do Cloud Storage:

  • projectOwner:[PROJECT_ID]
  • projectEditor:[PROJECT_ID]
  • projectViewer:[PROJECT_ID]

Em que [PROJECT_ID] é o código de um projeto específico.

Ao conceder um papel a um dos tipos de membros acima, todos os membros que tiverem essa permissão para o projeto especificado conseguem o papel que você selecionou. Por exemplo, digamos que você queira atribuir a todos os membros que têm o papel Viewer para o projeto my-example-project, o papel roles/storage.objectCreator para um dos seus intervalos. Para isso, dê ao membro projectViewer:my-example-project o papel roles/storage.objectCreator para esse intervalo.

Como usar com as ferramentas do Cloud Storage

Não é possível definir as permissões do Cloud IAM com a API XML. No entanto, os usuários que têm permissões do Cloud IAM ainda podem usar essa API e qualquer outra ferramenta para acessar o Cloud Storage.

Para saber quais permissões do Cloud IAM os usuários podem usar para executar ações com as diferentes ferramentas do Cloud Storage, consulte Cloud IAM para o Console do Cloud, Cloud IAM para gsutil, Cloud IAM para JSON e Cloud IAM para XML.

Práticas recomendadas

O Cloud IAM, como qualquer outra configuração administrativa, exige que o gerenciamento ativo seja eficaz. Antes de criar um intervalo ou objeto acessível a outros usuários, saiba com quem você quer compartilhar o intervalo ou objeto e quais os papéis que serão atribuídos a essas pessoas. Ao longo do tempo, as mudanças no gerenciamento de projetos, nos padrões de uso e na propriedade organizacional podem exigir que você modifique as configurações do Cloud IAM em intervalos e projetos, especialmente se gerenciar o Cloud Storage em uma grande organização ou para um grande grupo de usuários. Ao avaliar e planejar as configurações de controle de acesso, lembre-se destas práticas recomendadas:

  • Use o princípio do menor privilégio ao conceder acesso.

    Esse princípio é uma diretriz de segurança para concessão de privilégios ou direitos. Com base nele, conceda o privilégio mínimo necessário para que um usuário execute a tarefa que lhe foi atribuída. Por exemplo, se você quiser compartilhar um arquivo com alguém, conceda-lhe o papel storage.objectReader em vez de storage.admin.

  • Evite atribuir papéis com a permissão setIamPolicy a pessoas que você não conhece.

    Com a permissão setIamPolicy, um usuário pode alterar permissões e controlar dados. Use papéis com permissão setIamPolicy somente quando quiser delegar o controle administrativo de objetos e intervalos.

  • Tenha cuidado com o modo como concede permissões para usuários anônimos.

    Use os tipos de membro allUsers e allAuthenticatedUsers apenas quando for aceitável que qualquer pessoa leia e analise seus dados na Internet. Esses escopos são úteis para alguns aplicativos e cenários, mas não é recomendado conceder permissões específicas como setIamPolicy, update, create ou delete a todos os usuários.

  • Compreenda os papéis de nível de projeto Viewer/Editor/Owner no Cloud Storage

    Os papéis para envolvidos no projeto Viewer/Editor/Owner efetivamente concedem os tipos de acesso no Cloud Storage conforme indicado pelos respectivos nomes. No entanto, isso é feito indiretamente por meio do acesso adicional fornecido nos níveis do intervalo e do objeto, ao usar os tipos de membros exclusivos do Cloud Storage. É possível revogar o acesso quando ele é adicionado por padrão.

    Por exemplo, o papel Viewer oferece apenas uma permissão de membro storage.buckets.list, mas os novos intervalos, por padrão, concedem o papel roles/storage.legacyBucketReader a todos os membros que tenham o papel Viewer para o projeto. É esse papel no intervalo que permite que um Viewer visualize o intervalo. Além disso, há uma ACL padrão do objeto de projectPrivate no intervalo. Isso significa que os objetos adicionados ao intervalo, por padrão, herdam a ACL de projectPrivate. É essa ACL que permite que um Viewer visualize o objeto.

    Da mesma maneira, os papéis de projeto Editor e Owner têm acesso limitado ao Cloud Storage, mas os membros que os receberam ganham a permissão roles/storage.legacyBucketOwner para novos intervalos e a propriedade de objetos por meio da ACL de projectPrivate.

    Observe que alguns acessos a intervalos e objetos não são inerentes aos papéis de projeto Viewer/Editor/Owner. Assim, é possível revogar o acesso que os membros esperariam que esses papéis tivessem.

  • Evite definir permissões que resultem em intervalos e objetos inacessíveis.

    Quando ninguém tem permissão para ler um intervalo ou objeto, ele fica inacessível. Isso acontece em um intervalo quando todas as permissões do Cloud IAM nele são removidas. No objeto, isso ocorre quando o proprietário dele abandona um projeto, e não há políticas do Cloud IAM no nível do intervalo ou projeto que conceda acesso aos objetos. Em ambos os casos, é possível recuperar o acesso atribuindo um papel apropriado, como roles/storage.admin, a si mesmo ou a outro membro no nível do projeto. Isso dá acesso a todos os intervalos e objetos no projeto. Portanto, convém revogar o papel quando você tiver redefinido o acesso ao intervalo ou objeto afetado.

  • Delegue o controle administrativo dos seus intervalos.

    Por padrão, os membros com o papel de nível de projeto Owner são as únicas entidades que têm o papel roles/legacyBucketOwner em um intervalo recém-criado. É preciso que haja pelo menos dois membros com o papel Owner para que os intervalos de um membro que deixar a equipe possam ser gerenciados por outros membros.

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.