Authorization tokens

Authorization tokens can be created by users and administrators to provide fine-grained access control to resources (channels) or scopes when using the API or CLI. These tokens can be used in place of username-based authentication, particularly for third-party applications or automation tools.

This topic provides guidance on the following actions:

Understanding tokens

Scope-based

Scope-based tokens give the token holder permission to take specific actions. It is possible to create private tokens with a specific set of scopes.

Resource-based

Resource-based tokens provide access to specific resources. Channel group permissions granted by the token will determine what actions the user is allowed to take.

Understanding scopes

In our model, scopes are represented as a concatenated string, like so:

Resource:Action

Note

Some features in the table below may contain “(by user with manage permissions)”, like in the feature associated with channel:edit in the third row down, for example. This means the token has a role with a corresponding permission level (in this case, manage) for a specific resource (in this case, channel).


Resource

Action

Scope (Resource + Action)

Feature

Default Roles

channel

create

channel:create

Create a channel (at least by authenticated user)

author, admin

view

channel:view

View a channel (public)

everyone, author, admin

edit

channel:edit

Edit a channel information (by user with manage permissions)

admin

delete

channel:delete

Delete a channel (by user with manage permission)

admin

history

channel:history

See channel history (by user with manage permissions)

admin

view-artifacts

channel:view-artifacts

View channel artifacts (public)

everyone, author, admin

channel.default-channel

edit

channel.default-channel:edit

Edit default channel (user with manage permissions)

admin

channel.group

edit

channel.group:edit

Edit channel group (user with manage permissions)

admin

channel.mirror

view

channel.mirror:view

View channel mirror configuration

admin-only

edit

channel.mirror:edit

Edit channel mirror configuration

admin-only

subchannel

create

subchannel:create

Create subchannel (user with write permission) to the parent channel

admin

view

subchannel:view

View subchannel (public)

everyone, author, admin

edit

subchannel:edit

Edit subchannel information (user with manage permission)

admin

delete

subchannel:delete

Edit subchannel information (user with manage permission)

admin

history

subchannel:history

View subchannel history (user with manage permission)

admin

view-artifacts

subchannel:view-artifacts

View subchannel artifacts (public)

everyone, author, admin

subchannel.group

edit

subchannel.group:edit

View subchannel groups (user with manage permissions)

admin*

subchannel.mirror

view

subchannel.mirror:view

View subchannel mirror configuration

admin-only

edit

subchannel.mirror:edit

Edit subchannel mirror configuration

admin-only

artifact

create

artifact:create

Upload artifact (user with write permission to parent resource which is channel or subchannel)

author, admin

view

artifact:view

View artifact (public)

everyone author, admin

edit

artifact:edit

Edit artifact (user with manage permission to parent resource)

author, admin

download

artifact:download

Download artifact (public)

everyone author, admin

delete

artifact:delete

Delete artifact (user with manage permission to parent resource)

author, admin

cve

view

cve:view

View CVE

admin-only

role

view

role:view

View custom roles

admin-only

edit

role:edit

Edit custom roles

admin-only

system.license

view, edit

system.license:view system.license:edit

View / Edit licenses

system.blobs ?

delete

system.blobs:delete

Delete orphan blobs

system

View system history

system

View system stats

Italicized items in table are under development.

Listing the available authorization scopes

Via the API:

GET /api/system/tokens

Via the CLI:

conda repo auth --list-scopes

Listing the user authorization tokens

Via the API:

GET /api/account/token

Via the CLI:

conda repo auth --list

Create a new user authorization token

Via the API:

POST /api/account/tokens

Via the CLI:

conda repo auth --create -n <NAME>

Removing a user authorization token

Via the API:

DELETE /api/account/tokens/<TOKEN_ID>

Via the CLI:

conda repo auth --remove <TOKEN_ID>