Module 5 · Lecture 5.2
Users, Roles & Security
Roles govern what a person can see: Knowledge Graph access, column-level and row-level security, and role-restricted context.
User types answer what a person can do in Veezoo. Roles answer the other governance question: what a person can see. These recordings create roles and then use them to restrict Knowledge Graph access, share with user groups, hide columns, filter rows, and tailor the context the AI receives.
Everything runs on one worked scenario, a finance user and a sales user in the same organization, so you can follow how each layer changes what they get back.
Videos
Role Management
Knowledge Graph Restriction & Sharing with User Groups
Column-Level Security
Row-Level Security
Role-Restricted Static Notes
Key points
- Two levers: user types define what someone can do, roles define what they can see.
- Roles live in Veezoo Admin, can double as a user group for sharing, and under Access Control they decide who sees which Knowledge Graph.
- Column-level security:
for_user_roleon an attribute limits it to those roles, andnot_for_user_roledoes the inverse. - A restricted attribute does not exist for that user, and because the AI writes VQL rather than raw SQL, no prompt can reveal it.
- Row-level security: a virtual table replaces the class table and matches rows against the logged-in user, with the user context injected during the deterministic SQL translation.
for_user_role_sqlsets the role restriction on a class's entities automatically, so an EMEA user never sees that a Sydney store exists.- Role-restricted notes: a
static_notecan be limited to a role, giving those users extra always-on context.
Check your understanding
What is the difference between user types and roles in Veezoo?
Viewer, Creator, and Admin describe capabilities, while roles govern visibility and data access.
Gross margin is limited to the Finance role. A sales user asks Veezoo to query it anyway. What happens?
For a restricted role the column is invisible, and the AI writes VQL rather than raw SQL, so there is nothing to talk into it.
Sales reps should only see orders from their own region. How is that built?
Row-level security is a virtual table condition resolved in the deterministic VQL to SQL step, so the same question returns different rows per user.