Security Center¶
Security Center is the platform’s self-service access-governance UI. Product owners register data products here, teams request and are granted access to them, and row-level/column-level security policies get authored, all enforced by Trino’s native OPA access-control plugin (see Getting started: Sovereign Data Platform’s “Querying data” section) without any manual Rego editing.
Core concepts¶
For a step-by-step walkthrough with screenshots, see User manual.
Concept |
What it is |
|---|---|
Product |
A registered table ( |
Team |
A group of users (and applications) that owns products and/or requests access to other teams’ products. Membership can include users, groups, or applications. |
Role |
A named access level scoped to one product (e.g. |
Access request |
A team’s request for one of its members to be granted a product’s role. Goes through a request → approve/reject workflow; approved access can later be revoked. |
RLS rule |
Row-level security: a set of predicates ( |
CLS rule |
Column-level security: a column mask scoped to a role. One of four
fixed mask types: |
Requesting access to a product¶
From the Catalogus tree, search or browse the registered products. Requesting access to a product’s role submits an access request on behalf of your team, with a comment and contact explaining the request — visible to that product’s owner for approval. Your pending and past requests, across every state, are visible from your own view; nothing is granted until a product owner approves it.
Approving access requests (product owners)¶
From a product’s Beheer tab, an owner sees every pending access request
against that product’s roles and can approve, reject, or later
revoke previously-approved access. Owners can also create additional
roles beyond the reserved owner role (lowercase, starting with a
letter, e.g. analyst) — each new role is available immediately as a
request target and as an RLS/CLS scope.
Admin tasks¶
Users with the admin role get a Beheer (administration) menu with three areas, described step by step in Administrator journey:
Gebruikersbeheer (user management): manage platform users and teams.
Product synchronisatie and Unity Catalog: catalog settings, synchronization and deleting a catalog that has no tables (the API call is
DELETE /admin/unity-catalog/catalogs/{catalog}?confirm=<name>, admin only; the catalogssystemandmainare protected).Admin panel (products): delete a product or team outright (deleting a team also removes all of its groups; fails if the team still has dependent state), adopt a product the Trino sync job discovered but no team has claimed ownership of yet, and manually trigger a Trino sync to reconcile Security Center’s product registry against what actually exists in Trino.
How enforcement actually works¶
Security Center itself never talks to Trino at query time. Every RLS/CLS
rule authored through the UI is compiled into Rego and packaged into a
per-customer OPA bundle; each customer’s Trino OPA plugin polls its own
/trino/{customer}/bundle.tar.gz endpoint on an interval and picks up
rule changes automatically, with no Trino restart or manual policy
deployment needed. That endpoint is authenticated with a static bearer
token shared once at deploy time between Security Center and the
customer’s OPA instance, not a per-request Keycloak token (OPA has no
Keycloak identity of its own to present).
Spark follows the same rules. A user whose role carries a row filter or column mask reads that table in a notebook through Trino, so the filter and mask are applied there as well; such access is read-only.