Roles & Access Control

MITRITY uses a role-based access control (RBAC) system to govern what your team members can do within the platform. Every user is assigned a role that determines their permissions across agents, policies, tools, security features, credentials, and administrative functions.

The Four-Role Model

MITRITY has four roles, each with progressively broader permissions:

RoleDescriptionTypical User
OwnerFull control over the tenant, including billing, SAML configuration, and user managementCompany founder, CTO, Head of Security
ManagerCan manage agents, policies, tools, and security features within their access scopeEngineering manager, Security lead, DevOps lead
MemberCan view and interact with day-to-day features (audit logs, approvals) but cannot modify configurationsEngineer, Analyst, Security analyst
ViewerRead-only access to dashboards and reportsExecutive, Auditor, Compliance officer

Permissions Matrix

The following table shows the complete permissions matrix. A checkmark indicates the role has permission for that action.

Agent Management

ActionOwnerManagerMemberViewer
View agentsYesYesYesYes
Register agentYesYesNoNo
Update agent configurationYesYesNoNo
Deregister agentYesYesNoNo
View agent permissionsYesYesYesYes
Modify agent permissionsYesYesNoNo
View agent destinationsYesYesYesYes
Modify agent destinationsYesYesNoNo

Policy Management

ActionOwnerManagerMemberViewer
View policiesYesYesYesYes
Create policyYesYesNoNo
Update policyYesYesNoNo
Delete policyYesYesNoNo
Run simulationYesYesYesNo
View simulation resultsYesYesYesYes

Approval Workflows

ActionOwnerManagerMemberViewer
View approval queueYesYesYesYes
Approve actionYesYes (scoped)NoNo
Deny actionYesYes (scoped)NoNo

Tool Catalog

ActionOwnerManagerMemberViewer
View tool catalogYesYesYesYes
Create custom toolYesYesNoNo
Update toolYesYesNoNo
Delete custom toolYesYesNoNo

Security Features

ActionOwnerManagerMemberViewer
View injection eventsYesYesYesYes
Mark false positiveYesYesYesNo
View delegation chainsYesYesYesYes
View DLP eventsYesYesYesYes
View threat intelligenceYesYesYesYes
Configure threat intel settingsYesYesNoNo
Submit threat indicatorYesYesYesNo

Credential Broker

ActionOwnerManagerMemberViewer
View credential metadataYesYesYesYes
Create credentialYesYesNoNo
Update credentialYesYesNoNo
Delete credentialYesYesNoNo
Create grantYesYesNoNo
Revoke grantYesYesNoNo
Revoke leaseYesYesNoNo

Compliance & Reporting

ActionOwnerManagerMemberViewer
View ML insightsYesYesYesYes
View audit logYesYesYesYes
Generate compliance reportYesYesYesNo
Download reportYesYesYesYes
Share reportYesYesNoNo

Administration

ActionOwnerManagerMemberViewer
View usersYesYesYesNo
Invite userYesNoNoNo
Update user roleYesNoNoNo
Remove userYesNoNoNo
Reset user MFAYesNoNoNo
View environmentsYesYesYesYes
Create environmentYesNoNoNo
Update environmentYesNoNoNo
Delete environmentYesNoNoNo
Configure SAML SSOYesNoNoNo
Manage API keysYesYesNoNo
View billingYesNoNoNo
Manage subscriptionYesNoNoNo
Configure settingsYesNoNoNo

Access Scopes

Access scopes determine where a user's permissions apply. A Manager with "all" scope can manage agents across all environments. A Manager with "scoped" access can only manage agents in specific environments they have been granted access to.

Scope Types

ScopeDescriptionAvailable For
allTenant-wide access. The user's role permissions apply across all environments.Owner (always), Manager (configurable)
scopedEnvironment-specific access. The user's role permissions only apply within the environments they have been granted access to.Manager (configurable), Member (configurable)

Scope Assignment

Owners always have all scope. Managers and Members can be assigned either all or scoped access.

curl -X PATCH https://api.mitrity.com/api/v1/users/user_jdoe \
  -H "Authorization: Bearer mk_live_your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "role": "manager",
    "access_scope": "scoped",
    "environment_ids": ["env_staging", "env_development"]
  }'

Response:

{
  "data": {
    "id": "user_jdoe",
    "email": "jdoe@company.com",
    "name": "Jane Doe",
    "role": "manager",
    "access_scope": "scoped",
    "environments": [
      { "id": "env_staging", "name": "Staging" },
      { "id": "env_development", "name": "Development" }
    ],
    "mfa_enabled": true,
    "last_login": "2026-03-01T09:00:00Z",
    "created_at": "2026-02-15T10:00:00Z"
  },
  "meta": {
    "request_id": "req_user001",
    "timestamp": "2026-03-01T10:00:00Z"
  }
}

How Scoping Works

When a scoped Manager attempts an action:

  1. The system checks the user's role permissions (can Managers do this action?).
  2. The system checks the user's environment access (is this resource in an environment the user has access to?).
  3. Both checks must pass for the action to proceed.

Example: A Manager scoped to "Staging" can create policies in the staging environment but cannot create policies that apply to the production environment.

Environment-Level Access

Environments are the primary scoping mechanism. When a user has scoped access, they can only interact with resources in their assigned environments.

Granting Environment Access

