Google Cloud Os recursos do Google Cloud são organizados hierarquicamente. O nó da organização é o nó raiz na hierarquia, os projetos são os filhos da organização e os outros recursos são descendentes de projetos. É possível definir políticas do IAM em diferentes níveis da hierarquia de recursos. Os recursos herdam as políticas do recurso pai. A política de permissão efetiva de um recurso é a união da política de permissão definida nesse recurso com a política de permissão herdada do recurso pai.
Nesta página, você verá alguns exemplos de como a herança de políticas de permissão funciona e as práticas recomendadas que precisam ser consideradas ao criar recursos durante a implantação do Identity and Access Management (IAM).
Pré-requisitos
- Entender os conceitos básicos do IAM, em especial a Google Cloud hierarquia de recursos.
Contexto
O diagrama a seguir mostra um exemplo de Google Cloud recurso hierarquia.
O IAM permite definir políticas nos seguintes níveis da hierarquia de recursos:
Nível da organização. O recurso da organização representa a empresa. Os papéis de IAM concedidos nesse nível são herdados por todos os recursos dessa organização. Para mais informações, consulte Controle de acesso para organizações que usam o IAM.
Nível da pasta. Pastas podem conter projetos, outras pastas ou uma combinação de ambos. Os papéis concedidos no nível mais alto de pasta serão herdados por projetos ou outras pastas contidas nessa pasta pai. Para mais informações, consulte Controle de acesso para pastas que usam o IAM.
Nível do projeto. Os projetos representam uma relação de confiança dentro da empresa. Os serviços de um mesmo projeto têm um nível padrão de confiança. Os papéis do IAM concedidos no nível do projeto são herdados por recursos desse projeto. Para mais informações, consulte Controle de acesso para projetos que usam o IAM.
Nível do recurso. Além dos sistemas Cloud Storage e BigQuery ACL, outros recursos, como tópicos do Pub/Sub e instâncias do Compute Engine, são compatíveis com papéis de nível inferior. Assim, é possível conceder a determinados usuários permissão para um único recurso em um projeto.
As políticas de IAM são hierárquicas e se propagam em sentido descendente na estrutura. A política de permissão efetiva de um recurso é a união da política de permissão definida nesse recurso e da política de permissão herdada do recurso pai.
Os exemplos a seguir explicam como a herança de políticas funciona na prática.
Exemplo: Pub/Sub
No Pub/Sub, tópicos e inscrições são recursos que residem em um projeto. Suponha que project_1 tenha um tópico topic_a. Se você definir uma política de permissão em project_1 que concede o papel Editor a Kalani e definir uma política de permissão em topic_a que concede o papel Publicador a Nur, você efetivamente atribui o papel Editor a Kalani e o papel Publicador a Nur para topic_a.
O diagrama a seguir ilustra o exemplo anterior.
Se um papel herdado já concede a um principal todas as permissões necessárias, não é preciso conceder outros papéis no recurso. Conceder outro papel que contenha as mesmas permissões ou menos é redundante e não tem efeito.
Por exemplo, considere os papéis básicos de proprietário, editor e leitor. Esses papéis são concêntricos, ou seja, o papel de proprietário inclui as permissões do papel de editor, e este inclui as permissões do papel de leitor. Como resultado, se você conceder o papel de Editor a Kalani no nível do projeto, conceder o papel de Leitor em topic_a será redundante. Isso ocorre porque Kalani já tem todas as permissões no papel de leitor pelo papel de editor, que é herdado da política do projeto.
O diagrama a seguir ilustra o exemplo anterior.
Exemplo: Cloud Storage
No Cloud Storage, os buckets e os objetos são recursos, e os objetos estão localizados em buckets. Um exemplo de uso do IAM com o Cloud Storage é permitir acesso de leitura a arquivos carregados.
Considere uma situação em que muitos usuários fazem upload de arquivos em um bucket, mas não podem ler ou excluir nenhum dos arquivos carregados por outros usuários. A especialista em processamento de dados poderá ler e excluir arquivos carregados, mas não poderá excluir buckets porque outros estão usando a localização do bucket para fazer upload dos arquivos deles. Nesse caso, você definiria as políticas no projeto da seguinte maneira:
- Conceda o papel de administrador de objetos do Storage
(
roles/storage.objectAdmin) à especialista em tratamento de dados, Nur. Esse papel permite que Nur leia, adicione e exclua qualquer objeto em qualquer bucket do projeto. - Conceda o papel de criador de objetos do Storage Storage Object Creator
role
(
roles/storage.objectCreator) ao grupodata-uploaders. Esse papel permite que os membros do grupo façam upload de arquivos para o bucket, mas não permite que eles leiam ou excluam arquivos carregados por outros usuários.
O diagrama a seguir ilustra o exemplo anterior.
Exemplo: Compute Engine
Nas grandes empresas, o gerenciamento de recursos de rede e segurança, por exemplo, firewalls, geralmente é feito por uma equipe dedicada, diferente da equipe de desenvolvimento. As equipes de desenvolvimento talvez precisem de flexibilidade para inicializar instâncias e executar outras ações relacionadas a instâncias nos projetos.
Em uma situação como essa, você pode configurar as políticas da seguinte maneira:
- Conceda o papel de administrador de rede do Compute
(
roles/compute.networkAdmin) ao administrador de rede e segurança, Kalani, no nível da organização. Esse papel permite que Kalani faça alterações nos recursos de rede na organização e em qualquer projeto dessa organização. - Conceda o papel de Administrador da instância do Compute
(
roles/compute.instanceAdmin) a um líder da equipe de desenvolvimento, Nur, no projetoproject_2. Esse papel permite que Nur execute qualquer ação nas instâncias, impedindo que ela faça alterações nos recursos de rede associados ao projeto. No entanto, não permite que ela faça alterações nos recursos de rede em outros projetos.
Permissões para visualizar políticas herdadas
Para visualizar as políticas do IAM herdadas de um recurso pai, você precisa da permissão para visualizar a política do IAM do recurso pai. Por exemplo, para visualizar todas as políticas do IAM herdadas por um projeto, você precisa da permissão para visualizar a política do IAM da organização pai do projeto e para visualizar as políticas do IAM de todas as pastas mãe.
Para ter as permissões necessárias para visualizar as políticas do IAM herdadas de recursos pai, peça ao administrador para conceder a você os seguintes papéis do IAM:
-
Visualizar uma política do IAM herdada de uma organização:
administrador da organização (
roles/resourcemanager.organizationAdmin) na organização -
Visualizar uma política do IAM herdada de uma pasta:
administrador de pastas (
roles/resourcemanager.folderAdmin) na pasta -
Visualizar uma política do IAM herdada de um projeto:
administrador do IAM do projeto (
roles/resourcemanager.projectIamAdmin) no projeto
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esses papéis predefinidos contêm as permissões necessárias para visualizar as políticas do IAM herdadas de recursos pai. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As permissões a seguir são necessárias para visualizar as políticas do IAM herdadas de recursos pai:
-
Visualizar uma política do IAM herdada de uma organização:
resourcemanager.organizations.getIamPolicyna organização -
Visualizar uma política do IAM herdada de uma pasta:
resourcemanager.folders.getIamPolicyna pasta -
Visualizar uma política do IAM herdada de um projeto:
resourcemanager.projects.getIamPolicyno projeto
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
.Práticas recomendadas
Espelhe a estrutura de hierarquia de recursos do Google Cloud na estrutura da organização. Google Cloud A Google Cloud hierarquia de recursos precisa refletir como a empresa é organizada, seja uma startup, uma PME ou uma grande corporação. Uma startup pode começar com uma hierarquia de recursos simples, sem o recurso de organização. À medida que mais colaboradores são incluídos nos projetos e a quantidade de projetos aumenta, faz mais sentido ter um recurso de organização. Recomendamos esse recurso para grandes empresas com vários departamentos e equipes, em que cada equipe é responsável pelo próprio conjunto de aplicativos e serviços.
Use projetos para agrupar recursos que compartilham o mesmo limite de confiança. Por exemplo, recursos para o mesmo produto ou microsserviço podem pertencer ao mesmo projeto.
Quando possível, conceda papéis a um grupo, não a usuários individuais. É mais fácil gerenciar membros em um grupo do que atualizar uma política do IAM. Controle a propriedade do grupo usado nas políticas do IAM.
Para mais informações sobre como gerenciar os Grupos do Google, consulte a Ajuda dos Grupos do Google.
Use o princípio de segurança do privilégio mínimo ao conceder papéis do IAM, ou seja, dê o mínimo de acesso necessário aos recursos.
Para encontrar o papel predefinido apropriado, consulte a referência de papéis predefinidos. Se não houver papéis predefinidos apropriados, também é possível criar seus próprios papéis personalizados.
Conceda papéis com o menor escopo necessário. Por exemplo, se um usuário precisa apenas publicar mensagens em um tópico do Pub/Sub, conceda o papel de Publicador desse tópico.
Lembre-se de que as políticas de permissão para recursos filhos herdam as políticas de permissão dos recursos pais. Por exemplo, se a política de um projeto conceder a um usuário a capacidade de administrar instâncias de máquina virtual (VM) do Compute Engine, ele poderá administrar qualquer VM do Compute Engine nesse projeto, independentemente da política definida em cada VM.
Em todos os projetos, verifique se pelo menos dois principais têm o papel de Proprietário (
roles/owner). Como alternativa, conceda o papel de Proprietário a um grupo que contém pelo menos dois principais.Essa prática ajuda a garantir que, se um dos principais sair da empresa, você ainda terá uma maneira de gerenciar o projeto.
Se você precisar conceder um papel a um usuário ou grupo presente em vários projetos, defina esse papel no nível da pasta em vez de defini-lo no nível do projeto.
Utilize etiquetas para fazer anotações, agrupar e filtrar recursos.
Faça uma auditoria nas políticas para garantir a conformidade. Os registros de auditoria contêm todas as chamadas
setIamPolicy()para que você possa rastrear quando uma política de permissão foi criada ou modificada.Faça uma auditoria da propriedade e da filiação dos grupos usados nas políticas do IAM.
Se você quiser limitar a criação de projetos na organização, altere a política de acesso da organização para conceder o papel de Criador de projetos a um Grupo gerenciado por você.