gcp-sa-key-create

derived gcp emits CanCreateCredentialFor

match (effective permission)

{ "action": "iam.serviceAccountKeys.create", "resource_type": "google.iam.ServiceAccount" }

emit

source typeIdentity
source<principal>
target<service account in scope>
permissionsiam.serviceAccountKeys.create

Narrative

{principal.name} can create a private key for {sa.name} (iam.serviceAccountKeys.create), yielding long-lived credentials.

Raw rule rules/derived/gcp/identity-escalation.yaml

id: gcp-sa-key-create
emits: CanCreateCredentialFor
match_effective_permission:
  action: iam.serviceAccountKeys.create
  resource_type: google.iam.ServiceAccount
emit:
  source_type: Identity
  source: <principal>
  target: <service account in scope>
  permissions:
  - iam.serviceAccountKeys.create
  escalation: Create a downloadable JSON key -> durable offline credential for the SA.
  narrative: '{principal.name} can create a private key for {sa.name} (iam.serviceAccountKeys.create),
    yielding long-lived credentials.'
move · open · esc close