Skip to main content

Scopes and Roles

Every permission decision combines two independent role tiers. Reading either one alone predicts the wrong answer, which is the most common source of confusion when an access problem is investigated.

TierGranted byDecides
Organization levelA realm role such as org:dynamoguard:developerWhether the user may create a kind of resource at all
Resource levelA role attached to one specific resourceWhat the user may do to that resource

The creator of a resource becomes its owner. This is what makes the tiers combine usefully: a user whose organization role grants only policy:create can still edit, train and delete the policies they created, because creating one grants them dynamoguard:policy:owner on it.

There is no group or team tier

An organization administrator sees every resource. Everyone else sees only what they own or what has been explicitly shared with them. No role grants visibility of a colleague's resources, so plan sharing before onboarding a team.

Organization-Level Roles​

These roles are assigned in Keycloak, either directly or through an identity-provider mapper. Read what a user actually holds with the command in Verifying Effective Roles.

DynamoGuard​

RolePolicyModelAI System
org:dynamoguard:admincreate, get, edit, delete, train, applycreate, get, edit, delete, share, getGuardDashboard, getAssociatedPolicies, getMonitoringLogs, applyPolicycreate, get, edit, delete, managePolicies, manageAISystems, managePoliciesOnAISystems
org:dynamoguard:developercreatecreatecreate
org:dynamoguard:membernonenonenone
org:dynamoguard:extensionAdmincreatecreate, createSelfManagednone
org:dynamoguard:extensionUsernonenonenone

member grants no scopes on any resource type. A user holding only member can sign in and see the interface, and every create action is denied.

DynamoEval​

RoleModelDatasetCustom RAG Application
org:dynamoeval:admincreate, get, edit, delete, share, and the full test and report setcreate, get, edit, delete, share, createTestcreate, get, update, delete
org:dynamoeval:developercreatecreatecreate
org:dynamoeval:membernonenonenone

IAM and Platform​

RoleScopes
org:iam:adminuser:create, user:edit, user:resetPassword, user:delete, user:get, user:setRole
org:iam:editoruser:create, user:get, user:setRole
org:iam:vieweruser:get
org:platform:adminbilling:createReport, billing:getTokenUsage, billing:getReport, billing:updateReport
Administrative configuration requires org:iam:admin

Per-user platform configuration, including DynamoGuard access activation, is written through an endpoint gated on org:iam:admin. Confirm that at least one account holds this role and that it is reachable without the identity provider, because a mapper that grants it can fail at the same time it is needed.

Resource-Level Roles​

These roles are attached to a single resource, either by creating it or by having it shared. They are never assigned organization-wide.

ResourceRoleScopes
Policydynamoguard:policy:ownerget, edit, delete, train, apply
Policydynamoguard:policy:editorget, edit, train, apply
Policydynamoguard:policy:viewerget
AI Systemdynamoguard:application:ownerget, edit, delete
AI Systemdynamoguard:application:editorget, edit, managePolicies, manageAISystems, managePoliciesOnAISystems
AI Systemdynamoguard:application:viewerget
Modeldynamoguard:model:ownerget, edit, delete, getGuardDashboard, getAssociatedPolicies, getMonitoringLogs, applyPolicy
Modeldynamoguard:model:editorget, edit, getGuardDashboard, getAssociatedPolicies, getMonitoringLogs, applyPolicy
Modeldynamoguard:model:viewerget, getGuardDashboard, getAssociatedPolicies, getMonitoringLogs
Modeldynamoguard:model:extensionUserget
Modeldynamoeval:model:ownerget, edit, delete, and the full test and report set
Modeldynamoeval:model:editorget, edit, createTest, updateTest, and the report set
Modeldynamoeval:model:viewerget, getTest, getAllTests, getTestReport, getTestReportDeepDive, getMetricsFromTests, getEvalDashboard
Datasetdynamoeval:dataset:ownerget, edit, delete, share, createTest
Datasetdynamoeval:dataset:editorget, edit, share, createTest
Datasetdynamoeval:dataset:viewerget, createTest
Custom RAG Applicationdynamoeval:cra:ownerget, update, delete
Custom RAG Applicationdynamoeval:cra:editorget, create, update
Custom RAG Applicationdynamoeval:cra:viewerget
An editor cannot delete, and an owner cannot always create

editor omits delete on every resource type. owner omits create, because creation is an organization-level decision. A user who owns a policy but lost their organization role can still edit that policy and cannot make another.

Choosing a Role​

The user needs toAssign
Build and manage their own policies, models or AI systemsorg:dynamoguard:developer
Manage resources created by other people, or see everythingorg:dynamoguard:admin
Run evaluations against their own models and datasetsorg:dynamoeval:developer
Read only, with specific resources shared to themmember, plus a resource-level share
Invite users and set rolesorg:iam:editor
Write per-user platform configurationorg:iam:admin

Assign the narrowest role that completes the task. developer covers the entire authoring workflow for a user's own work, including behavior generation on a policy they created, because ownership supplies the edit scope.

Verifying Effective Roles​

Read what the platform resolved, rather than inferring it from the Keycloak console:

Read a user's effective org-level roles
curl -s -H "Authorization: Bearer $ADMIN_TOKEN" \
"https://api.<domain>/v1/user/all?includeOrgLevelRoles=true" \
| jq '.users[] | select(.email=="USER_EMAIL") | {email, orgLevelRoles}'

An empty orgLevelRoles array on a federated user means no identity-provider mapper matched. See Claim-Mapped Roles Missing, and note that a user in this state receives a server error rather than a permission denial.