5.4 KiB
Handoff: Cloud Build blocked by organization policy / VPC Service Controls
Resume point
- Handoff date: 2026-09-10
- Branch at handoff:
feat/opax-web-bff-readonly - HEAD at handoff:
5d74fb09f3f1725bb6bec8662d890c22dd038188 - Earlier source-provenance commit:
5d74fb09f3f1725bb6bec8662d890c22dd038188 - Working directory:
CLEAN at the original Git-provenance check
This document records the deployment-investigation state. It does not authorize infrastructure changes, another build, or deployment.
Intended first image build
- Build mechanism: Cloud Build from a local, approved source snapshot
- Build context:
opax-web/ - Dockerfile:
opax-web/Dockerfile - Project:
propane-will-491900-m5 - Artifact Registry location:
us-central1 - Repository:
osvauco-repo - Image:
opax-web - Intended immutable tag:
5d74fb09f3f1725bb6bec8662d890c22dd038188 - Intended image reference:
us-central1-docker.pkg.dev/propane-will-491900-m5/osvauco-repo/opax-web:5d74fb09f3f1725bb6bec8662d890c22dd038188
Verified facts
opax-web/Dockerfilewas present as a regular file.opax-web/.gcloudignorewas absent.opax-web/cloudbuild.yamlwas absent.opax-web/cloudbuild.ymlwas absent.- Effective Cloud Build default runtime service account:
357036551735-compute@developer.gserviceaccount.com - That runtime service account has direct
roles/artifactregistry.writeron:us-central1/osvauco-repo - Active local gcloud caller observed during the investigation:
chris.christiansen@vauco.no - This project-level IAM binding was successfully added:
roles/serviceusage.serviceUsageConsumerforuser:chris.christiansen@vauco.noon projectpropane-will-491900-m5.
Build blocker
Two attempts to submit local source using gcloud builds submit failed before a Cloud Build started.
Affected Cloud Build source bucket:
gs://propane-will-491900-m5_cloudbuild
Observed failure category:
PERMISSION_DENIED
Observed error included:
The user is forbidden from accessing the bucket [propane-will-491900-m5_cloudbuild]
Adding roles/serviceusage.serviceUsageConsumer did not resolve the failure.
A bucket-level IAM remediation was attempted but was not applied:
- Intended principal:
user:chris.christiansen@vauco.no - Intended resource:
gs://propane-will-491900-m5_cloudbuild - Intended role:
roles/storage.objectCreator
The attempted bucket IAM change was denied with:
Request is prohibited by organization's policy
The response contained a VPC Service Controls diagnostic correlation ID:
hSyd2GQvlMqQGdZ0HXTW5fNlD0n0U48CHziavzv6HhoKYEI_8vWYFM2YtMCsz6QbhjOiyDowZRU7gJ-3
Current conclusion
The immediate blocker is organization-level policy enforcement, likely VPC Service Controls, affecting the active caller's access to the Cloud Build-managed source bucket.
No successful Cloud Build has been confirmed. No image push has been confirmed. No Cloud Run deployment has been performed.
Instructions for the next browser-enabled agent
-
Use Google Cloud Console with approved browser-based organizational access. Start read-only.
-
Identify the VPC Service Controls service perimeter, ingress policy, egress policy, access level, IAM Condition, or related organization policy that blocks:
- Active caller:
chris.christiansen@vauco.no - Source bucket:
gs://propane-will-491900-m5_cloudbuild - Project:
propane-will-491900-m5
- Active caller:
-
Use this only as diagnostic correlation information:
hSyd2GQvlMqQGdZ0HXTW5fNlD0n0U48CHziavzv6HhoKYEI_8vWYFM2YtMCsz6QbhjOiyDowZRU7gJ-3 -
Inspect the applicable perimeter, ingress/egress rules, access levels, and any available perimeter-violation or dry-run evidence. Identify the exact blocking rule before proposing a change.
-
Propose the smallest specific correction. Do not:
- Disable VPC Service Controls.
- Create a broad perimeter exception.
- Broaden organization policy unnecessarily.
- Grant broad IAM roles as a substitute for identifying the policy block.
- Change the Cloud Build runtime service account's Artifact Registry writer role.
- Deploy to Cloud Run.
-
Before any VPC Service Controls, Access Context Manager, IAM, source-upload, build, image, or deployment change:
- Present the exact action.
- Explain scope, expected effect, risk, and rollback.
- Obtain separate explicit approval.
-
After an approved policy correction:
- Re-check the current branch, full HEAD SHA, and clean working-tree status.
- Confirm the build context remains
opax-web/. - Reuse image tag
5d74fb09f3f1725bb6bec8662d890c22dd038188only if current HEAD is exactly5d74fb09f3f1725bb6bec8662d890c22dd038188. - If HEAD differs, stop and make a new provenance/tag decision.
- Submit at most one explicitly approved Cloud Build.
- Do not retry automatically.
-
After a successful Cloud Build:
- Do not deploy automatically.
- Retrieve the pushed image digest through a separate read-only gate.
- Use the image digest, not only the tag, in any later Cloud Run deployment proposal.
- Require a separate explicit Cloud Run deploy gate.
Git closeout
This file is intended to be the only local change made during closeout.
Before staging or committing:
- Verify that this exact file is the only intended change.
- Present the exact Git commands and commit message for approval.
- Commit only after separate approval.
- Report the resulting commit SHA.
- Do not push until the exact commit SHA and push target have been separately approved.