Rules¶
Rules live under rules.d/. Each rule has a match and a list of allow entries. See
Concepts > Resources, actions, rules and
Conditions.
- name: dev-read
match:
issuer: gh-actions
condition:
repository: { contains: "acme/" }
allow:
- resources: [ "github:acme/*" ]
actions: [ "contents:read" ]
- name: deploy-write
match:
issuer: gh-actions
condition:
all:
- repository: { in: [ "acme/svc-a", "acme/svc-b" ] }
- ref: "refs/heads/main"
allow:
- resources: [ "github:acme/svc-a", "github:acme/svc-b" ]
actions: [ "contents:write" ]
match¶
issuer(required) - the issuer name this rule applies to.condition- a filter over principal attributes (short form, orall/any/not). See Conditions.expr- an expression, as an alternative tocondition(not both).allow_empty: true- match every principal from the issuer when there is no condition. Without it, a rule with no condition matches no one.
allow¶
Each entry lists resources (realm-prefixed globs) and actions. A request is authorized only if
the union of allow entries from all matching rules covers every requested resource and action, and
never exceeds the realm's capability ceiling.
Admin rules¶
Admin access is granted with talmi:* resources:
- name: talmi-admins
match:
issuer: gh-login
condition:
teams: { contains: "my-org/talmi-admins" }
allow:
- { resources: [ "talmi:session" ], actions: [ "login" ] }
- { resources: [ "talmi:audit" ], actions: [ "read" ] }
- { resources: [ "talmi:providers" ], actions: [ "read" ] }
- { resources: [ "talmi:tasks", "talmi:tasks/*" ], actions: [ "read", "trigger" ] }
talmi actions are exact strings with no ordering: read does not imply trigger.