Communitygithub.com

Auditoria de Permissões IAM do GCP

Auditar permissões IAM do Google Cloud Platform para identificar permissões excessivas e reduzir riscos de segurança.

O que é Auditoria de Permissões IAM do GCP?

Esta skill permite auditar permissões IAM em organizações e projetos do Google Cloud Platform (GCP), identificando binds excessivos, contas de serviço com permissões exageradas, chaves gerenciadas por usuários e riscos de delegação em todo o domínio. Ela utiliza ferramentas como gcloud CLI, IAM Recommender, Policy Analyzer e Cloud Asset Inventory para mapear, analisar e recomendar a redução de privilégios, promovendo o princípio do menor privilégio. A skill suporta ambientes de produção e conformidade, fornecendo fluxos de auditoria completos que incluem enumeração de binds, verificação de contas de serviço, análise de recomendações e geração de relatórios. É essencial para equipes de segurança e operações que precisam reduzir a superfície de ataque de comprometimentos de identidade no GCP.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mukul975/Anthropic-Cybersecurity-Skills/tree/main/skills/auditing-gcp-iam-permissions

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que Auditoria de Permissões IAM do GCP faz?

Quando Usar

  • Ao realizar avaliações de segurança de configurações IAM de organizações ou projetos GCP
  • Ao identificar contas de serviço com permissões excessivas ou acesso não utilizado
  • Quando requisitos de conformidade exigem revisão de controles de acesso e atribuições de papéis
  • Ao investigar possíveis movimentações laterais através de configurações incorretas de IAM
  • Ao reduzir o raio de explosão de credenciais comprometidas limitando permissões

Não use para auditoria de regras de firewall de VPC (use ferramentas de segurança de rede), para auditoria RBAC do GKE (use ferramentas RBAC específicas do Kubernetes) ou para detecção de ameaças em tempo real em ações do IAM (use SCC Event Threat Detection).

Pré-requisitos

  • Organização ou projeto GCP com roles/iam.securityReviewer e roles/cloudAsset.viewer
  • gcloud CLI autenticada com permissões apropriadas
  • Cloud Asset API ativada (gcloud services enable cloudasset.googleapis.com)
  • IAM Recommender API ativada (gcloud services enable recommender.googleapis.com)
  • Policy Analyzer API ativada (gcloud services enable policyanalyzer.googleapis.com)

Fluxo de Trabalho

Passo 1: Enumeração de Bindings IAM na Organização

Listar todos os bindings IAM nos níveis de organização, pasta e projeto para entender o panorama completo de acesso.

# Bindings IAM no nível da organização
gcloud organizations get-iam-policy ORG_ID \
  --format=json > org-iam-policy.json

# Buscar todas as políticas IAM na organização
gcloud asset search-all-iam-policies \
  --scope=organizations/ORG_ID \
  --format="table(resource, policy.bindings.role, policy.bindings.members)" \
  --limit=500

# Encontrar todos os usuários e contas de serviço com papel Owner
gcloud asset search-all-iam-policies \
  --scope=organizations/ORG_ID \
  --query="policy:roles/owner" \
  --format="table(resource, policy.bindings.members)"

# Encontrar todos os bindings usando papéis primitivos (Owner, Editor, Viewer)
gcloud asset search-all-iam-policies \
  --scope=organizations/ORG_ID \
  --query="policy:roles/owner OR policy:roles/editor" \
  --format=json | python3 -c "
import json, sys
data = json.load(sys.stdin)
for result in data:
    resource = result.get('resource', '')
    for binding in result.get('policy', {}).get('bindings', []):
        role = binding.get('role', '')
        if role in ['roles/owner', 'roles/editor']:
            for member in binding.get('members', []):
                print(f'{resource} | {role} | {member}')
"

Passo 2: Auditoria de Contas de Serviço e Suas Chaves

Identificar contas de serviço com permissões excessivas, chaves gerenciadas por usuários e contas não utilizadas.

# Listar todas as contas de serviço em um projeto
gcloud iam service-accounts list \
  --project=PROJECT_ID \
  --format="table(email, displayName, disabled)"

# Verificar chaves gerenciadas por usuário (devem ser minimizadas)
for sa in $(gcloud iam service-accounts list --project=PROJECT_ID --format="value(email)"); do
  keys=$(gcloud iam service-accounts keys list \
    --iam-account="$sa" \
    --managed-by=user \
    --format="table(name.basename(),validAfterTime,validBeforeTime)")
  if [ -n "$keys" ]; then
    echo "=== $sa ==="
    echo "$keys"
  fi
done

# Encontrar contas de serviço com papéis de administrador em todos os projetos
gcloud asset search-all-iam-policies \
  --scope=organizations/ORG_ID \
  --query="policy.bindings.members:serviceAccount AND (policy:roles/owner OR policy:roles/editor OR policy:admin)" \
  --format="table(resource, policy.bindings.role, policy.bindings.members)"

