Files
octavia/etc/policy/octavia-advanced-rbac-policy.yaml
Michael Johnson 22929f654e Make keystone default roles the default RBAC
This patch makes the current version of the keystone default roles the
default RBAC policy for Octavia.

Change-Id: Icf3171c8bb6496e2999e078b74fdbbc53b922f97
2025-01-15 09:21:59 +01:00

75 lines
2.9 KiB
YAML

# This policy YAML file implements the "Advanced RBAC" rules for Octavia that
# were introduced in the Pike release of the Octavia API.
#
# These rules require users to have a load-balancer_* role to be able to access
# the Octavia v2 API.
#
# This is stricter than the "Keystone Default Roles" implemented in the code
# as part of the "Consistent and Secure Default RBAC" OpenStack community goal.
# The default is to not allow access unless the auth_strategy is 'noauth'.
# Users must be a member of one of the following roles to have access to
# the load-balancer API:
#
# role:load-balancer_observer
# User has access to load-balancer read-only APIs
# role:load-balancer_global_observer
# User has access to load-balancer read-only APIs including resources
# owned by others.
# role:load-balancer_member
# User has access to load-balancer read and write APIs
# role:load-balancer_admin
# User is considered an admin for all load-balnacer APIs including
# resources owned by others.
# role:admin
# User is admin to all APIs
"context_is_admin": "role:admin or
role:load-balancer_admin"
# API access roles
"load-balancer:owner": "project_id:%(project_id)s"
# Note: 'is_admin:True' is a policy rule that takes into account the
# auth_strategy == noauth configuration setting.
# It is equivalent to 'rule:context_is_admin or {auth_strategy == noauth}'
"load-balancer:admin": "is_admin:True or
role:admin or
role:load-balancer_admin"
"load-balancer:observer_and_owner": "role:load-balancer_observer and
rule:load-balancer:owner"
"load-balancer:global_observer": "role:load-balancer_global_observer"
"load-balancer:member_and_owner": "role:load-balancer_member and
rule:load-balancer:owner"
# API access methods
"load-balancer:read": "rule:load-balancer:observer_and_owner or
rule:load-balancer:global_observer or
rule:load-balancer:member_and_owner or
rule:load-balancer:admin"
"load-balancer:read-global": "rule:load-balancer:global_observer or
rule:load-balancer:admin"
"load-balancer:write": "rule:load-balancer:member_and_owner or
rule:load-balancer:admin"
"load-balancer:read-quota": "rule:load-balancer:observer_and_owner or
rule:load-balancer:global_observer or
rule:load-balancer:member_and_owner or
role:load-balancer_quota_admin or
rule:load-balancer:admin"
"load-balancer:read-quota-global": "rule:load-balancer:global_observer or
role:load-balancer_quota_admin or
rule:load-balancer:admin"
"load-balancer:write-quota": "role:load-balancer_quota_admin or
rule:load-balancer:admin"