Workloads GKE precisam acessar APIs do GCP sem gerenciar chaves de contas de serviço.
→Habilite e configure o Workload Identity no cluster GKE. Mapeie Contas de Serviço do Kubernetes (KSA) para Contas de Serviço do Google (GSA).
Por quê: Elimina o risco de vazamento de chaves de contas de serviço usando credenciais de curta duração, automaticamente rotacionadas, derivadas de tokens KSA.
Referência↗
Forneça acesso a aplicativos web internos de qualquer rede com base na identidade do usuário e postura do dispositivo, sem uma VPN.
→Use o Identity-Aware Proxy (IAP) com o Access Context Manager. Defina níveis de acesso baseados em IP, estado do dispositivo (via Verificação de Endpoint) e identidade do usuário.
Por quê: Move o controle de acesso do perímetro da rede para usuários e dispositivos individuais, aplicando princípios de confiança zero.
Referência↗
Um pipeline de CI/CD (ex: GitHub Actions, GitLab) precisa acessar recursos do GCP sem credenciais de longa duração.
→Use Workload Identity Federation. Crie um pool de provedores para o IdP externo (ex: GitHub OIDC) e configure condições de atributos para restringir o acesso a repositórios ou branches específicos.
Por quê: Autenticação sem chave para workloads externas. O sistema externo fornece seu próprio token, que é trocado por um token GCP de curta duração.
Aplique políticas de segurança do IAM em toda a organização, como impedir a criação de chaves de conta de serviço ou restringir concessões de IAM a domínios específicos.
→Use restrições da Política da Organização como `iam.disableServiceAccountKeyCreation` e `iam.allowedPolicyMemberDomains`.
Por quê: As Políticas da Organização são herdadas e não podem ser sobrescritas por proprietários de projetos, garantindo uma postura de segurança consistente.
Um usuário precisa de acesso administrativo temporário, auditável e aprovado a um ambiente de produção para um incidente.
→Use o Privileged Access Manager (PAM) para acesso just-in-time (JIT). O usuário solicita uma função específica por um tempo limitado, que passa por um fluxo de trabalho de aprovação.
Por quê: Elimina privilégios permanentes, um grande risco de segurança. O acesso é limitado no tempo, justificado e totalmente auditado.
Múltiplas equipes compartilham um cluster GKE. Cada equipe deve gerenciar recursos apenas dentro de seu próprio namespace.
→Conceda a função IAM `roles/container.clusterViewer` no nível do projeto. Use Kubernetes RBAC `Role` e `RoleBinding` dentro de cada namespace para conceder permissões específicas (ex: editar, visualizar).
Por quê: Separa a autenticação em nível de cluster (IAM) da autorização em nível de namespace (Kubernetes RBAC), fornecendo controle multi-tenant e de granularidade fina.
APIs devem ser chamadas usando credenciais de curta duração em vez de chaves estáticas.
→Use a personificação de conta de serviço. Conceda a um principal a função `roles/iam.serviceAccountTokenCreator` em uma conta de serviço de destino para gerar tokens de acesso OAuth 2.0 de curta duração.
Por quê: Evita a distribuição e o gerenciamento de chaves de longa duração. Os tokens expiram automaticamente (padrão de 1 hora), reduzindo o risco em caso de comprometimento.
Um contratado precisa de acesso a recursos específicos, mas o acesso deve expirar automaticamente após 30 dias.
→Conceda a função IAM necessária com uma Condição IAM baseada em tempo, ex: `request.time < timestamp("YYYY-MM-DDTHH:MM:SSZ")`.
Por quê: Automatiza a revogação de acesso, evitando a limpeza manual e garantindo que o acesso não seja prolongado inadvertidamente.
Permita que apenas imagens de contêiner que foram assinadas pelo pipeline de CI/CD sejam implantadas em clusters GKE de produção.
→Implemente a Autorização Binária. Crie uma atestação no pipeline de CI para assinar imagens. Configure uma política de Autorização Binária no cluster GKE para exigir esta atestação.
Por quê: Aplica uma cadeia de suprimentos de software segura, impedindo que imagens não verificadas ou adulteradas sejam executadas em produção.
Referência↗
Conceda permissões a recursos com base em suas tags atribuídas, não em nomes de recursos individuais.
→Use Condições IAM com expressões de tags de recurso, como `resource.matchTag("123456789/env", "prod")`.
Por quê: Permite controle de acesso baseado em atributos (ABAC) escalável. As permissões são dinâmicas e aplicadas automaticamente à medida que os recursos são marcados com tags.
Permita que um projeto de serviço implante VMs em um projeto host de Shared VPC sem conceder direitos de administrador de rede.
→No projeto host, conceda à conta de serviço do projeto de serviço a função `roles/compute.networkUser` na(s) sub-rede(s) específica(s) que ela precisa usar.
Por quê: Segue o princípio do privilégio mínimo. Projetos de serviço podem usar a rede, mas não podem modificá-la (ex: alterar regras de firewall), que permanece gerenciada centralmente.
Um usuário com `storage.admin` não consegue criar um bucket. Você precisa identificar a causa raiz.
→Verifique se há uma Política de Negação do IAM em um nível superior (pasta, organização) que negue a permissão `storage.buckets.create`.
Por quê: As políticas de negação do IAM sempre sobrepõem quaisquer políticas de permissão. Esta é uma ferramenta poderosa para impor limites de segurança não negociáveis.
Habilite SSO para usuários do Active Directory on-premises acessarem o console do Google Cloud.
→Use o Google Cloud Directory Sync (GCDS) para sincronizar identidades com o Cloud Identity. Configure a federação (SAML) entre o Cloud Identity e o AD FS (ou outro IdP).
Por quê: Mantém o AD como a fonte da verdade para identidades, enquanto fornece uma experiência SSO federada e sem interrupções para os usuários.