Understand FoundationaLLM role definitions

Role definition

A role defininition (or just role) is a collection of permissions. A role definition lists the actions that can be performed, such as read, write, and delete.

The following table describes the propoerties of a role definition.

Property Description
Name The display name of the role definition.
Id The unique identifier of the role definition.
Description The description of the role definition.
Actions An array of strings that lists the control plane actions that a role definition can perform. For example, FoundationaLLM.Agent/agents/create.
NotActions An array of strings that lists the actions that are excluded from the actions listed in the Actions property.
DataActions An array of strings that lists the data plane actions that a role definition can perform. For example, FoundationaLLM.Agent/agents/read.
NotDataActions An array of strings that lists the data plane actions that are excluded from the actions listed in the DataActions property.
AssignableScopes An array of strings that lists the scopes that the role definition can be assigned to.

Actions format

The string that represents an action has the following format:

FoundationaLLM.{ProviderName}/{resourceType}/{action}

Examples of actions include read, write, and delete.

The wildcard character (*) can be used to match any resource type or action. For example, FoundationaLLM.Agent/*/read matches all read actions for all resource types in the FoundationaLLM.Agent provider.

Role definition example

The following example shows the Contributor role definition. The wildcard (*) character under Actions indicates that the principal assigned to the role can perform all actions (i.e., it can manage everything). This includes also actions defined in the future, as FoundationaLLM adds new resource types. The actions under NotActions are subtracted from Actions. In this specific case, NotActions removes the role's ability to manage access to resources.

{
  "Name": "Contributor",
  "Id": "e459c3a6-6b93-4062-85b3-fffc9fb253df",
  "Description": "Allows you to manage everything except access to resources.",
  "Actions": [
    "*"
  ],
  "NotActions": [
    "FoundationaLLM.Authorization/*/delete",
    "FoundationaLLM.Authorization/*/write"
  ],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": [
    "/"
  ]
}

Control and data actions

Control plane actions are specified in the Actions and NotActions properties.

Examples of control plane actions in FoundationaLLM include:

  • Manage access to an agent
  • Create a new data source
  • Delete a prompt

Data plane actions are specified in the DataActions and NotDataActions properties.

NOTE: FoundationaLLM maintains a strict separation between the control and data planes. Control plane access is not inherited to the data plane. For example, if a user has the FoundationaLLM.Agent/agents/create permission, it does not mean that the user has the FoundationaLLM.Agent/agents/read permission.