top of page

Gerenciar Acessos e Proteger Seus Recursos na Nuvem (GCP)

Atualizado: 1 de out.

Na jornada para a nuvem, um dos pilares mais críticos para qualquer organização é a segurança. E quando falamos de Google Cloud Platform (GCP), o coração da segurança de acesso é o Cloud Identity and Access Management (IAM). Muitos o conhecem superficialmente, aplicando permissões de forma básica. No entanto, para extrair todo o seu potencial e garantir uma arquitetura robusta e segura, é preciso ir além.


Neste artigo, vamos mergulhar fundo no Google Cloud IAM, desvendando seus componentes, hierarquia e as melhores práticas que vão transformar a forma como você gerencia o acesso aos seus recursos.


ree

Por que o "Quem pode fazer o quê, em qual recurso?" é tão crucial?


Imagine o seguinte cenário: sua empresa está crescendo, novos projetos surgem, equipes são formadas e a quantidade de recursos no GCP (máquinas virtuais, bancos de dados, buckets de armazenamento) se multiplica rapidamente. Como garantir que um desenvolvedor júnior não tenha permissão para deletar um banco de dados de produção? Ou que um analista de dados tenha acesso apenas aos datasets que lhe competem?


É exatamente aqui que o Cloud IAM entra. Ele é o serviço que permite conceder acesso granular a recursos específicos do Google Cloud e impede o acesso a outros. O IAM permite que você adote o princípio de segurança do menor privilégio (Principle of Least Privilege), garantindo que usuários, aplicações e serviços tenham apenas as permissões estritamente necessárias para realizar suas tarefas.


Desvendando os Componentes do Cloud IAM


Para dominar o IAM, precisamos entender seus três pilares fundamentais: Quem (Principal), Pode Fazer o Quê (Papel) e Em Qual Recurso (Recurso).


1. Principal (Quem?): Os Atores do Seu Ambiente


O "Principal" representa a identidade que está solicitando o acesso. No GCP, temos diferentes tipos de principais:

  • Conta do Google: Um usuário final (ex: michelle.santana@email.com).

  • Conta de Serviço (Service Account): Uma identidade para uma aplicação ou máquina virtual, não para uma pessoa. É a forma como suas aplicações se autenticam e são autorizadas a usar outros serviços do GCP.

  • Grupo do Google: Uma coleção de Contas do Google e/ou Contas de Serviço. Gerenciar permissões para um grupo (dev-team@suaempresa.com) é muito mais eficiente do que para usuários individuais.

  • Domínio do Google Workspace ou Cloud Identity: Permite conceder permissões a todos os usuários de um domínio.

  • allUsers e allAuthenticatedUsers: Identificadores especiais para permitir acesso público ou a qualquer usuário autenticado com uma Conta do Google, respectivamente. Use com extremo cuidado!


2. Papel (Pode fazer o quê?): A Definição das Permissões


Um "Papel" (Role) é uma coleção de permissões. Em vez de atribuir permissões individuais (como compute.instances.create ou storage.objects.get), você atribui um papel que já agrupa as permissões necessárias para uma determinada função.


Existem três categorias de papéis:

  • Papéis Básicos (Basic Roles): Os mais antigos e amplos (Proprietário, Editor e Visualizador). Evite-os em ambientes de produção! Eles são muito abrangentes. Um Editor de um projeto pode apagar praticamente qualquer recurso dentro dele.

  • Papéis Predefinidos (Predefined Roles): A melhor escolha na maioria dos casos. O Google oferece uma vasta gama de papéis granulares para serviços específicos, como roles/compute.instanceAdmin.v1 ou roles/storage.objectAdmin. Eles permitem aplicar o princípio do menor privilégio de forma eficaz.

  • Papéis Personalizados (Custom Roles): Quando os papéis predefinidos não atendem exatamente à sua necessidade, você pode criar um papel personalizado, combinando as permissões que desejar.


3. Recurso (Em qual?): A Hierarquia de Aplicação


A beleza do GCP IAM está na sua hierarquia de recursos. As permissões fluem de cima para baixo, do nó da Organização até os recursos individuais. A estrutura típica é:


Organização -> Pastas -> Projetos -> Recursos


