Communitygithub.com

auditing-gcp-iam-permissions

Prüfung von Google Cloud Platform IAM-Berechtigungen, um übermäßig weitreichende Zugriffe zu identifizieren.

Was ist auditing-gcp-iam-permissions?

Diese Skill-Anleitung führt dich durch die systematische Prüfung von IAM-Berechtigungen in der Google Cloud Platform (GCP). Sie hilft dir, übermäßig weitreichende Rollen, ungenutzte Dienstkonten und Sicherheitsrisiken wie domainsweite Delegation zu erkennen. Die Anleitung unterstützt gcloud CLI, Cloud Asset Inventory, IAM Recommender und Policy Analyzer und eignet sich für Sicherheitsbewertungen auf Organisations-, Ordner- und Projektebene. Der Workflow umfasst die Aufzählung aller IAM-Bindungen, die Prüfung von Dienstkonten und deren Schlüsseln, die Nutzung des IAM Recommenders zur Identifikation überflüssiger Berechtigungen, die Analyse effektiver Zugriffsrechte mit dem Policy Analyzer sowie die Suche nach Domänenweitergabe und Identitätswechselrisiken. Abschließend wird die Erstellung eines Prüfberichts und die Umsetzung von Abhilfemaßnahmen beschrieben.

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

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Prüfung von GCP IAM-Berechtigungen

Verwendungszweck

  • Bei der Durchführung von Sicherheitsbewertungen von IAM-Konfigurationen auf GCP-Organisations- oder Projektebene
  • Bei der Identifizierung von Dienstkonten mit übermäßigen Berechtigungen oder ungenutztem Zugriff
  • Wenn Compliance-Anforderungen eine Überprüfung von Zugriffskontrollen und Rollenzuweisungen vorschreiben
  • Bei der Untersuchung möglicher lateraler Bewegungen durch IAM-Fehlkonfigurationen
  • Bei der Verringerung des Explosionsradius kompromittierter Anmeldedaten durch Eingrenzung von Berechtigungen

Nicht verwenden für die Prüfung von VPC-Firewall-Regeln (Netzwerksicherheitstools verwenden), für die GKE-RBAC-Prüfung (Kubernetes-spezifische RBAC-Tools verwenden) oder für die Echtzeit-Bedrohungserkennung von IAM-Aktionen (SCC Event Threat Detection verwenden).

Voraussetzungen

  • GCP-Organisation oder -Projekt mit roles/iam.securityReviewer und roles/cloudAsset.viewer
  • gcloud CLI mit entsprechenden Berechtigungen authentifiziert
  • Cloud Asset API aktiviert (gcloud services enable cloudasset.googleapis.com)
  • IAM Recommender API aktiviert (gcloud services enable recommender.googleapis.com)
  • Policy Analyzer API aktiviert (gcloud services enable policyanalyzer.googleapis.com)

Arbeitsablauf

Schritt 1: IAM-Bindungen organisationsweit auflisten

Liste alle IAM-Bindungen auf Organisations-, Ordner- und Projektebene auf, um die gesamte Zugriffslandschaft zu verstehen.

# IAM-Bindungen auf Organisationsebene
gcloud organizations get-iam-policy ORG_ID \
  --format=json > org-iam-policy.json

# Alle IAM-Richtlinien organisationsweit durchsuchen
gcloud asset search-all-iam-policies \
  --scope=organizations/ORG_ID \
  --format="table(resource, policy.bindings.role, policy.bindings.members)" \
  --limit=500

# Alle Benutzer und Dienstkonten mit der Rolle "Owner" finden
gcloud asset search-all-iam-policies \
  --scope=organizations/ORG_ID \
  --query="policy:roles/owner" \
  --format="table(resource, policy.bindings.members)"

# Alle Bindungen mit primitiven Rollen (Owner, Editor, Viewer) finden
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}')
"

Schritt 2: Dienstkonten und ihre Schlüssel prüfen

Identifiziere Dienstkonten mit übermäßigen Berechtigungen, benutzermanaged Schlüsseln und ungenutzten Konten.

# Alle Dienstkonten in einem Projekt auflisten
gcloud iam service-accounts list \
  --project=PROJECT_ID \
  --format="table(email, displayName, disabled)"

# Auf benutzermanagte Schlüssel prüfen (sollten minimiert werden)
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

# Dienstkonten mit Admin-Rollen in allen Projekten finden
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)"

# IAM-Richtlinien von Dienstkonten prüfen (wer kann sich ausgeben)
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

