mirror of
https://github.com/Noooste/garage-ui.git
synced 2026-08-19 17:26:17 +00:00
feat(oidc): add fine grained access control (#91)
* feat(access-control): fine grain tokens * fix(docs): clean wording * test(access-control): add tests for team extraction from access tokens and bucket info permissions * test(vocabulary): add test for ExpandGlob function to reject non-glob patterns * feat(helm): add multi-user access control documentation and schema support
This commit is contained in:
@@ -75,6 +75,8 @@ auth:
|
||||
|
||||
# Role-based access (optional)
|
||||
role_attribute_path: "resource_access.garage-ui.roles"
|
||||
# Team-based access control (optional, see access_control below).
|
||||
# team_attribute_path: "groups"
|
||||
# Single admin role (backward-compatible).
|
||||
admin_role: "admin"
|
||||
# Multiple admin roles: a user is granted admin if ANY of their roles
|
||||
@@ -94,6 +96,29 @@ auth:
|
||||
cookie_http_only: true
|
||||
cookie_same_site: "lax" # lax, strict, none
|
||||
|
||||
# Optional: team-based access control (issue #33).
|
||||
# Absent -> every authenticated user has full access (historical behavior).
|
||||
# Present -> default-deny: OIDC users get only what their teams grant; users
|
||||
# matching no team get 403 everywhere. admin_role users, admin
|
||||
# password logins, and token logins are always full-admin in v1.
|
||||
# NOTE: this is UI-layer policy, NOT a security boundary. Anyone holding the
|
||||
# Garage admin token or S3 keys bypasses it entirely.
|
||||
#
|
||||
# access_control:
|
||||
# presets:
|
||||
# bucket_readonly: [bucket.list, bucket.read, object.list, object.read]
|
||||
# bucket_owner: ["preset:bucket_readonly", bucket.create, bucket.update,
|
||||
# bucket.delete, object.write, object.delete]
|
||||
# teams:
|
||||
# - name: backend
|
||||
# claim_values: ["garage-team-backend"] # matched against team_attribute_path claim
|
||||
# bindings:
|
||||
# - bucket_prefixes: ["backend-"]
|
||||
# permissions: ["preset:bucket_owner"]
|
||||
# - bucket_prefixes: ["shared-"]
|
||||
# permissions: ["preset:bucket_readonly"]
|
||||
# cluster_permissions: [cluster.status, cluster.health]
|
||||
|
||||
# CORS Configuration (for frontend)
|
||||
cors:
|
||||
enabled: true
|
||||
|
||||
Reference in New Issue
Block a user