Uma Política do IAM (IAM Policy) é o que conecta um ou mais principais a um papel. Essa política é anexada a um recurso na hierarquia.


Exemplo Prático: Se você concede o papel roles/compute.viewer a um usuário no nível do Projeto, ele poderá visualizar todas as instâncias do Compute Engine dentro daquele projeto. Se, no entanto, você aplicar essa mesma permissão diretamente a uma instância de VM específica, ele só poderá visualizar aquela VM, e nenhuma outra.


Exemplo de Código: Vinculando uma Política com gcloud


Vamos ver como isso funciona na prática. Suponha que queremos dar a uma conta de serviço a permissão para administrar buckets do Cloud Storage em um projeto específico.

# ID do seu projeto
export PROJECT_ID="seu-projeto-gcp"

# Nome da sua conta de serviço
export SA_NAME="storage-admin-sa"

# E-mail completo da conta de serviço
export SA_EMAIL="${SA_NAME}@${PROJECT_ID}.iam.gserviceaccount.com"

# Criar a conta de serviço
gcloud iam service-accounts create ${SA_NAME} \
  --display-name="Service Account para Admin de Storage"

# Vincular o papel de Administrador do Storage ao projeto para essa conta de serviço
gcloud projects add-iam-policy-binding ${PROJECT_ID} \
  --member="serviceAccount:${SA_EMAIL}" \
  --role="roles/storage.admin"

Neste script:

  1. Criamos uma conta de serviço.

  2. Usamos o comando add-iam-policy-binding para vincular (binding) o member (nossa conta de serviço) ao role (roles/storage.admin) no nível do projects. A política do IAM do projeto é atualizada com essa nova entrada.


Casos de Uso em Cenários Reais


A teoria é fundamental, mas vamos aplicá-la a cenários do dia a dia de um especialista em nuvem.

  • Cenário 1: Pipeline de CI/CD Seguro

    • Desafio: Uma ferramenta de integração contínua (como Jenkins ou GitLab) precisa fazer o deploy de uma nova versão de uma aplicação no Google Kubernetes Engine (GKE) e no Cloud Run.

    • Solução IAM: Crie uma Conta de Serviço dedicada para o pipeline. Conceda a essa conta os papéis roles/container.developer (para o GKE) e roles/run.admin (para o Cloud Run) apenas no projeto de produção. A ferramenta de CI/CD usará a chave dessa conta de serviço para se autenticar, garantindo que ela tenha permissão para fazer o deploy, mas não para, por exemplo, deletar o cluster GKE ou modificar regras de firewall.


  • Cenário 2: Equipe de Análise de Dados

    • Desafio: Analistas de dados precisam acessar datasets no BigQuery para criar relatórios, mas não podem ter acesso para modificar ou deletar tabelas. Além disso, eles precisam ler arquivos de um bucket específico no Cloud Storage onde os dados brutos são depositados.

    • Solução IAM: Crie um Grupo do Google chamado analistas-dados@suaempresa.com.

      1. No projeto de dados, conceda ao grupo o papel roles/bigquery.dataViewer e roles/bigquery.jobUser.

      2. Vá até o bucket específico do Cloud Storage e conceda ao mesmo grupo o papel roles/storage.objectViewer.

    • Resultado: Os analistas podem ler os dados de onde precisam, sem nenhum acesso de escrita. Se um novo analista entrar na equipe, basta adicioná-lo ao grupo do Google, e ele herdará automaticamente todas as permissões corretas.


  • Cenário 3: Auditoria de Segurança

    • Desafio: Uma equipe de auditoria externa precisa verificar as configurações de segurança de todos os projetos da organização, mas não pode modificar absolutamente nada.

    • Solução IAM: No nível da Organização (o nó mais alto da hierarquia), conceda aos auditores o papel roles/cloudasset.viewer. Este papel permite visualizar metadados e políticas de todos os recursos da organização, sendo perfeito para uma auditoria não invasiva.


Dominar o Google Cloud IAM é deixar de ser apenas um usuário da nuvem para se tornar um arquiteto de soluções seguras, escaláveis e bem governadas. Comece sempre pelo menor privilégio, prefira papéis predefinidos e gerencie identidades através de grupos. Com esses princípios, você estará no caminho certo para construir um ambiente GCP robusto e confiável.

Comentários


bottom of page