Skip to content

Barbican Policies

Introduction

This document presents the permissions available for reader and member roles on the Barbican service (key management) of Infomaniak Public Cloud, based on OpenStack default policies.

Context

Application Credentials must be created with the appropriate role according to functional needs. This matrix helps you choose the right role.

Legend

Symbol Meaning
✅ Allowed - The policy explicitly permits this action
❌ Forbidden - The policy explicitly denies this action
🔍 Conditional - Allowed based on ownership, visibility or ACL permissions

Main Secret Management

Operation Endpoint Policy Reader Member Conditions
List secrets GET /v1/secrets secrets:get ✅ ✅ Project only
Show secret GET /v1/secrets/{id} secret:get 🔍 🔍 Based on ownership*
Create secret POST /v1/secrets secrets:post ❌ ✅ Project member
Update secret payload PUT /v1/secrets/{id} secret:put ❌ 🔍 Secret owner
Delete secret DELETE /v1/secrets/{id} secret:delete ❌ 🔍 Secret owner

*Ownership rules: project admin, secret owner, or non-private secret in project


Secret Data Management

Operation Endpoint Policy Reader Member Conditions
Decrypt secret GET /v1/secrets/{id}/payload secret:decrypt 🔍 🔍 Based on ownership*

*Ownership rules: project admin, secret owner, non-private secret in project, or ACL read permission


Secret Metadata Management

Operation Endpoint Policy Reader Member Conditions
List metadata GET /v1/secrets/{id}/metadata secret_meta:get 🔍 🔍 Based on ownership*
Show metadata GET /v1/secrets/{id}/metadata/{key} secret_meta:get 🔍 🔍 Based on ownership*
Create metadata POST /v1/secrets/{id}/metadata/{key} secret_meta:post ❌ 🔍 Secret owner
Update metadata PUT /v1/secrets/{id}/metadata secret_meta:put ❌ 🔍 Secret owner
Update specific metadata PUT /v1/secrets/{id}/metadata/{key} secret_meta:put ❌ 🔍 Secret owner
Delete metadata DELETE /v1/secrets/{id}/metadata/{key} secret_meta:delete ❌ 🔍 Secret owner

*Ownership rules: project admin, secret owner, non-private secret in project, or ACL read permission


Secret ACL Management

Operation Endpoint Policy Reader Member Conditions
Get secret ACL GET /v1/secrets/{id}/acl secret_acls:get 🔍 🔍 Based on ownership*
Create/Update ACL PUT /v1/secrets/{id}/acl secret_acls:put_patch ❌ 🔍 Secret owner
Patch ACL PATCH /v1/secrets/{id}/acl secret_acls:put_patch ❌ 🔍 Secret owner
Delete ACL DELETE /v1/secrets/{id}/acl secret_acls:delete ❌ 🔍 Secret owner

*Ownership rules: project admin, secret owner, or non-private secret in project


Secret Consumers Management

Operation Endpoint Policy Reader Member Conditions
List consumers GET /v1/secrets/{id}/consumers secret_consumers:get 🔍 🔍 Based on ownership*
Create consumer POST /v1/secrets/{id}/consumers secret_consumers:post ❌ 🔍 Secret owner
Delete consumer DELETE /v1/secrets/{id}/consumers secret_consumers:delete ❌ 🔍 Secret owner

*Ownership rules: project admin, secret owner, non-private secret in project, or ACL read permission


Container Management

Operation Endpoint Policy Reader Member Conditions
List containers GET /v1/containers containers:get ✅ ✅ Project only
Show container GET /v1/containers/{id} container:get 🔍 🔍 Based on ownership*
Create container POST /v1/containers containers:post ❌ ✅ Project member
Delete container DELETE /v1/containers/{id} container:delete ❌ 🔍 Container owner

*Ownership rules: project admin, container owner, non-private container in project, or ACL read permission


Container Secrets Management

Operation Endpoint Policy Reader Member Conditions
Add secret POST /v1/containers/{id}/secrets container_secret:post ❌ 🔍 Container owner
Remove secret DELETE /v1/containers/{id}/secrets/{secret_id} container_secret:delete ❌ 🔍 Container owner

Container ACL Management

