Pangolin implements a hierarchical, additive Role-Based Access Control (RBAC) system. It ensures that data is highly secure by default while providing flexibility through cascading grants and Tag-Based Access Control (TBAC).
Permissions in Pangolin are inherited downwards. A grant at a higher level automatically applies to all resources contained within that scope.
| Scope | Includes | Use Case |
|---|---|---|
| Catalog | All Namespaces & Assets | Full access for a specific Data Team. |
| Namespace | All child Assets (Tables/Views) | Access to a specific "Schema" or project area. |
| Asset | Specific Table/View only | Granular access to a single sensitive dataset. |
- If you grant
Readon a Namespace, the user can read every table existing now OR created in the future within that namespace. - Grants are Additive: If a user is denied
Writeat the Catalog level but grantedWriteon a specific Table, they can write to that table.
The admin tool is the primary way to manage grants.
Grant Permission:
# Grant Read on a specific namespace to a user
pangolin-admin grant-permission <user-id> \
--action read \
--scope namespace \
--catalog production \
--namespace salesRevoke Permission:
pangolin-admin revoke-permission <permission-id>List Permissions:
pangolin-admin list-permissions --user <user-id>- Log in as a Tenant Admin.
- Navigate to Identity -> Users or Identity -> Roles.
- Select a User/Role and click the Permissions tab.
- Click Add Permission and select the Scope (Catalog, Namespace, or Asset) and the allowed Actions.
Manage access at scale using classification tags rather than individual table grants.
- Tag an Asset: (e.g., Tag
ordersasFINANCIAL). - Grant Tag Access: Grant a role
Readon theTagscope forFINANCIAL. - Result: Any user with that role can access all assets tagged
FINANCIALacross all catalogs.
Pangolin tracks "Who granted What to Whom" in the Audit Logs. Every permission change is a first-class event, allowing security teams to reconstruct the history of access for any dataset.
- Favor Roles over Users: Create a role like
Data_Analystand grant it permissions, then assign users to that role. - Start Specific: Start with
AssetorNamespacelevel grants before jumping toCatalogwide access. - Audit Regularly: Use the
Audit Logsto verify that permissions are being used as intended.