curl -X POST https://api.mitrity.com/api/v1/users/user_jdoe/environments \
  -H "Authorization: Bearer mk_live_your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "environment_id": "env_production"
  }'

Revoking Environment Access

curl -X DELETE https://api.mitrity.com/api/v1/users/user_jdoe/environments/env_production \
  -H "Authorization: Bearer mk_live_your-api-key"

Resource Grants

For even finer-grained access, you can grant users access to specific agents within their environments. This is useful when a team member should only manage a subset of agents, not all agents in an environment.

Creating a Resource Grant

curl -X POST https://api.mitrity.com/api/v1/users/user_jdoe/grants \
  -H "Authorization: Bearer mk_live_your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "resource_type": "agent",
    "resource_id": "agt_sales-bot",
    "permissions": ["view", "manage_permissions", "manage_destinations"]
  }'

Response:

{
  "data": {
    "id": "grant_8k2m",
    "user_id": "user_jdoe",
    "resource_type": "agent",
    "resource_id": "agt_sales-bot",
    "resource_name": "sales-bot",
    "permissions": ["view", "manage_permissions", "manage_destinations"],
    "created_at": "2026-03-01T10:05:00Z"
  },
  "meta": {
    "request_id": "req_grant001",
    "timestamp": "2026-03-01T10:05:00Z"
  }
}

Listing Resource Grants

curl https://api.mitrity.com/api/v1/users/user_jdoe/grants \
  -H "Authorization: Bearer mk_live_your-api-key"

Revoking a Resource Grant

curl -X DELETE https://api.mitrity.com/api/v1/users/user_jdoe/grants/grant_8k2m \
  -H "Authorization: Bearer mk_live_your-api-key"

User Management API

List Users

curl https://api.mitrity.com/api/v1/users \
  -H "Authorization: Bearer mk_live_your-api-key"

Response:

{
  "data": [
    {
      "id": "user_jsmith",
      "email": "jsmith@company.com",
      "name": "John Smith",
      "role": "owner",
      "access_scope": "all",
      "mfa_enabled": true,
      "last_login": "2026-03-01T08:00:00Z",
      "created_at": "2026-01-15T10:00:00Z"
    },
    {
      "id": "user_jdoe",
      "email": "jdoe@company.com",
      "name": "Jane Doe",
      "role": "manager",
      "access_scope": "scoped",
      "environments": [
        { "id": "env_staging", "name": "Staging" },
        { "id": "env_development", "name": "Development" }
      ],
      "mfa_enabled": true,
      "last_login": "2026-03-01T09:00:00Z",
      "created_at": "2026-02-15T10:00:00Z"
    }
  ],
  "meta": {
    "request_id": "req_user002",
    "timestamp": "2026-03-01T10:00:00Z",
    "total": 2
  }
}

Update User Role

curl -X PATCH https://api.mitrity.com/api/v1/users/user_jdoe \
  -H "Authorization: Bearer mk_live_your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "role": "manager",
    "access_scope": "all"
  }'

Set User Access Scope

curl -X PATCH https://api.mitrity.com/api/v1/users/user_jdoe \
  -H "Authorization: Bearer mk_live_your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "access_scope": "scoped",
    "environment_ids": ["env_staging", "env_development", "env_production"]
  }'

Invite a New User

curl -X POST https://api.mitrity.com/api/v1/users/invite \
  -H "Authorization: Bearer mk_live_your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "newuser@company.com",
    "role": "member",
    "access_scope": "scoped",
    "environment_ids": ["env_development"]
  }'

The invited user receives an email with a link to set up their account and configure MFA.

Remove a User

curl -X DELETE https://api.mitrity.com/api/v1/users/user_jdoe \
  -H "Authorization: Bearer mk_live_your-api-key"

Removing a user revokes all their sessions, API keys, and resource grants immediately.

MFA Management

All MITRITY users are required to have MFA enabled. Owners can reset a user's MFA if they lose access to their MFA device.

Reset User MFA

curl -X POST https://api.mitrity.com/api/v1/users/user_jdoe/reset-mfa \
  -H "Authorization: Bearer mk_live_your-api-key"

After resetting, the user is prompted to configure a new MFA method on their next login.

Dashboard Management

User Management Page

Navigate to Settings > Team to manage users. The page displays:

  • All users with their roles, access scopes, MFA status, and last login
  • Pending invitations
  • Environment access for scoped users

Role Change History

All role changes are logged in the audit log. Navigate to Audit Log and filter by event_type=user.role_changed to see the history.

Best Practices

Follow the Principle of Least Privilege

Assign the most restrictive role that allows the user to perform their duties. Most team members should be Members, not Managers.

Use Scoped Access for Large Teams

For organizations with multiple environments and teams, use scoped access to ensure team members can only modify resources in their area of responsibility.

Require MFA for All Users

MFA is mandatory in MITRITY and cannot be disabled. This is a deliberate security decision — governance platforms must be protected against account compromise.

Review Access Quarterly

Schedule quarterly access reviews. Remove users who no longer need access and adjust scopes for users whose responsibilities have changed.

Limit the Number of Owners

A tenant should have 2-3 Owners for redundancy, not more. Owners have unrestricted access including billing and SAML configuration.

Audit Role Changes

Monitor role change events in the audit log. Unexpected role escalations may indicate account compromise or unauthorized access.

Related Documentation

Roles & Access Control — Documentation | MITRITY