Introduction
Formal’s permission system is built on the Open Policy Agent (OPA), allowing you to restrict user access to specific applications through Rego policies. By defining granular permissions, you can ensure users have access only to the applications necessary for their roles and responsibilities. These permissions are enforced against our API endpoints.Default permissions
Upon account creation, Formal operates under an allow-by-default model. Meaning, by default, if no permission blocks an endpoint for a given user, then the endpoint is allowed.Permission Model
Unlike other software products, Formal does not have the traditional concept of Roles. Instead, users can leverage Permissions to create role based access control (RBAC) using your organization’s Groups (which can be SCIM provisioned from your IDP into Formal).User experience when blocked
The Formal APIs will return HTTP 403 error status codes if a user is blocked on a particular endpoint. Users who are interacting with the Formal APIs through the Control Plane will experience “Forbidden” toasts or dialogs.
List of inputs
You can block or allow requests based on the following user and application inputs:User inputs
input.user.idinput.user.nameinput.user.first_nameinput.user.last_nameinput.user.emailinput.user.groupsinput.user.ip_address
Application inputs
input.app.nameinput.app.command.nameinput.app.command.type
List of command types
Here is a table listing all command types that can be used. If the API call contains the operation, then it is categorized as the corresponding type.| Type | Operations |
|---|---|
| read | Get, List |
| create | Create |
| update | Update |
| delete | Delete |
| login | Login |
List of applications
API endpoints are segmented into Applications. Here is a table listing all applications that can be configured for access permissions:| Name | Description |
|---|---|
| Access | Give access to managing user access tokens. |
| Connector | Give access to Formal Connectors. |
| Dashboard | Give access to dashboards and account overview. |
| Desktop | Give access to the Formal Desktop app features and settings. |
| Developer | Give access to developer setting and API credentials. |
| DirectorySync | Give access to directory sync configuration. |
| DSPM | Give access to DSPM features and findings. |
| Group | Give access to group management and permissions. |
| IntegrationBI | Give access to Business Intelligence integrations (e.g. Metabase). |
| IntegrationCloud | Give access to all cloud integrations (e.g. AWS). |
| IntegrationMDM | Give access to MDM integrations. |
| IntegrationsLog | Give access to all log integrations (e.g. Splunk). |
| Inventory | Give access to the Formal Data Inventory. |
| Logs | Give access to all logs. |
| Permissions | Give access to manage permissions. |
| Policies | Give access to policies. |
| PolicyDataLoader | Give access to policy data loaders. |
| Resource | Give access to resources. |
| Satellite | Give access to satellites. |
| Sessions | Give access to user session recordings. |
| Sidecar | An older app that is similar to the Connectors app. |
| Slack | Give access to Slack integration management. |
| Space | Give access to Space (workspace) management. |
| Sso | Give access to Single Sign-On (SSO) management. |
| Trackers | Give access to row level trackers. |
| User | Give access to user management and administration. |
| Version | Give access to version and build information. |