# Verificar políticas IAM de contas de serviço (quem pode personificar)
for sa in $(gcloud iam service-accounts list --project=PROJECT_ID --format="value(email)"); do
  echo "=== $sa ==="
  gcloud iam service-accounts get-iam-policy "$sa" --format=json 2>/dev/null
done

Passo 3: Usar o IAM Recommender para Identificar Permissões Excessivas

Aproveitar o IAM Recommender do GCP para encontrar papéis que concedem mais acesso do que realmente usado.

# Listar recomendações de papéis IAM para um projeto
gcloud recommender recommendations list \
  --project=PROJECT_ID \
  --recommender=google.iam.policy.Recommender \
  --location=global \
  --format="table(name, description, priority, stateInfo.state)"

# Obter recomendação detalhada
gcloud recommender recommendations describe RECOMMENDATION_ID \
  --project=PROJECT_ID \
  --recommender=google.iam.policy.Recommender \
  --location=global \
  --format=json

# Listar insights sobre uso de IAM
gcloud recommender insights list \
  --project=PROJECT_ID \
  --insight-type=google.iam.policy.Insight \
  --location=global \
  --format="table(name, description, severity, category)"

# Aplicar uma recomendação (após revisão)
gcloud recommender recommendations mark-claimed RECOMMENDATION_ID \
  --project=PROJECT_ID \
  --recommender=google.iam.policy.Recommender \
  --location=global \
  --etag=ETAG

Passo 4: Analisar Permissões Efetivas com o Policy Analyzer

Usar o Policy Analyzer para determinar o acesso efetivo para entidades ou recursos específicos.

# Verificar quem tem acesso a um recurso específico
gcloud asset analyze-iam-policy \
  --organization=ORG_ID \
  --full-resource-name="//storage.googleapis.com/projects/_/buckets/sensitive-data-bucket" \
  --format="table(identityList.identities, accessControlLists.accesses.role)"

# Verificar quais recursos um usuário específico pode acessar
gcloud asset analyze-iam-policy \
  --organization=ORG_ID \
  --identity="user:[email protected]" \
  --format="table(accessControlLists.resources.fullResourceName, accessControlLists.accesses.role)"

# Verificar quem pode realizar uma ação específica
gcloud asset analyze-iam-policy \
  --organization=ORG_ID \
  --full-resource-name="//cloudresourcemanager.googleapis.com/projects/PROJECT_ID" \
  --permissions="iam.serviceAccounts.actAs,iam.serviceAccountKeys.create" \
  --format="table(identityList.identities, accessControlLists.accesses.permission)"

# Encontrar todas as entidades com acesso allUsers ou allAuthenticatedUsers
gcloud asset search-all-iam-policies \
  --scope=organizations/ORG_ID \
  --query="policy:allUsers OR policy:allAuthenticatedUsers" \
  --format="table(resource, policy.bindings.role, policy.bindings.members)"

Passo 5: Verificar Riscos de Delegação em Todo o Domínio e Personificação

Identificar contas de serviço com delegação em todo o domínio e capacidades de personificação.

# Verificar contas de serviço com delegação em todo o domínio
# (Requer acesso ao Admin SDK para listar contas delegadas)
gcloud iam service-accounts list --project=PROJECT_ID --format=json | python3 -c "
import json, sys
accounts = json.load(sys.stdin)
for sa in accounts:
    email = sa.get('email', '')
    # Verificar se a SA tem delegação em todo o domínio ativada
    # Isso requer acesso à API Admin SDK
    print(f'SA: {email} - Verifique admin.google.com para status de delegação')
"

# Encontrar contas de serviço que outras identidades podem personificar
for sa in $(gcloud iam service-accounts list --project=PROJECT_ID --format="value(email)"); do
  policy=$(gcloud iam service-accounts get-iam-policy "$sa" --format=json 2>/dev/null)
  if echo "$policy" | python3 -c "
import json, sys
p = json.load(sys.stdin)
for b in p.get('bindings', []):
    if b['role'] in ['roles/iam.serviceAccountTokenCreator', 'roles/iam.serviceAccountUser']:
        print(f'  {b[\"role\"]}: {b[\"members\"]}')
" 2>/dev/null; then
    echo "=== Risco de personificação: $sa ==="
  fi
done

Passo 6: Gerar Relatório de Auditoria e Aplicar Remediação

Compilar descobertas e implementar reduções de permissão recomendadas.

# Remover papel primitivo e substituir por papel predefinido
gcloud projects remove-iam-policy-binding PROJECT_ID \
  --member="user:[email protected]" \
  --role="roles/editor"

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:[email protected]" \
  --role="roles/compute.viewer"

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:[email protected]" \
  --role="roles/storage.objectViewer"

