Access & Identity
People and teams are modeled as manifests. Every permission block elsewhere (projects, repositories, registries) references these by name — never a raw email or external group.
OrganizationUser
# manifests/organization-user/jane-smith.yaml
apiVersion: lowops.manifests.v1
kind: OrganizationUser
metadata:
name: jane-smith
organization: fincorp
spec:
identity:
firstName: Jane
lastName: Smith
externalAccounts:
- sourceType: GITHUB
sourceName: default # a GithubConnection
username: jane-smith-gh
OrganizationUserGroup
# manifests/organization-user-group/retail-developers.yaml
apiVersion: lowops.manifests.v1
kind: OrganizationUserGroup
metadata:
name: retail-developers
organization: fincorp
spec:
members:
users:
- jane-smith
external: []
Referencing groups in permissions
Any permissions block (on a Project, GithubRepository, ArtifactRegistry, OrganizationalUnit, …)
references group manifests by name. Prefer groups over individual members for production
(SOC2/PCI governance).
# Inside a Project / OrganizationalUnit spec, for example:
spec:
permissions:
administrators:
groups:
- retail-cloudops
members: []
contributors:
groups:
- retail-developers
members: []
viewers:
groups: []
members: []
Rule of thumb: grant access to groups, and manage people by adding/removing them from the
OrganizationUserGroup. This keeps project manifests stable as teams change and preserves a clean audit trail.