Operation Endpoint Policy Reader Member Conditions
Get container ACL GET /v1/containers/{id}/acl container_acls:get 🔍 🔍 Based on ownership*
Create/Update ACL PUT /v1/containers/{id}/acl container_acls:put_patch ❌ 🔍 Container owner
Patch ACL PATCH /v1/containers/{id}/acl container_acls:put_patch ❌ 🔍 Container owner
Delete ACL DELETE /v1/containers/{id}/acl container_acls:delete ❌ 🔍 Container owner

*Ownership rules: project admin, container owner, or non-private container in project


Container Consumers Management

Operation Endpoint Policy Reader Member Conditions
List consumers GET /v1/containers/{id}/consumers container_consumers:get 🔍 🔍 Based on ownership*
Create consumer POST /v1/containers/{id}/consumers container_consumers:post ❌ 🔍 Container owner
Delete consumer DELETE /v1/containers/{id}/consumers container_consumers:delete ❌ 🔍 Container owner

*Ownership rules: project admin, container owner, non-private container in project, or ACL read permission


Orders Management

Operation Endpoint Policy Reader Member Conditions
List orders GET /v1/orders orders:get ✅ ✅ Project only
Show order GET /v1/orders/{id} order:get ✅ ✅ Project member
Create order POST /v1/orders orders:post ❌ ✅ Project member
Delete order DELETE /v1/orders/{id} order:delete ❌ ✅ Project member

Quotas Management

Operation Endpoint Policy Reader Member Conditions
Get quotas GET /v1/quotas quotas:get ✅ ✅ Project only

Secret Stores Management

Operation Endpoint Policy Reader Member Conditions
List secret stores GET /v1/secret-stores secretstores:get ✅ ✅ Global information
Show secret store GET /v1/secret-stores/{id} secretstore:get ✅ ✅ Global information
Get global default GET /v1/secret-stores/global-default secretstores:get_global_default ✅ ✅ Global information
Get preferred GET /v1/secret-stores/preferred secretstores:get_preferred ✅ ✅ Project setting

Transport Keys Management

Operation Endpoint Policy Reader Member Conditions
List transport keys GET /v1/transport_keys transport_keys:get ✅ ✅ Global information
Show transport key GET /v1/transport_keys/{id} transport_key:get ✅ ✅ Global information

Capabilities Summary by Role

Granted permissions:

  • ✅ View project secrets and containers
  • ✅ View public and shared resources
  • ✅ Decrypt authorized secrets
  • ✅ View metadata and ACLs
  • ✅ View orders and quotas
  • ✅ View secret stores information

Limitations:

  • ❌ No creation or modification actions
  • ❌ No ACL or metadata management
  • ❌ No consumer management

Granted permissions:

  • ✅ All Reader capabilities
  • ✅ Create secrets and containers
  • ✅ Modify and delete owned resources
  • ✅ Manage metadata and ACLs
  • ✅ Manage consumers
  • ✅ Create and manage orders

Limitations:

  • ❌ Limited to project-scoped operations
  • ❌ Can only modify owned resources

Usage Examples

Secret Consultation Application

Use case: Application reading configuration secrets

Recommended role: reader

# Application Credential
role: reader

# Possible actions
- openstack secret list
- openstack secret get <secret-id>
- openstack secret get --payload <secret-id>

Secret Management Application

Use case: CI/CD, automated certificate management

Recommended role: member

# Application Credential
role: member

# Possible actions
- openstack secret store --name db-password --payload 'mysecret'
- openstack secret container create --name ssl-certs
- openstack ca get --ca-id <ca-id>

Context Variables

Policies use the following variables to determine authorizations:

Variable Description
%(target.secret.project_id)s Secret owner project ID
%(target.secret.creator_id)s Secret creator user ID
%(target.secret.read_project_access)s Secret visibility status
%(target.container.project_id)s Container owner project ID
%(target.container.creator_id)s Container creator user ID
%(target.order.project_id)s Order owner project ID
%(enforce_new_defaults)s Enable new default policies

Important Notes

Best Practices

  1. Principle of least privilege: Use the reader role if you only need to read secrets
  2. Resource ownership: Only resource owners can modify secrets and containers
  3. Private vs Public: Manage resource visibility through ACLs
  4. Application Credentials management: Create specific credentials per use case

Security Considerations

  • Secret payloads are sensitive data - ensure proper access control
  • ACLs allow cross-project sharing - use with caution
  • Private resources are only accessible by their creators and project admins