# Excluir chave de conta de serviço não utilizada
gcloud iam service-accounts keys delete KEY_ID \
  --iam-account=SA_EMAIL

# Desabilitar conta de serviço não utilizada
gcloud iam service-accounts disable SA_EMAIL --project=PROJECT_ID

Conceitos-chave

TermoDefinição
Papel PrimitivoPapéis GCP legados (Owner, Editor, Viewer) que concedem permissões amplas em todos os serviços, não recomendados para produção
Papel PredefinidoPapel gerenciado pelo GCP com escopo em serviços e ações específicos, fornecendo acesso mais granular que papéis primitivos
IAM RecommenderServiço baseado em ML do GCP que analisa o uso real de permissões e sugere reduções de papéis para alcançar o menor privilégio
Policy AnalyzerFerramenta para analisar o acesso IAM efetivo na hierarquia da organização, respondendo a consultas de quem-pode-acessar-o-quê
Chave de Conta de ServiçoCredencial gerenciada por usuário para autenticação de conta de serviço, um risco de segurança pois chaves podem ser exportadas e não expiram automaticamente
Delegação em Todo o DomínioConcede a uma conta de serviço a capacidade de personificar qualquer usuário no domínio Google Workspace, um risco significativo de elevação de privilégio

Ferramentas e Sistemas

  • gcloud CLI: Ferramenta principal para consultar e gerenciar políticas IAM do GCP, contas de serviço e bindings de papéis
  • IAM Recommender: Mecanismo de recomendação baseado em ML para reduzir permissões excessivas com base no uso real
  • Policy Analyzer: Ferramenta de análise de acesso efetivo em toda a organização para entender quem pode acessar o quê
  • Cloud Asset Inventory: Pesquisa entre projetos de políticas IAM e metadados de recursos
  • ScoutSuite: Ferramenta de auditoria multi-nuvem com verificações específicas de IAM do GCP para atribuições de papéis e contas de serviço

Cenários Comuns

Cenário: Reduzindo o Uso de Papéis Primitivos em uma Organização GCP

Contexto: Uma auditoria revela que 60% dos bindings IAM na organização usam papéis primitivos (Owner/Editor). A equipe de segurança precisa migrar para papéis predefinidos sem interromper os fluxos de trabalho dos desenvolvedores.

Abordagem:

  1. Executar gcloud asset search-all-iam-policies para inventariar todos os bindings de papéis primitivos
  2. Usar o IAM Recommender para obter sugestões baseadas em ML de papéis predefinidos substitutos
  3. Para cada binding, usar o Policy Analyzer para entender o que a entidade realmente acessa
  4. Criar um documento de mapeamento: papel primitivo -> papéis predefinidos específicos necessários
  5. Aplicar papéis predefinidos juntamente com papéis primitivos por um período de teste
  6. Monitorar erros de acesso negado usando Cloud Audit Logs
  7. Remover papéis primitivos após confirmar que não há problemas de acesso por 2 semanas

Armadilhas: Papéis primitivos incluem permissões em todos os serviços GCP, portanto substituí-los requer múltiplos papéis predefinidos. O Recommender pode sugerir papéis excessivamente restritivos se o período de observação não capturar todos os casos de uso. Papéis personalizados podem preencher lacunas onde nenhum papel predefinido corresponde ao conjunto exato de permissões necessário.

Formato de Saída

Relatório de Auditoria de Permissões IAM do GCP
===================================
Organização: acme-org (ORG_ID: 123456789)
Projetos Auditados: 25
Data da Auditoria: 2026-02-23

RESUMO DOS BINDINGS IAM:
  Total de bindings:                    342
  Usando papéis primitivos:             205 (60%)
  Usando papéis predefinidos:           112 (33%)
  Usando papéis personalizados:          25 (7%)

DESCOBERTAS CRÍTICAS:
[IAM-001] Conta de Serviço com Papel Owner
  SA: [email protected]
  Papel: roles/owner no projeto prod-project
  Chaves Gerenciadas por Usuário: 3 (mais antiga: 14 meses)
  Remediação: Substituir por papéis predefinidos específicos, excluir chaves antigas

[IAM-002] Binding allAuthenticatedUsers
  Recurso: gs://public-data-bucket
  Papel: roles/storage.objectViewer
  Risco: Qualquer titular de conta Google pode ler o conteúdo do bucket
  Remediação: Restringir a grupos de usuários ou contas de serviço específicos

SAÚDE DAS CONTAS DE SERVIÇO:
  Total de contas de serviço:            67
  Com chaves gerenciadas por usuário:    23
  Chaves com mais de 90 dias:            18
  Contas não utilizadas (90+ dias):      12
  Com delegação em todo o domínio:        2

