metadata:
namespace: default
type: AccessPolicies.omni.sidero.dev
id: access-policy
spec:
usergroups:
# match level-1 users by fnmatch expression
level-1:
users:
- match: level-1*
# match level-2 users by label selectors
level-2:
users:
- labelselectors:
- level=2
# match level-3 users by explicit list
level-3:
users:
- name: admin1@example.com
- name: admin2@example.com
clustergroups:
dev:
clusters:
- match: dev-*
staging:
clusters:
- match: staging-*
- match: preprod-*
production:
clusters:
- match: prod-*
rules:
- users:
- group/level-1
clusters:
- group/dev
role: Operator
- users:
- group/level-1
clusters:
- group/staging
role: Reader
kubernetes:
impersonate:
groups:
- read-only
- users:
- group/level-2
clusters:
- group/dev
- group/staging
role: Operator
- users:
- group/level-2
clusters:
- group/production
role: Reader
kubernetes:
impersonate:
groups:
- read-only
- users:
- group/level-3
clusters:
- group/dev
- group/staging
- group/production
role: Admin
# simple rule - without links to user or cluster groups
- users:
- vault-admin@example.com
clusters:
- vault
role: Admin
tests:
# level-1 tests
- name: level-1 engineer has Operator access to dev cluster
user:
name: level-1-a@example.com
cluster:
name: dev-cluster-1
expected:
role: Operator
- name: level-1 engineer has read-only access to staging cluster
user:
name: level-1-b@example.com
cluster:
name: staging-cluster-1
expected:
role: Reader
kubernetes:
impersonate:
groups:
- read-only
- name: level-1 engineer has no access to production cluster
user:
name: level-1-c@example.com
cluster:
name: production-cluster-1
expected:
role: None
kubernetes:
impersonate:
groups: []
# level-2 tests
- name: level-2 engineer has Operator access to staging cluster
user:
name: something@example.com
labels:
level: "2"
cluster:
name: preprod-cluster-1
expected:
role: Operator
- name: level-2 engineer has read-only access to prod cluster
user:
name: something@example.com
labels:
level: "2"
cluster:
name: prod-cluster-1
expected:
role: Reader
kubernetes:
impersonate:
groups:
- read-only
# level-3 tests
- name: level-3 engineer has admin access to prod cluster
user:
name: admin1@example.com
cluster:
name: prod-cluster-1
expected:
role: Admin
# vault-admin tests
- name: vault-admin has admin access to vault
user:
name: vault-admin@example.com
cluster:
name: vault
expected:
role: Admin