Blockstream Enterprise
RecipesRoles rules

Roles & Permissions Guide

This guide describes the role-based access control (RBAC) system in the Custody Engine, including roles, permissions, and rules configuration.

Overview

The Custody Engine implements a three-tier RBAC (Role-Based Access Control) model that governs who can do what within your workspace.

Why Role-Based Access Control?

In a custody environment, precise access control is critical so only the right roles can move funds or approve transactions. It also limits who can change wallets and policies, preventing mistakes and unauthorized changes. Finally, RBAC enforces least privilege and makes audits easy by clearly linking actions to roles.

Key Principles:

  1. Separation of Duties: Users who create transactions shouldn't be the only ones who can approve them
  2. Least Privilege: Users receive only the permissions necessary for their job function
  3. Auditability: Every action is traceable to a user with a specific role
  4. Scalability: Roles can be assigned to users as they join, rather than configuring individual permissions

The model

  1. Roles - Define user access levels
  2. Rules - Specific resource + action pairs that grant access
Users Roles Rules P1 P2 P3 User A User B Super Admin Workspace Owner Wallet Maintainer resource: *action: * resource: /usersaction: create resource: /walletsaction: edit

Predefined Roles

The system provides 7 predefined role types organized into two categories. Understanding the difference between these categories is crucial for proper access control setup.

Workspace vs. Wallet Scope

┌─────────────────────────────────────────────────────────────────┐
│                         WORKSPACE                               │
│  ┌───────────────────────────────────────────────────────────┐  │
│  │ Workspace Roles can:                                      │  │
│  │  • Create/manage users, groups, policies                  │  │
│  │  • Create new wallets and signers                         │  │
│  │  • Approve workspace-level proposals                      │  │
│  │  • View all workspace resources                           │  │
│  └───────────────────────────────────────────────────────────┘  │
│                                                                 │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐              │
│  │  Wallet A   │  │  Wallet B   │  │  Wallet C   │              │
│  │ ─────────── │  │ ─────────── │  │ ─────────── │              │
│  │ Wallet roles│  │ Wallet roles│  │ Wallet roles│              │
│  │ only apply  │  │ are scoped  │  │ per wallet  │              │
│  │ to THIS     │  │ to THIS     │  │             │              │
│  │ wallet      │  │ wallet      │  │             │              │
│  └─────────────┘  └─────────────┘  └─────────────┘              │
└─────────────────────────────────────────────────────────────────┘

Workspace roles provide organization-wide permissions - managing users, creating wallets, configuring policies.

Wallet roles provide wallet-specific permissions - viewing balances, creating transactions, approving proposals for a specific wallet.

Workspace-Level Roles

RoleIdentifierDescription
Super Adminsuper-adminFull unrestricted access to all resources
Workspace Ownerworkspace-ownerOwner-level workspace access with approval rights
Workspace Maintainerworkspace-maintainerMaintenance of workspace resources
Workspace Viewerworkspace-viewerRead-only workspace access

Wallet-Level Roles

RoleIdentifierDescription
Wallet Maintainerwallet-maintainerFull wallet management capabilities
Standard Wallet Userstandard-wallet-userStandard user operations on wallets
Wallet Viewerwallet-viewerRead-only wallet access

Role Hierarchy

Wallet Roles Workspace Roles Super Admin Wallet Viewer Standard Wallet User Wallet Maintainer Workspace Viewer Workspace Maintainer Workspace Owner

Note: Higher roles include all permissions of roles below them in the hierarchy. Wallet-level roles provide access to specific wallets, while workspace-level roles provide broader organizational access.

On this page