Skip to content

feat(iam): add LocationBinding ProtectedResource and viewer role#172

Merged
scotwells merged 1 commit into
mainfrom
feat/locationbinding-iam-viewer
May 29, 2026
Merged

feat(iam): add LocationBinding ProtectedResource and viewer role#172
scotwells merged 1 commit into
mainfrom
feat/locationbinding-iam-viewer

Conversation

@scotwells
Copy link
Copy Markdown
Contributor

What

Registers LocationBinding with Milo IAM and adds a read-only viewer role.

  • New ProtectedResource networking.datumapis.com-locationbinding (plural: locationbindings), parented to resourcemanager.miloapis.com/Project, mirroring the existing locations ProtectedResource.
  • New Role networking.datumapis.com-locationbinding-viewer granting locationbindings.{list,get,watch}.
  • Both wired into the respective config/iam/.../kustomization.yaml.

Why

LocationBinding had no IAM coverage: no ProtectedResource registered it, and no role granted any locationbindings.* permission. Milo's IAM authorizer only authorizes resources registered as ProtectedResources, so locationbindings were denied for every identity except system:masters. As a result, consumers / project owners could not list or read the LocationBindings projected into their own projects — even though the type is a consumer-facing projection of a Location into a project's control plane.

Unblocks

A follow-up PR on datum-cloud/infra appends networking.datumapis.com-locationbinding-viewer to the project owner role so owners can read the LocationBindings in their own project (read-only, project-scoped).

Validation

kubectl kustomize config/iam builds cleanly and includes the new ProtectedResource and Role.

🤖 Generated with Claude Code

LocationBinding had no IAM coverage: there was no ProtectedResource
registering it with Milo IAM and no role granting any locationbindings
permission. Because the IAM authorizer only authorizes registered
ProtectedResources, locationbindings were denied to every identity
except system:masters — so consumers/project owners could not read the
LocationBindings projected into their own projects, despite the type
being consumer-facing.

Add:
- a LocationBinding ProtectedResource (parented to
  resourcemanager.miloapis.com/Project, mirroring locations), and
- a networking.datumapis.com-locationbinding-viewer role granting
  get/list/watch.

This unblocks granting project owners read access to LocationBindings
(wired into the owner role separately in datum-cloud/infra).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@scotwells scotwells merged commit 5f799d9 into main May 29, 2026
11 checks passed
@scotwells scotwells deleted the feat/locationbinding-iam-viewer branch May 29, 2026 00:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants