Policy configuration¶
Warning
JSON formatted policy file is deprecated since Barbican 12.0.0 (Wallaby). This oslopolicy-convert-json-to-yaml tool will migrate your existing JSON-formatted policy file to YAML in a backward-compatible way.
Configuration¶
Note
The auto-generated configuration reference may show the default values of
enforce_new_defaults and enforce_scope as True (the oslo.policy
library default). However, Barbican overrides both to False at runtime.
To opt in to the new secure RBAC defaults, explicitly set both options to
True in the [oslo_policy] section of barbican.conf.
The following is an overview of all available policies in Barbican. For a sample configuration file.
barbican¶
secret_project_match- Default:
project_id:%(target.secret.project_id)s
(no description provided)
secret_project_reader- Default:
role:reader and rule:secret_project_match
(no description provided)
secret_project_member- Default:
role:member and rule:secret_project_match
(no description provided)
secret_project_admin- Default:
role:admin and rule:secret_project_match
(no description provided)
secret_owner- Default:
user_id:%(target.secret.creator_id)s
(no description provided)
secret_is_not_private- Default:
True:%(target.secret.read_project_access)s
(no description provided)
secret_acl_read- Default:
'read':%(target.secret.read)s
(no description provided)
container_project_match- Default:
project_id:%(target.container.project_id)s
(no description provided)
container_project_member- Default:
role:member and rule:container_project_match
(no description provided)
container_project_admin- Default:
role:admin and rule:container_project_match
(no description provided)
container_owner- Default:
user_id:%(target.container.creator_id)s
(no description provided)
container_is_not_private- Default:
True:%(target.container.read_project_access)s
(no description provided)
container_acl_read- Default:
'read':%(target.container.read)s
(no description provided)
order_project_match- Default:
project_id:%(target.order.project_id)s
(no description provided)
order_project_member- Default:
role:member and rule:order_project_match
(no description provided)
audit- Default:
role:audit
(no description provided)
observer- Default:
role:observer
(no description provided)
creator- Default:
role:creator
(no description provided)
admin- Default:
role:admin
(no description provided)
service_admin- Default:
role:key-manager:service-admin
(no description provided)
all_users- Default:
rule:admin or rule:observer or rule:creator or rule:audit or rule:service_admin
(no description provided)
all_but_audit- Default:
rule:admin or rule:observer or rule:creator
(no description provided)
admin_or_creator- Default:
rule:admin or rule:creator
(no description provided)
secret_creator_user- Default:
user_id:%(target.secret.creator_id)s
(no description provided)
secret_private_read- Default:
'False':%(target.secret.read_project_access)s
(no description provided)
secret_non_private_read- Default:
rule:all_users and rule:secret_project_match and not rule:secret_private_read
(no description provided)
secret_decrypt_non_private_read- Default:
rule:all_but_audit and rule:secret_project_match and not rule:secret_private_read
(no description provided)
secret_project_creator- Default:
rule:creator and rule:secret_project_match and rule:secret_creator_user
(no description provided)
secret_project_creator_role- Default:
rule:creator and rule:secret_project_match
(no description provided)
container_private_read- Default:
'False':%(target.container.read_project_access)s
(no description provided)
container_creator_user- Default:
user_id:%(target.container.creator_id)s
(no description provided)
container_non_private_read- Default:
rule:all_users and rule:container_project_match and not rule:container_private_read
(no description provided)
container_project_creator- Default:
rule:creator and rule:container_project_match and rule:container_creator_user
(no description provided)
container_project_creator_role- Default:
rule:creator and rule:container_project_match
(no description provided)
secret_acls:get- Default:
True:%(enforce_new_defaults)s and (rule:secret_project_admin or (rule:secret_project_member and rule:secret_owner) or (rule:secret_project_member and rule:secret_is_not_private))- Operations:
GET
/v1/secrets/{secret-id}/acl
- Scope Types:
project
Retrieve the ACL settings for a given secret. If no ACL is defined for that secret, the default ACL is returned.
secret_acls:delete- Default:
True:%(enforce_new_defaults)s and (rule:secret_project_admin or (rule:secret_project_member and rule:secret_owner) or (rule:secret_project_member and rule:secret_is_not_private))- Operations:
DELETE
/v1/secrets/{secret-id}/acl
- Scope Types:
project
Delete the ACL settings for a given secret.
secret_acls:put_patch- Default:
True:%(enforce_new_defaults)s and (rule:secret_project_admin or (rule:secret_project_member and rule:secret_owner) or (rule:secret_project_member and rule:secret_is_not_private))- Operations:
PUT
/v1/secrets/{secret-id}/aclPATCH
/v1/secrets/{secret-id}/acl
- Scope Types:
project
Create a new ACL, or replace or update an existing ACL, for a given secret.
container_acls:get- Default:
True:%(enforce_new_defaults)s and (rule:container_project_admin or (rule:container_project_member and rule:container_owner) or (rule:container_project_member and rule:container_is_not_private))- Operations:
GET
/v1/containers/{container-id}/acl
- Scope Types:
project
Retrieve the ACL settings for a given container.
container_acls:delete- Default:
True:%(enforce_new_defaults)s and (rule:container_project_admin or (rule:container_project_member and rule:container_owner) or (rule:container_project_member and rule:container_is_not_private))- Operations:
DELETE
/v1/containers/{container-id}/acl
- Scope Types:
project
Delete ACL for a given container. No content is returned in the case of successful deletion.
container_acls:put_patch- Default:
True:%(enforce_new_defaults)s and (rule:container_project_admin or (rule:container_project_member and rule:container_owner) or (rule:container_project_member and rule:container_is_not_private))- Operations:
PUT
/v1/containers/{container-id}/aclPATCH
/v1/containers/{container-id}/acl
- Scope Types:
project
Create a new ACL, or replace an existing ACL, for a given container.
consumer:get- Default:
True:%(enforce_new_defaults)s and (role:admin or (rule:container_project_member and rule:container_owner) or (rule:container_project_member and rule:container_is_not_private) or rule:container_acl_read)- Operations:
GET
/v1/containers/{container-id}/consumers/{consumer-id}
- Scope Types:
project
DEPRECATED: Show information for a specific consumer.
container_consumers:get- Default:
True:%(enforce_new_defaults)s and (rule:container_project_admin or (rule:container_project_member and rule:container_owner) or (rule:container_project_member and rule:container_is_not_private) or rule:container_acl_read)- Operations:
GET
/v1/containers/{container-id}/consumers
- Scope Types:
project
List a container’s consumers.
container_consumers:post- Default:
True:%(enforce_new_defaults)s and (rule:container_project_admin or (rule:container_project_member and rule:container_owner) or (rule:container_project_member and rule:container_is_not_private) or rule:container_acl_read)- Operations:
POST
/v1/containers/{container-id}/consumers
- Scope Types:
project
Create a consumer.
container_consumers:delete- Default:
True:%(enforce_new_defaults)s and (rule:container_project_admin or (rule:container_project_member and rule:container_owner) or (rule:container_project_member and rule:container_is_not_private) or rule:container_acl_read)- Operations:
DELETE
/v1/containers/{container-id}/consumers
- Scope Types:
project
Delete a consumer.
secret_consumers:get- Default:
True:%(enforce_new_defaults)s and (rule:secret_project_admin or (rule:secret_project_member and rule:secret_owner) or (rule:secret_project_member and rule:secret_is_not_private) or rule:secret_acl_read)- Operations:
GET
/v1/secrets/{secret-id}/consumers
- Scope Types:
project
List consumers for a secret.
secret_consumers:post- Default:
True:%(enforce_new_defaults)s and (rule:secret_project_admin or (rule:secret_project_member and rule:secret_owner) or (rule:secret_project_member and rule:secret_is_not_private) or rule:secret_acl_read)- Operations:
POST
/v1/secrets/{secret-id}/consumers
- Scope Types:
project
Create a consumer.
secret_consumers:delete- Default:
True:%(enforce_new_defaults)s and (rule:secret_project_admin or (rule:secret_project_member and rule:secret_owner) or (rule:secret_project_member and rule:secret_is_not_private) or rule:secret_acl_read)- Operations:
DELETE
/v1/secrets/{secret-id}/consumers
- Scope Types:
project
Delete a consumer.
containers:post- Default:
True:%(enforce_new_defaults)s and role:member- Operations:
POST
/v1/containers
- Scope Types:
project
Create a container.
containers:get- Default:
True:%(enforce_new_defaults)s and role:member- Operations:
GET
/v1/containers
- Scope Types:
project
List a project’s containers.
container:get- Default:
True:%(enforce_new_defaults)s and (rule:container_project_admin or (rule:container_project_member and rule:container_owner) or (rule:container_project_member and rule:container_is_not_private) or rule:container_acl_read)- Operations:
GET
/v1/containers/{container-id}
- Scope Types:
project
Retrieve a single container.
container:delete- Default:
True:%(enforce_new_defaults)s and (rule:container_project_admin or (rule:container_project_member and rule:container_owner) or (rule:container_project_member and rule:container_is_not_private))- Operations:
DELETE
/v1/containers/{container-id}
- Scope Types:
project
Delete a container.
container_secret:post- Default:
True:%(enforce_new_defaults)s and (rule:container_project_admin or (rule:container_project_member and rule:container_owner) or (rule:container_project_member and rule:container_is_not_private))- Operations:
POST
/v1/containers/{container-id}/secrets
- Scope Types:
project
Add a secret to an existing container.
container_secret:delete- Default:
True:%(enforce_new_defaults)s and (rule:container_project_admin or (rule:container_project_member and rule:container_owner) or (rule:container_project_member and rule:container_is_not_private))- Operations:
DELETE
/v1/containers/{container-id}/secrets/{secret-id}
- Scope Types:
project
Remove a secret from a container.
orders:get- Default:
True:%(enforce_new_defaults)s and role:member- Operations:
GET
/v1/orders
- Scope Types:
project
List all orders associated with a project.
orders:post- Default:
True:%(enforce_new_defaults)s and role:member- Operations:
POST
/v1/orders
- Scope Types:
project
Create an order.
orders:put- Default:
True:%(enforce_new_defaults)s and role:member- Operations:
PUT
/v1/orders
- Scope Types:
project
Unsupported method for the orders API.
order:get- Default:
True:%(enforce_new_defaults)s and rule:order_project_member- Operations:
GET
/v1/orders/{order-id}
- Scope Types:
project
Retrieve an order’s metadata.
order:delete- Default:
True:%(enforce_new_defaults)s and rule:order_project_member- Operations:
DELETE
/v1/orders/{order-id}
- Scope Types:
project
Delete an order.
quotas:get- Default:
True:%(enforce_new_defaults)s and role:reader- Operations:
GET
/v1/quotas
- Scope Types:
project
List quotas for the project the user belongs to.
project_quotas:get- Default:
True:%(enforce_new_defaults)s and role:admin- Operations:
GET
/v1/project-quotasGET
/v1/project-quotas/{uuid}
- Scope Types:
project
List quotas for the specified project.
project_quotas:put- Default:
True:%(enforce_new_defaults)s and role:admin- Operations:
PUT
/v1/project-quotas/{uuid}
- Scope Types:
project
Create or update the configured project quotas for the project with the specified UUID.
project_quotas:delete- Default:
True:%(enforce_new_defaults)s and role:admin- Operations:
DELETE
/v1/project-quotas/{uuid}
- Scope Types:
project
Delete the project quotas configuration for the project with the specified UUID.
secret_meta:get- Default:
True:%(enforce_new_defaults)s and (rule:secret_project_admin or (rule:secret_project_member and rule:secret_owner) or (rule:secret_project_member and rule:secret_is_not_private) or rule:secret_acl_read)- Operations:
GET
/v1/secrets/{secret-id}/metadataGET
/v1/secrets/{secret-id}/metadata/{meta-key}
- Scope Types:
project
List a secret’s user-defined metadata, or retrieve a single item from a secret’s user-defined metadata by key.
secret_meta:post- Default:
True:%(enforce_new_defaults)s and (rule:secret_project_admin or (rule:secret_project_member and rule:secret_owner) or (rule:secret_project_member and rule:secret_is_not_private))- Operations:
POST
/v1/secrets/{secret-id}/metadata
- Scope Types:
project
Add a new key/value pair to the secret’s user-defined metadata.
secret_meta:put- Default:
True:%(enforce_new_defaults)s and (rule:secret_project_admin or (rule:secret_project_member and rule:secret_owner) or (rule:secret_project_member and rule:secret_is_not_private))- Operations:
PUT
/v1/secrets/{secret-id}/metadataPUT
/v1/secrets/{secret-id}/metadata/{meta-key}
- Scope Types:
project
Set a secret’s user-defined metadata, or update a single item in a secret’s user-defined metadata by key.
secret_meta:delete- Default:
True:%(enforce_new_defaults)s and (rule:secret_project_admin or (rule:secret_project_member and rule:secret_owner) or (rule:secret_project_member and rule:secret_is_not_private))- Operations:
DELETE
/v1/secrets/{secret-id}/metadata/{meta-key}
- Scope Types:
project
Delete a secret’s user-defined metadata by key.
secret:decrypt- Default:
True:%(enforce_new_defaults)s and (rule:secret_project_admin or (rule:secret_project_member and rule:secret_owner) or (rule:secret_project_member and rule:secret_is_not_private) or rule:secret_acl_read)- Operations:
GET
/v1/secrets/{secret-id}/payload
- Scope Types:
project
Retrieve a secret’s payload.
secret:get- Default:
True:%(enforce_new_defaults)s and (role:admin or rule:secret_project_admin or (rule:secret_project_member and rule:secret_owner) or (rule:secret_project_member and rule:secret_is_not_private) or rule:secret_acl_read)- Operations:
GET
/v1/secrets/{secret-id}
- Scope Types:
project
Retrieve a secret’s metadata.
secret:put- Default:
True:%(enforce_new_defaults)s and (rule:secret_project_admin or (rule:secret_project_member and rule:secret_owner) or (rule:secret_project_member and rule:secret_is_not_private))- Operations:
PUT
/v1/secrets/{secret-id}
- Scope Types:
project
Add the payload to an existing metadata-only secret.
secret:delete- Default:
True:%(enforce_new_defaults)s and (role:admin or rule:secret_project_admin or (rule:secret_project_member and rule:secret_owner) or (rule:secret_project_member and rule:secret_is_not_private))- Operations:
DELETE
/v1/secrets/{secret-id}
- Scope Types:
project
Delete a secret.
secrets:post- Default:
True:%(enforce_new_defaults)s and role:member- Operations:
POST
/v1/secrets
- Scope Types:
project
Create a secret.
secrets:get- Default:
True:%(enforce_new_defaults)s and role:member- Operations:
GET
/v1/secrets
- Scope Types:
project
List a project’s secrets.
secret:migrate_secretstore- Default:
True:%(enforce_new_defaults)s and (role:admin or (rule:secret_project_member and secret_store_id:%(target.secret.preferred_secret_store_id)s))- Operations:
PUT
/v1/secrets/{secret-id}/secret-store/{secret-store-id}
- Scope Types:
project
domain
system
Migrate a secret to a named secret store. Admins may target any store; members may migrate only to the project preferred store (or the global default).
secretstores:get- Default:
True:%(enforce_new_defaults)s and role:reader- Operations:
GET
/v1/secret-stores
- Scope Types:
project
Get a list of available secret store backends.
secretstores:get_global_default- Default:
True:%(enforce_new_defaults)s and role:reader- Operations:
GET
/v1/secret-stores/global-default
- Scope Types:
project
Get a reference to the secret store used as the default secret store backend for the deployment.
secretstores:get_preferred- Default:
True:%(enforce_new_defaults)s and role:reader- Operations:
GET
/v1/secret-stores/preferred
- Scope Types:
project
Get a reference to the preferred secret store, if one has been assigned previously.
secretstore_preferred:post- Default:
True:%(enforce_new_defaults)s and role:admin- Operations:
POST
/v1/secret-stores/{secret-store-id}/preferred
- Scope Types:
project
Set a secret store backend as the preferred backend for the project.
secretstore_preferred:delete- Default:
True:%(enforce_new_defaults)s and role:admin- Operations:
DELETE
/v1/secret-stores/{secret-store-id}/preferred
- Scope Types:
project
Remove the preferred secret store backend setting for the project.
secretstore:get- Default:
True:%(enforce_new_defaults)s and role:reader- Operations:
GET
/v1/secret-stores/{secret-store-id}
- Scope Types:
project
Get the details of a secret store by its ID.
transport_key:get- Default:
True:%(enforce_new_defaults)s and role:reader- Operations:
GET
/v1/transport_keys/{transport-key-id}
- Scope Types:
project
Get a specific transport key.
transport_key:delete- Default:
True:%(enforce_new_defaults)s and role:admin- Operations:
DELETE
/v1/transport_keys/{transport-key-id}
- Scope Types:
project
Delete a specific transport key.
transport_keys:get- Default:
True:%(enforce_new_defaults)s and role:reader- Operations:
GET
/v1/transport_keys
- Scope Types:
project
Get a list of all transport keys.
transport_keys:post- Default:
True:%(enforce_new_defaults)s and role:admin- Operations:
POST
/v1/transport_keys
- Scope Types:
project
Create a new transport key.