Skip to content

datum-cloud-viewer 403s on trafficprotectionpolicies while httpproxies succeeds (stale deployed gateway-viewer) #235

@yahyafakhroji

Description

@yahyafakhroji

Summary

Users bound to the org datum-cloud-viewer role get 403 on trafficprotectionpolicies.networking.datumapis.com but 200 on httpproxies when loading the AI Edge listing in cloud-portal. Both permissions originate from the same gateway-viewer role via the same inheritance chain, so this is a live-state/deployment drift issue, not a source-config bug.

Investigation (source is correct)

Inheritance chain, all present in source:

datum-cloud-viewer  (datum: config/assignable-organization-roles/roles/datum-cloud-viewer.yaml)
  └─ networking.datumapis.com-viewer        (NSO: config/iam/roles/networking-viewer.yaml)
       └─ networking.datumapis.com-gateway-viewer  (NSO: config/iam/roles/gateway-viewer.yaml)
            ├─ httpproxies.{list,get,watch}                 ← since v0.3.0 (commit 3163220)
            └─ trafficprotectionpolicies.{list,get,watch}   ← since v0.9.0 (commit b19af94)
  • Deployed to milo-system via Flux core-control-plane-resources (infra: apps/network-services-operator/control-plane/base/core-control-plane-resources.yaml), sourced from OCIRepository network-services-operator-kustomize, component ../iam.
  • That OCIRepository tracks latest in base/staging/production (no old tag: pin anywhere in infra).

The httpproxies-✓ / WAF-✗ window maps exactly to a deployed gateway-viewer revision in [v0.3.0, v0.9.0).

Likely cause

Live gateway-viewer Role in milo-system is stale vs. the tracked bundle — Flux hasn't reconciled, is failing, or resolved a stale OCI artifact.

Verification / remediation

kubectl get role networking.datumapis.com-gateway-viewer -n milo-system -o yaml | grep trafficprotection
# if missing:
flux reconcile source oci network-services-operator-kustomize -n <flux-ns>
flux reconcile kustomization core-control-plane-resources -n <flux-ns>
# also inspect: flux get kustomization core-control-plane-resources  (apply errors + resolved digest)

Affected org observed: organization-asdasd-2zxpqq (identify env: prod/staging/preview).

Related work (cloud-portal, already fixed on feat/rbac-ai-edge)

  • http-proxy.service.ts fetchList: WAF policy list wrapped in .catch so a trafficprotectionpolicies 403 no longer hard-fails the whole AI Edge list.
  • edge/index.tsx: added trafficprotectionpolicies:list check → Protection column shows "—" + tooltip instead of a misleading "Disabled".

Optional follow-up (robustness, not a fix)

Consider having datum-cloud-viewer inherit gateway-viewer directly (shorter chain). Won't resolve the 403 if the deployed role is stale.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions