gcp-run-jobs-run
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 |
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).'