Schritt 3: IAM Recommender zur Identifizierung übermäßiger Berechtigungen nutzen

Nutze den IAM Recommender von GCP, um Rollen zu finden, die mehr Zugriff gewähren als tatsächlich genutzt.

# IAM-Rollenempfehlungen für ein Projekt auflisten
gcloud recommender recommendations list \
  --project=PROJECT_ID \
  --recommender=google.iam.policy.Recommender \
  --location=global \
  --format="table(name, description, priority, stateInfo.state)"

# Detaillierte Empfehlung abrufen
gcloud recommender recommendations describe RECOMMENDATION_ID \
  --project=PROJECT_ID \
  --recommender=google.iam.policy.Recommender \
  --location=global \
  --format=json

# Einblicke zur IAM-Nutzung auflisten
gcloud recommender insights list \
  --project=PROJECT_ID \
  --insight-type=google.iam.policy.Insight \
  --location=global \
  --format="table(name, description, severity, category)"

# Empfehlung anwenden (nach Überprüfung)
gcloud recommender recommendations mark-claimed RECOMMENDATION_ID \
  --project=PROJECT_ID \
  --recommender=google.iam.policy.Recommender \
  --location=global \
  --etag=ETAG

Schritt 4: Effektive Berechtigungen mit Policy Analyzer analysieren

Nutze Policy Analyzer, um den effektiven Zugriff für bestimmte Prinzipale oder Ressourcen zu ermitteln.

# Prüfen, wer Zugriff auf eine bestimmte Ressource hat
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)"

# Prüfen, auf welche Ressourcen ein bestimmter Benutzer zugreifen kann
gcloud asset analyze-iam-policy \
  --organization=ORG_ID \
  --identity="user:[email protected]" \
  --format="table(accessControlLists.resources.fullResourceName, accessControlLists.accesses.role)"

# Prüfen, wer eine bestimmte Aktion ausführen kann
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)"

# Alle Prinzipale mit allUsers- oder allAuthenticatedUsers-Zugriff finden
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)"

Schritt 5: Auf Domänenweite Delegation und Identitätswechselrisiken prüfen

Identifiziere Dienstkonten mit domänenweiter Delegation und Identitätswechselfähigkeiten.

# Auf Dienstkonten mit domänenweiter Delegation prüfen
# (Erfordert Admin SDK-Zugriff zum Auflisten delegierter Konten)
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', '')
    # Prüfen, ob das Dienstkonto die domänenweite Delegation aktiviert hat
    # Dies erfordert Admin SDK API-Zugriff
    print(f'SA: {email} - Überprüfe admin.google.com auf Delegationsstatus')
"

# Dienstkonten finden, die von anderen Identitäten verwendet werden können
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 "=== Identitätswechselrisiko: $sa ==="
  fi
done

Schritt 6: Prüfbericht erstellen und Korrekturen anwenden

Fasse die Ergebnisse zusammen und setze empfohlene Berechtigungsreduzierungen um.

# Primitive Rolle entfernen und durch vordefinierte Rolle ersetzen
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"

# Ungenutzte Dienstkontoschlüssel löschen
gcloud iam service-accounts keys delete KEY_ID \
  --iam-account=SA_EMAIL

# Ungenutzte Dienstkonten deaktivieren
gcloud iam service-accounts disable SA_EMAIL --project=PROJECT_ID

Wichtige Konzepte

BegriffDefinition
Primitive RolleLegacy-GCP-Rollen (Owner, Editor, Viewer), die breite Berechtigungen über alle Dienste hinweg gewähren, nicht für die Produktion empfohlen
Vordefinierte RolleVon GCP verwaltete Rolle, die auf bestimmte Dienste und Aktionen beschränkt ist und einen granulareren Zugriff als primitive Rollen bietet
IAM RecommenderGCP-ML-basierter Dienst, der die tatsächliche Berechtigungsnutzung analysiert und Rollenreduzierungen zur Erreichung des Least-Privilege-Prinzips vorschlägt
Policy AnalyzerTool zur Analyse des effektiven IAM-Zugriffs in der Organisationshierarchie, das „Wer kann worauf zugreifen?“-Abfragen beantwortet
DienstkontoschlüsselBenutzermanagte Anmeldedaten für die Authentifizierung von Dienstkonten; ein Sicherheitsrisiko, da Schlüssel exportiert werden können und nicht automatisch ablaufen
Domänenweite DelegationGewährt einem Dienstkonto die Möglichkeit, jeden Benutzer in der Google Workspace-Domain zu impersonieren; ein erhebliches Risiko für Privilegienausweitung

