Pangolin uses a multi-layered security model:
- Tenant Isolation: Strict separation of resources between tenants.
- Role-Based Access Control (RBAC): Permissions assigned to users via roles.
- Tag-Based Access Control (TBAC/ABAC): Permissions granted on assets based on their tags (business metadata).
- Tenant Isolation: Users are confined to their tenant. Cross-tenant access is impossible except for the Root user.
- Roles:
root: Global superuser.tenant-admin: Admin for a specific tenant.tenant-user: Regular user, requires explicit permissions.
- Permissions:
- Scopes:
Catalog,Namespace,Asset,Tag. - Actions:
Read,Write,Delete,Admin.
- Scopes:
Base Endpoint: /api/v1/permissions
- Method:
POST - Body:
{ "user_id": "uuid-of-user", "scope": "Catalog", "resource": "analytics", "action": "Read" }
Grant access to any asset that checks the "PII" tag.
- Body:
Note: For Tag scope, the
{ "user_id": "uuid-of-compliance-officer", "scope": "Tag", "resource": "PII", "action": "Read" }resourcefield is the Tag Name.
- Method:
DELETE - Path:
/api/v1/permissions/{permission_id}
- Method:
GET - Path:
/api/v1/permissions - Params:
user={uuid},role={role_name}
# Grant Read on 'analytics' catalog (RBAC)
pangolin-admin grant-permission \
--username alice \
--action Read \
--resource analytics
# Grant Read on all assets tagged 'Public' (TBAC)
pangolin-admin grant-permission \
--username alice \
--action Read \
--scope Tag \
--resource Publicpangolin-admin revoke-permission --id <permission-uuid># List all permissions
pangolin-admin list-permissions
# Filter by user
pangolin-admin list-permissions --user alice# RBAC
client.permissions.grant(
user_id="uuid...",
scope="Catalog",
resource="analytics",
action="Read"
)
# TBAC (Tag-Based)
client.permissions.grant(
user_id="uuid...",
scope="Tag",
resource="Confidential",
action="Read"
)perms = client.permissions.list(user_id="uuid...")
for p in perms:
print(f"{p.scope}: {p.resource} -> {p.action}")client.permissions.revoke(permission_id="uuid...")- Log in as a Tenant Admin.
- Navigate to Permissions.
- Grant: Click "Grant Permission".
- Select User or Role.
- Select Scope: Choose Tag for ABAC/TBAC strategies.
- Enter Resource: The name of the tag (e.g.,
PII,Financial). - Select Action.
- Click Grant.