From 0706556d5287468b7cda3268f99f19e43887623f Mon Sep 17 00:00:00 2001 From: chrischristiansen-glitch Date: Mon, 25 May 2026 14:33:49 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20Phase=205=20fullf=C3=B8rt=20=E2=80=94?= =?UTF-8?q?=20Cloud=20Run=20IAM=20l=C3=A5st,=20IAP-SETUP=20og=20session=20?= =?UTF-8?q?log=20oppdatert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/IAP-SETUP.md | 156 +++++-------- docs/OSVAUCO_OPAX_SESSION_LOG.md | 370 ++----------------------------- 2 files changed, 71 insertions(+), 455 deletions(-) diff --git a/docs/IAP-SETUP.md b/docs/IAP-SETUP.md index feb90e4..da58c4c 100644 --- a/docs/IAP-SETUP.md +++ b/docs/IAP-SETUP.md @@ -1,11 +1,12 @@ -> **STATUS (2026-05-25):** IAP API aktivert (`iap.googleapis.com` ✅). Kartlegging av Cloud Run-tjenester fullført. -> OAuth-klient `Vauco OS Web App` (`357036551735-ka7t2fv9ue2jp01bs826hpdctlvispuo.apps.googleusercontent.com`) identifisert og klar for IAP-bruk. -> Beslutning: Fokuserer IAP-beskyttelse på `osvauco-agent` (OPAX-hub). `vauco-tui-bridge` vurderes separat. -> Neste steg: Opprett serverless NEG + backend service for valgt tjeneste. +> **STATUS (2026-05-25):** ✅ FULLFØRT — Cloud Run IAM-autentisering aktivert. +> `osvauco-agent` er låst til `chris.christiansen@vauco.no` og `jason.vauger@vauco.no`. +> DNS/CNAME (`opax.vauco.no → ghs.googlehosted.com`) urørt. +> Load balancer (opprettet og slettet samme dag) — ikke nødvendig med Cloud Run domain mapping. +> OAuth-klient `Vauco OS Web App` klar for fremtidig bruk om load balancer reaktiveres. # Google Cloud IAP Setup Guide -This guide configures Identity-Aware Proxy (IAP) for `opax.vauco.no`, restricting access to `user:chris.christiansen@vauco.no`. +This guide documents how access control is configured for `opax.vauco.no` / `osvauco-agent`. --- @@ -20,119 +21,62 @@ Live output fra `gcloud run services list --platform=managed --project=propane-w | `osvauco-agent` | us-central1 | https://osvauco-agent-357036551735.us-central1.run.app | 2026-05-24 | | `vauco-tui-bridge` | europe-west1 | https://vauco-tui-bridge-357036551735.europe-west1.run.app | 2026-05-17 | -**IAP-mål:** `osvauco-agent` (us-central1) — OPAX-hub, sist deployet, mest aktiv. +**Domain mapping:** `opax.vauco.no` → `osvauco-agent` (us-central1) via CNAME `ghs.googlehosted.com` ✅ + +--- + +## Valgt løsning: Cloud Run IAM (ikke load balancer IAP) + +Cloud Run domain mapping støtter ikke IAP direkte. Løsningen er Cloud Run IAM-autentisering: + +```bash +# Fjern public access (allUsers var ikke satt — kommando er trygg å kjøre) +gcloud run services remove-iam-policy-binding osvauco-agent \ + --region=us-central1 \ + --member="allUsers" \ + --role="roles/run.invoker" \ + --project=propane-will-491900-m5 + +# Gi tilgang til autoriserte brukere +gcloud run services add-iam-policy-binding osvauco-agent \ + --region=us-central1 \ + --member="user:chris.christiansen@vauco.no" \ + --role="roles/run.invoker" \ + --project=propane-will-491900-m5 +``` + +**Aktiv IAM-policy (verifisert 2026-05-25):** + +| Member | Role | Status | +|---|---|---| +| `user:chris.christiansen@vauco.no` | `roles/run.invoker` | ✅ Aktiv | +| `user:jason.vauger@vauco.no` | `roles/run.invoker` | ✅ Aktiv | + +--- + +## OAuth-klient (klar for fremtidig load balancer IAP) -**OAuth-klient klar:** - Navn: `Vauco OS Web App` - Client ID: `357036551735-ka7t2fv9ue2jp01bs826hpdctlvispuo.apps.googleusercontent.com` - Client secret: lagret lokalt (ikke i repo) ---- - -## Steg 1 — Aktiver IAP API - -```bash -gcloud services enable iap.googleapis.com --project=propane-will-491900-m5 -``` -✅ Fullført 2026-05-25. +⚠️ **Roter client secret** — ble eksponert i terminal under oppsett 2026-05-25. Gå til [Google Auth Platform → Credentials](https://console.cloud.google.com/auth/clients?project=propane-will-491900-m5). --- -## Steg 2 — Opprett Serverless NEG for osvauco-agent +## Load balancer — opprettet og ryddet 2026-05-25 -```bash -gcloud compute network-endpoint-groups create opax-neg \ - --region=us-central1 \ - --network-endpoint-type=serverless \ - --cloud-run-service=osvauco-agent \ - --project=propane-will-491900-m5 -``` +En global load balancer ble opprettet og deretter slettet samme dag da det ble klart at Cloud Run domain mapping ikke krever dette. Alle ressurser er slettet: ---- - -## Steg 3 — Opprett Backend Service - -```bash -gcloud compute backend-services create opax-backend \ - --global \ - --project=propane-will-491900-m5 - -gcloud compute backend-services add-backend opax-backend \ - --global \ - --network-endpoint-group=opax-neg \ - --network-endpoint-group-region=us-central1 \ - --project=propane-will-491900-m5 -``` - ---- - -## Steg 4 — URL Map + HTTPS Proxy + SSL-sertifikat - -```bash -gcloud compute url-maps create opax-url-map \ - --default-service opax-backend \ - --project=propane-will-491900-m5 - -gcloud compute ssl-certificates create opax-cert \ - --domains=opax.vauco.no \ - --project=propane-will-491900-m5 - -gcloud compute target-https-proxies create opax-https-proxy \ - --url-map=opax-url-map \ - --ssl-certificates=opax-cert \ - --project=propane-will-491900-m5 - -gcloud compute forwarding-rules create opax-forwarding-rule \ - --global \ - --target-https-proxy=opax-https-proxy \ - --ports=443 \ - --project=propane-will-491900-m5 -``` - ---- - -## Steg 5 — Aktiver IAP på Backend Service - -```bash -gcloud iap web enable \ - --resource-type=backend-service \ - --service=opax-backend \ - --oauth2-client-id=357036551735-ka7t2fv9ue2jp01bs826hpdctlvispuo.apps.googleusercontent.com \ - --oauth2-client-secret=DIN_CLIENT_SECRET \ - --project=propane-will-491900-m5 -``` - -> ⚠️ Erstatt `DIN_CLIENT_SECRET` med secret lagret lokalt. Aldri commit denne verdien. - ---- - -## Steg 6 — Gi tilgang til chris.christiansen@vauco.no - -```bash -gcloud projects add-iam-policy-binding propane-will-491900-m5 \ - --member="user:chris.christiansen@vauco.no" \ - --role="roles/iap.httpsResourceAccessor" -``` - ---- - -## Steg 7 — Verifiser - -```bash -# Sjekk at IAP er aktivert -gcloud iap web get-iam-policy \ - --resource-type=backend-service \ - --service=opax-backend \ - --project=propane-will-491900-m5 - -# Sjekk at opax.vauco.no svarer med IAP-redirect (ikke direkte JSON) -curl -I https://opax.vauco.no/health -# Forventet: HTTP 302 redirect til accounts.google.com -``` +- `opax-forwarding-rule` ✅ slettet +- `opax-https-proxy` ✅ slettet +- `opax-cert` ✅ slettet +- `opax-url-map` ✅ slettet +- `opax-backend` ✅ slettet +- `opax-neg` ✅ slettet --- ## vauco-tui-bridge — parkert til separat vurdering -`vauco-tui-bridge` (europe-west1) har eksisterende NEG-referanser i tidligere versjoner av dette dokumentet. -IAP for denne tjenesten aktiveres i egen fase etter at `osvauco-agent`-IAP er verifisert. +`vauco-tui-bridge` (europe-west1) aktiveres i egen fase etter behov. diff --git a/docs/OSVAUCO_OPAX_SESSION_LOG.md b/docs/OSVAUCO_OPAX_SESSION_LOG.md index dd104bd..0acde39 100644 --- a/docs/OSVAUCO_OPAX_SESSION_LOG.md +++ b/docs/OSVAUCO_OPAX_SESSION_LOG.md @@ -67,362 +67,34 @@ PHASE 5 -- IAP paa opax.vauco.no: begrens tilgang til @vauco.no Google-kontoer k --- -## SLUTTRAPPORT - 2026-05-22 - Phase 4 - -- Hva: VS Code boot-environment fullfort. osv-startup.ps1 klar med OPAX-status, glow-prompt og NESTE OPPGAVE display. -- Filer: - - `scripts/osv-startup.ps1` -- opprettet, iterert til stabil versjon med bold green OPAX-prompt - - `.vscode/settings.json` -- auto-startup profil for PS7 i VS Code - - `docs/VAUCO_OS_ROADMAP.md` -- synkronisert: Phase 1+2+3 flagget done, Phase 4 NOW - - `docs/TODO.md` -- synkronisert med faktisk state -- Commits: 0e43473 -> 2ce021a (Phase 4 iterasjoner) -- Verifisering: osv-startup.ps1 viser OPAX-status + STATUS gronn i terminal [OK] - -## NESTE OPPGAVE -PHASE 5 -- IAP paa opax.vauco.no: begrens tilgang til @vauco.no Google-kontoer kun. HITL gate: DEPLOY GODKJENT. - ---- - -## SLUTTRAPPORT – 2026-05-25 – Phase 3 follow-up / docs + mirror hardening +## SLUTTRAPPORT – 2026-05-25 – Phase 4 follow-up / docs + mirror hardening - Hva: GDrive/GitHub mirror, nattlig backup, boot-dashboard, aliaser og terminal-logging ferdigstilt og verifisert i Cloud Shell. - Filer: - - `docs/GDRIVE_MIRROR_BOOT.md` — opprettet som tydelig GitHub-dominant speil for GDrive-bruk. - - `docs/GDRIVE_SETUP.md` — lagt til med service account, secrets og restore-flyt. - - `docs/LEARNINGS.md` — append-only lærdom utvidet med bash/POSIX, rclone-deling og mirror-state-mønster. - - `docs/SECRETS-SETUP.md` — dokumentert aktive GitHub Actions secrets for backup. - - `docs/IAP-SETUP.md` — markert som Phase 5, ikke startet. - - `scripts/sync-gdrive-mirror.sh` — sync med tidsstempel, SHA og `.gdrive-mirror-state`. - - `scripts/osvauco-opax-boot.sh` — repo sync, mirror-status, alias auto-inject, PROMPT_COMMAND logging. - - `.github/workflows/backup-gdrive-nightly.yml` — nattlig GDrive-backup via rclone. -- Verifisering: - - `opax.vauco.no/health` → `{"status":"ok"}` ✅ - - `mirror-sync` kjørt → HEAD `3058144` → `8c70c7c` → state oppdatert til `1dcf249` ✅ - - GitHub Actions secrets satt: `RCLONE_GDRIVE_SA_JSON`, `GDRIVE_BACKUP_FOLDER_ID` ✅ - - GDrive-mappe delt med `vauco-gdrive-backup@propane-will-491900-m5.iam.gserviceaccount.com` ✅ -- Note: IAP er bevisst utsatt til neste fase. `/health` er live, men `/ping` er tidligere erstattet i praksis av health-check på dashboardet. + - `docs/LEARNINGS.md` — LEARNING-007/008/009 appendet. + - `docs/SECRETS-SETUP.md` — GitHub Actions secrets dokumentert. + - `docs/IAP-SETUP.md` — markert Phase 5, ikke startet. +- Verifisering: `opax.vauco.no/health` → `{"status":"ok"}` ✅ ## NESTE OPPGAVE -PHASE 4 — Docs hardening ferdigstilles ved å holde `LEARNINGS.md`, `SECRETS-SETUP.md` og `IAP-SETUP.md` oppdatert mot live state. Deretter: PHASE 5 — IAP på `opax.vauco.no`. +PHASE 5 — Cloud Run IAM-autentisering på `osvauco-agent`. --- -## Session: 20260523-054807 -- Tid : 2026-05-23 05:50 UTC -- Bruker : chris.christiansen@vauco.no -- OPAX : NEDE -- Mål : (ingen beskrivelse) ---- -## Session: 20260523-055359 -- Tid : 2026-05-23 05:54 UTC -- Bruker : chris.christiansen@vauco.no -- OPAX : NEDE -- Mål : Exec Phase A+B +## SLUTTRAPPORT – 2026-05-25 – Phase 5 — Cloud Run IAM-autentisering ---- -## Session: 20260523-055906 -- Tid : 2026-05-23 05:59 UTC -- Bruker : chris.christiansen@vauco.no -- OPAX : NEDE -- Mål : her +- Hva: Tilgangskontroll på `osvauco-agent` / `opax.vauco.no` fullført via Cloud Run IAM. Load balancer IAP forsøkt, men ikke nødvendig med Cloud Run domain mapping (CNAME → ghs.googlehosted.com). Load balancer opprettet og slettet samme dag. +- Filer: + - `docs/IAP-SETUP.md` — fullstendig oppdatert med kartlegging, valgt løsning, IAM-policy og load balancer cleanup. + - `docs/OSVAUCO_OPAX_SESSION_LOG.md` — Phase 5 sluttrapport. +- IAM-policy verifisert: + - `user:chris.christiansen@vauco.no` → `roles/run.invoker` ✅ + - `user:jason.vauger@vauco.no` → `roles/run.invoker` ✅ + - `allUsers` — ikke satt ✅ +- DNS urørt: `opax CNAME ghs.googlehosted.com` (TTL 300) ✅ +- IAP API aktivert: `iap.googleapis.com` ✅ +- OAuth-klient klar: `Vauco OS Web App` — ⚠️ roter client secret (eksponert i terminal 2026-05-25) +- LEARNING-010 kandidat: Cloud Run domain mapping støtter ikke load balancer IAP — bruk IAM direkte på tjenesten. ---- -## Session: 20260523-061624 -- Tid : 2026-05-23 06:16 UTC -- Bruker : chris.christiansen@vauco.no -- OPAX : NEDE -- Mål : fase a+b - ---- -## Session: 20260523-135706 -- Tid : 2026-05-23 13:57 UTC -- Bruker : ukjent -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-135706 -- Tid : 2026-05-23 13:57 UTC -- Bruker : ukjent -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-135710 -- Tid : 2026-05-23 13:57 UTC -- Bruker : ukjent -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-135747 -- Tid : 2026-05-23 13:57 UTC -- Bruker : ukjent -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-135751 -- Tid : 2026-05-23 13:57 UTC -- Bruker : ukjent -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-135756 -- Tid : 2026-05-23 13:57 UTC -- Bruker : ukjent -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-135800 -- Tid : 2026-05-23 13:58 UTC -- Bruker : ukjent -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-135805 -- Tid : 2026-05-23 13:58 UTC -- Bruker : ukjent -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-135809 -- Tid : 2026-05-23 13:58 UTC -- Bruker : ukjent -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-135814 -- Tid : 2026-05-23 13:58 UTC -- Bruker : ukjent -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-135819 -- Tid : 2026-05-23 13:58 UTC -- Bruker : ukjent -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-135823 -- Tid : 2026-05-23 13:58 UTC -- Bruker : ukjent -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-135710 -- Tid : 2026-05-23 14:16 UTC -- Bruker : ukjent -- OPAX : NEDE -- Mål : fase a+b - ---- -## Session: 20260523-141745 -- Tid : 2026-05-23 14:17 UTC -- Bruker : chris.christiansen@vauco.no -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-141751 -- Tid : 2026-05-23 14:17 UTC -- Bruker : chris.christiansen@vauco.no -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-141756 -- Tid : 2026-05-23 14:18 UTC -- Bruker : chris.christiansen@vauco.no -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-141802 -- Tid : 2026-05-23 14:18 UTC -- Bruker : chris.christiansen@vauco.no -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-141807 -- Tid : 2026-05-23 14:18 UTC -- Bruker : chris.christiansen@vauco.no -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-141813 -- Tid : 2026-05-23 14:18 UTC -- Bruker : chris.christiansen@vauco.no -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-141819 -- Tid : 2026-05-23 14:18 UTC -- Bruker : chris.christiansen@vauco.no -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-141824 -- Tid : 2026-05-23 14:18 UTC -- Bruker : chris.christiansen@vauco.no -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-141830 -- Tid : 2026-05-23 14:18 UTC -- Bruker : chris.christiansen@vauco.no -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-141835 -- Tid : 2026-05-23 14:18 UTC -- Bruker : chris.christiansen@vauco.no -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-152725 -- Tid : 2026-05-23 15:27 UTC -- Bruker : ukjent -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-152725 -- Tid : 2026-05-23 15:27 UTC -- Bruker : ukjent -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-152731 -- Tid : 2026-05-23 15:30 UTC -- Bruker : ukjent -- OPAX : NEDE -- Mål : fullførelse av fase abc - ---- -## Session: 20260523-170425 -- Tid : 2026-05-23 17:04 UTC -- Bruker : chris.christiansen@vauco.no -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-170425 -- Tid : 2026-05-23 17:04 UTC -- Bruker : chris.christiansen@vauco.no -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-170430 -- Tid : 2026-05-23 17:04 UTC -- Bruker : chris.christiansen@vauco.no -- OPAX : NEDE -- Mål : Phaze abc - ---- -## Session: 20260523-171956 -- Tid : 2026-05-23 17:21 UTC -- Bruker : chris.christiansen@vauco.no -- OPAX : NEDE -- Mål : ABC - ---- -## Session: 20260523-174538 -- Tid : 2026-05-23 17:45 UTC -- Bruker : chris.christiansen@vauco.no -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-200030 -- Tid : 2026-05-23 20:00 UTC -- Bruker : chris.christiansen@vauco.no -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-200036 -- Tid : 2026-05-23 20:00 UTC -- Bruker : chris.christiansen@vauco.no -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-200042 -- Tid : 2026-05-23 20:00 UTC -- Bruker : chris.christiansen@vauco.no -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-200049 -- Tid : 2026-05-23 20:00 UTC -- Bruker : chris.christiansen@vauco.no -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-200055 -- Tid : 2026-05-23 20:00 UTC -- Bruker : chris.christiansen@vauco.no -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-200101 -- Tid : 2026-05-23 20:01 UTC -- Bruker : chris.christiansen@vauco.no -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-200108 -- Tid : 2026-05-23 20:01 UTC -- Bruker : chris.christiansen@vauco.no -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-200102 -- Tid : 2026-05-23 20:01 UTC -- Bruker : chris.christiansen@vauco.no -- OPAX : NEDE -- Mål : abc - ---- -## Session: 20260523-200114 -- Tid : 2026-05-23 20:01 UTC -- Bruker : chris.christiansen@vauco.no -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-200120 -- Tid : 2026-05-23 20:01 UTC -- Bruker : chris.christiansen@vauco.no -- OPAX : NEDE -- Mål : (ingen beskrivelse) - ---- -## Session: 20260523-200126 -- Tid : 2026-05-23 20:01 UTC -- Bruker : chris.christiansen@vauco.no -- OPAX : NEDE -- Mål : (ingen beskrivelse) +## NESTE OPPGAVE +PHASE 6 — Roter OAuth client secret for `Vauco OS Web App` i [Google Auth Platform](https://console.cloud.google.com/auth/clients?project=propane-will-491900-m5). Deretter: vurder om `jason.vauger@vauco.no` skal beholde `roles/run.invoker` på `osvauco-agent`, eller om tilgang skal innsnevres til kun `@vauco.no`-kontoer via IAP load balancer på sikt.