Tools & Systeme

  • gcloud CLI: Primäres Tool zum Abfragen und Verwalten von GCP IAM-Richtlinien, Dienstkonten und Rollenbindungen
  • IAM Recommender: ML-basierte Empfehlungsmaschine zur Reduzierung übermäßiger Berechtigungen basierend auf der tatsächlichen Nutzung
  • Policy Analyzer: Organisationsweites Tool zur Analyse effektiver Zugriffe, um zu verstehen, wer auf was zugreifen kann
  • Cloud Asset Inventory: Projektübergreifende Suche nach IAM-Richtlinien und Ressourcenmetadaten
  • ScoutSuite: Multi-Cloud-Auditing-Tool mit GCP-IAM-spezifischen Prüfungen für Rollenzuweisungen und Dienstkonten

Häufige Szenarien

Szenario: Reduzierung der Nutzung primitiver Rollen in einer GCP-Organisation

Kontext: Ein Audit zeigt, dass 60 % der IAM-Bindungen in der Organisation primitive Rollen (Owner/Editor) verwenden. Das Sicherheitsteam muss zu vordefinierten Rollen migrieren, ohne die Arbeitsabläufe der Entwickler zu stören.

Vorgehen:

  1. Führe gcloud asset search-all-iam-policies aus, um alle primitiven Rollenbindungen zu erfassen
  2. Nutze IAM Recommender, um ML-basierte Vorschläge für ersetzende vordefinierte Rollen zu erhalten
  3. Verwende für jede Bindung Policy Analyzer, um zu verstehen, worauf der Prinzipal tatsächlich zugreift
  4. Erstelle ein Zuordnungsdokument: primitive Rolle -> spezifische benötigte vordefinierte Rollen
  5. Wende vordefinierte Rollen neben den primitiven Rollen für einen Testzeitraum an
  6. Überwache auf Zugriffsverweigerungsfehler mit Cloud Audit Logs
  7. Entferne primitive Rollen, nachdem 2 Wochen lang keine Zugriffsprobleme aufgetreten sind

Fallstricke: Primitive Rollen enthalten Berechtigungen für alle GCP-Dienste, sodass ihr Ersatz mehrere vordefinierte Rollen erfordert. Der Recommender kann zu restriktive Rollen vorschlagen, wenn der Beobachtungszeitraum nicht alle Anwendungsfälle abdeckt. Benutzerdefinierte Rollen können Lücken füllen, wenn keine vordefinierte Rolle den genauen benötigten Berechtigungssatz bietet.

Ausgabeformat

GCP IAM-Berechtigungen – Prüfbericht
======================================
Organisation: acme-org (ORG_ID: 123456789)
Geprüfte Projekte: 25
Prüfdatum: 2026-02-23

ZUSAMMENFASSUNG DER IAM-BINDUNGEN:
  Bindungen gesamt:                      342
  Mit primitiven Rollen:                 205 (60%)
  Mit vordefinierten Rollen:             112 (33%)
  Mit benutzerdefinierten Rollen:         25 (7%)

KRITISCHE FESTSTELLUNGEN:
[IAM-001] Dienstkonto mit Owner-Rolle
  SA: [email protected]
  Rolle: roles/owner im Projekt prod-project
  Benutzermanagte Schlüssel: 3 (ältester: 14 Monate)
  Abhilfe: Durch spezifische vordefinierte Rollen ersetzen, alte Schlüssel löschen

[IAM-002] allAuthenticatedUsers-Bindung
  Ressource: gs://public-data-bucket
  Rolle: roles/storage.objectViewer
  Risiko: Jeder Google-Kontoinhaber kann Bucket-Inhalte lesen
  Abhilfe: Auf bestimmte Benutzergruppen oder Dienstkonten beschränken

GESUNDHEIT DER DIENSTKONTEN:
  Dienstkonten gesamt:                    67
  Mit benutzermanagten Schlüsseln:        23
  Schlüssel älter als 90 Tage:            18
  Ungenutzte Konten (90+ Tage):           12
  Mit domänenweiter Delegation:            2

EMPFEHLUNGEN DES RECOMMENDERS:
  Empfehlungen gesamt:                    45
  Priorität HOCH:                         12
  Geschätzte reduzierte Berechtigungen:   2.847 einzelne Berechtigungen

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,

Verwandte Skills