SUGESTÕES DO RECOMMENDER:
  Total de recomendações:             45
  Prioridade ALTA:                    12
  Permissões estimadas reduzidas:     2.847 permissões individuais

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

abusing-dpapi-for-credential-access

Extract and decrypt Windows DPAPI-protected secrets (Credential Manager, browser logins/cookies, Wi-Fi credentials, KeePass keys) online or offline using SharpDPAPI, SharpChrome, Mimikatz, or Impacket

abusing-shadow-credentials-for-privesc

Take over Active Directory accounts by writing attacker-controlled public keys to msDS-KeyCredentialLink (Shadow Credentials) with pyWhisker, Whisker, or Certipy, then authenticate via PKINIT to recover the target

achieving-cmmc-level-2-compliance

>-

acquiring-disk-image-with-dd-and-dcfldd

Create forensically sound bit-for-bit disk images with dd or dcfldd on a Linux forensic workstation, preserving evidence integrity through hash verification (MD5/SHA) during acquisition. Use when imaging a suspect drive, USB device, or memory card for investigation, preserving volatile disk evidence during incident response, or producing a verified copy for legal or law-enforcement proceedings before any destructive analysis.

analyzing-active-directory-acl-abuse

Detect dangerous ACL misconfigurations in Active Directory using ldap3

analyzing-android-malware-with-apktool

Perform static analysis of Android APK malware using apktool for resource decompilation, jadx for Java source recovery, and androguard for manifest inspection, dangerous permission-combination detection, and identification of obfuscated code, dynamic code loading, and reflection-based API calls. Use to statically triage a suspicious APK without executing it or to build mobile malware detection rules.

analyzing-api-gateway-access-logs

Parses API Gateway access logs (AWS API Gateway, Kong, Nginx) to detect

analyzing-apt-group-with-mitre-navigator

Query ATT&CK data with attackcti, mitreattack-python, and stix2, then build MITRE ATT&CK Navigator layers and multi-layer heatmap overlays mapping one or more APT groups

analyzing-azure-activity-logs-for-threats

Queries Azure Monitor activity logs and sign-in logs via azure-monitor-query

analyzing-bootkit-and-rootkit-samples

Analyzes bootkit and advanced rootkit malware infecting the Master

analyzing-browser-forensics-with-hindsight

Parse Chromium-based browser databases with Hindsight to extract and correlate browsing history, downloads, cookies, cached content, autofill data, saved passwords, and extensions from Chrome, Edge, Brave, Opera, and Vivaldi into a unified timeline (XLSX, JSON, or SQLite output). Use during incident response, insider-threat investigations, or criminal cases when you need to reconstruct a user

analyzing-campaign-attribution-evidence

Systematically evaluate cyber-campaign evidence to attribute an operation to a threat actor, using the Diamond Model and Analysis of Competing Hypotheses (ACH) to weigh infrastructure overlaps, TTP consistency, malware code similarity, and timing/language artifacts into confidence-weighted attribution assessments. Use when an incident investigation needs a defensible attribution confidence level.

analyzing-certificate-transparency-for-phishing

Monitor Certificate Transparency logs using crt.sh and Certstream to

analyzing-cloud-storage-access-patterns

Detect abnormal access in AWS S3, GCS, and Azure Blob Storage by analyzing CloudTrail Data Events, GCS audit logs, and Azure Storage Analytics for after-hours bulk downloads, new-IP access, and API-call spikes (e.g. GetObject) via statistical baselines and time-series anomaly detection. Use when investigating suspected cloud data exfiltration or building related detection rules.

analyzing-cobalt-strike-beacon-configuration

Extract and analyze Cobalt Strike beacon configuration from PE files

analyzing-cobaltstrike-malleable-c2-profiles

Parse and analyze Cobalt Strike Malleable C2 profiles with dissect.cobaltstrike (profiles and beacon-payload configs) and pyMalleableC2 (AST parsing) to extract HTTP/DNS transforms, URIs, headers, sleep/jitter, and injection behavior, then generate network detection signatures. Use when reverse-engineering a captured malleable profile or building detections against Cobalt Strike Beacon traffic.

analyzing-command-and-control-communication

Analyzes malware C2 communication over HTTP, HTTPS, DNS, and custom

analyzing-cyber-kill-chain

Analyzes intrusion activity against the Lockheed Martin Cyber Kill Chain

analyzing-disk-image-with-autopsy

Perform comprehensive forensic analysis of raw (dd), E01, or AFF disk images with Autopsy and The Sleuth Kit, recovering deleted files, examining metadata and embedded artifacts, keyword searching, and building investigation timelines with visual reports. Use for structured analysis of a forensic disk image or when stakeholders need visual reports from evidence.

analyzing-dns-logs-for-exfiltration

Analyzes DNS query logs to detect data exfiltration via DNS tunneling,

Habilidades Relacionadas