Authorization Access or Scopes

The main authorization model is based on scopes and it is driven by the OAuth2 specification. A scope is a simple string that contains no space which is interpreted by the API to accept, reject, or modify the behavior of a call. Most root scopes relates to a specific API endpoint, please use this API guide as reference, as each API will have listed which scope is required.

The following is a list of root scopes:

scope description
Admin Provide admin privileges
Asset Access and modify your assets
AO Manage and execute your Automation workflows
Casebook Access and modify your Casebooks
Enrich:Read Query your configured modules for threat intelligence
Event:Read Read IROH Events - Read Only
Feedback Submit Customer Feedback
Global Intel:Read Access Global Intelligence - Read Only
Inspect:Read Extract Observables and data from text
Integration Manage your modules (including Control Center tiles)
Investigation Perform threat analysis investigation
Invite Invite users into your organization
Notification Receive notifications from integrations
Oauth Manage OAuth2 Clients
Orbital Orbital Integration
Private Intel Access Private Intelligence
Profile Get your profile information
Registry Manage registry entries
Response List and execute response actions using configured modules
SSE SSE Integration: manage your on-prem devices
Telemetry:Write collect application data for analytics - Write Only
Users Manage users of your organisation
Webhook Manage your Webhooks

Sub Scopes

Read or Write Sub Scopes

Scopes are strings, but the Cisco XDR API supports a generic format of those scopes to provide fine-grained access. The first level is to provide read-only access to a scope. For that, it uses the suffix :read.

For example:

The global-intel:read is generally the scope that all users have by default. It means that the user can only access read-only routes of Cisco XDR Global Threat Intelligence. If the user tries to access a non read-only route, the user will receive an HTTP 403 Forbidden response status.

Sometime the scopes of the user cannot return a 403, but instead change the results. For example, the Response API provides both response call and references. If the user asks for all the possible responses with a scope limited to response:read, they will only receive the response they can trigger with a read-only user. And thus, they will only receive references. In summary, they will be able to have a link to the Secure Endpoint dashboard about some hash, but they will not be able to add or remove a hash from a Secure Endpoint list.

Scopes Tree Structure

In the previous section, it was explained that appending :read to some scope limits the access to read-only routes. There is also a mechanism that provides only access to some sub-trees of some API. For that, / is used to grant access only to a sub-set of all the scopes provided by the root scope.

To only grant access to the health routes to a client or user, the full scope of enrich can be replaced with the restricted scope of enrich/health:read.