gcp-run-jobs-run

derived gcp emits CanInvoke

match (effective permission)

{ "action": "run.jobs.run", "resource_type": "google.cloud.run.Job" }

emit

source typeIdentity
source<principal>
target<Cloud Run job in scope>
permissionsrun.jobs.run

Narrative

{principal.name} can run Cloud Run job {resource.name} with its existing image (run.jobs.run).

Raw rule rules/derived/gcp/cloudrun.yaml

id: gcp-run-jobs-run
emits: CanInvoke
match_effective_permission:
  action: run.jobs.run
  resource_type: google.cloud.run.Job
emit:
  source_type: Identity
  source: <principal>
  target: <Cloud Run job in scope>
  permissions:
  - run.jobs.run
  false_positive_note: Plain run.jobs.run only executes the EXISTING image; it is not a standalone code-injection
    primitive. It completes an escalation only when the image was swapped (gcp-run-update-code).
  narrative: '{principal.name} can run Cloud Run job {resource.name} with its existing image (run.jobs.run).'
move · open · esc close