Important
This section provides information about the legacy permissions model (Permissions V1) screen. For the new permissions model (Permissions V2), see Permissions
The JFrog Platform provides a flexible permissions model that gives administrators fine-grained control over how users and groups access the different resources- repositories, builds, Release Bundles, Edge node destinations, and Pipeline Sources. Permissions are managed from a central location, where you can control how users or groups can view and perform activities.
By defining Permission Targets, you can set the physical resources, for example, repositories, and select users or groups with a corresponding set of permissions defining how they can access the specified repositories. A classic example would be if you have two engineering teams using either Go or Docker repositories. You can create a Permission Target for each group (i.e. for each engineering team), in which you grant access to the relevant resources with the appropriate permissions.
The JFrog Platform supports these main permission categories:
CRUD Permissions: A set of predefined CRUD permissions that can be applied to each of the resources including Read, Deploy/Cache, Delete/Overwrite, Annotate, and Manage.
Product-based Permissions: A set of product-specific permissions that are available if the product is installed on your system.
For example, if you have installed:
JFrog Xray: The Manage Xray Metadata permissions is supported.
JFrog Distribution: The Distribute permission is supported.
JFrog Pipelines: The Trigger Pipeline permission is supported.
Role-based Permissions: A global permission and is set on the User or Group level. Manage Policies and Manage Watches are the only role-based permissions in the Platform and are available when installing JFrog Xray.
Create and Manage Permissions
Permissions are additive and must be explicitly granted. If a checkbox is not set for a user, then that user does not have the corresponding permission.
Permissions are centrally managed in the Administration module under User Management | Permissions.
The workflow for creating permission targets is:
Select resources
Assign users or groups
Assign permissions
From the Administrationmodule, navigate to User Management | Permissions and click New Permission.
Step 1: Select Resources
Type a unique meaningful name for the permission target that will easily help you manage and detect the required permission. For example: RnD_India, Project X, DevOps_US.
Click + plus sign to assign resources to the permission target.
Repositories
The Repository permission targets define what a user has access to view in the repository resource.
Click + Add Repositories and select the repositories to which this Permission Target will apply.
The following methods are supported for repositories in your Permission Target.
Selecting Repositories from a list of existing repositories.
Filter by Repository Type: You can select Any Local Repository or Any Remote Repository or Any Distribution Repository. Selecting either of these options will add all the existing and future repositories including in the selected type to this permission target. For example, selecting Any Local Repository will add all of the existing local repositories to the Permission Target and future local repositories.
Include and Exclude Patterns: The include and exclude patterns are based on "Ant-like" expressions, allowing you to restrict (i.e. whitelist / blacklist) the access for users or groups only to specific paths in the selected repositories. The include and exclude patterns are limited to 1024 characters.
For example, you can create a permission target that allows user "Builder" and group "Deployers" to read from and deploy artifacts to the
libs-releases
repository. You can then add "org/apache/**" as an include pattern to the aforementioned permission target causing users in this permission target to only have access to paths under "org/apache/**" in thelibs-releases
repository.
Builds
The build permission targets define what a user has access to view in the Builds resource.
Click + Add Builds and select the builds to which this Permission Target will apply.
The following methods are supported for including builds in your Permission Target.
Any Build: You can select Any Build to add all the existing and future build including to this permission target.
By Name: You can select existing builds from the Available Builds list. Selecting a build means that future builds runs for this build will be included in the permission target.
Include and Exclude Patterns (By Patterns): Based on "Ant-like" expressions, allowing you to specify any number of Include or Exclude Patterns in the corresponding entry field. Patterns are limited to 1024 characters. When providing the Read permission to the selected builds (i.e. patterns), the user will see those builds in the Builds page and also have access to the relevant build in the
artifactory-build
repository. To add all builds that start with 'apache'
(regardless if they already exist in Artifactory), use the following include pattern: "apache**/**". Granting the 'Read and Deploy' permission for this build pattern, provides users with access to all builds that start with 'apache
' and allows them to upload build-info files that start with the term 'apache' in the build name.
Note
The artifactory-build-info
repository is not included in the repositories permissions since it is automatically part of the build permissions. i.e. after assigning a permission on Builds section, the user will get the corresponding permission to the relevant builds under the repository. Adding a build provides the specified users/groups in this permission target, access to the corresponding path in the artifactory-build-info repository.
Release Bundles
Requires an Enterprise+ license.
You can assign permissions to manage the Release Bundles resource. Release Bundles are part of the Distribution process and are the entities that group together the contents that are part of your release, providing the bill of materials for your software releases. For example, you can group together the different build artifacts, such as Docker images, that make up your software release that can then be pushed to your point of sale devices. The Release Bundle is secure and immutable, ensuring that no manipulation can be made by unauthorized users. For more information, see Release Bundles.
Click + Add Release Bundles and select the Release Bundles to which this Permission Target will apply.
The following methods are supported for including Release Bundles in your Permission Target.
Any Release Bundle: You can select Any Release Bundle to add all the existing and future Release Bundles to this permission target.
By Name: You can select existing Release Bundles from the Available Release Bundles list. Selecting a Release Bundle means that all versions of the Release Bundles will be included in the permission target.
Include and Exclude Patterns (By Pattern): Based on "Ant-like" expressions, allowing you to specify any number of Include or Exclude Patterns in the corresponding entry field. Patterns are limited to 1024 characters. When providing the Read permission to the selected Release Bundles (i.e. patterns), the user will see those Release Bundles in the Distribution page in the UI. For example, to add all Release Bundles that start with 'apache' (whether or not they exist in Artifactory), add the following include pattern: 'apache**/**. Granting the Read and Deploy permission for this Release Bundle pattern, for example, will provide users access to all Release Bundles that start with 'apache' and allow them to create Release Bundles containing 'apache'.
Change the Default Release Bundle Source Repository: Scroll down to the Advanced section in the Add Release Bundles page, remove the release-bundles check box and select another Release Bundles Source repository.
Destinations
Requires an Enterprise+ license.
What is an JFrog Artifactory Edge node?
JFrog Artifactory Edge (an "Edge node") is an edition of JFrog Artifactory whose available features have been customized to serve the primary purpose of distributing software to a runtime such as a data center, a point-of-sale or even a mobile device. All packages hosted in an Edge node are Release Bundle which is a secure and immutable collection of software packages that make up a release to be provisioned.
A destination is a target Artifactory Edge to which you can distribute release bundles. Administrators can assign users and groups permissions to specific destinations and actions such as creating, deleting and distributing Release Bundles. Available only if at least one Release Bundle was created.
Click + Add Destinations and select the Destinations to which this Permission Target will apply.
The following methods are supported for including Destinations (Edge Nodes) in your Permission Target.
Any Destination: You can select Any Destination to add all the existing and future Destination Edge Nodes to this permission target.
By Name: You can select existing Edge nodes (i.e. Destinations) from the Available Destinations list.
By Pattern:
JPD Name Pattern: A JPD is the JFrog Deployment Unit. Based on "Ant-like" expressions, allowing you to specify any number of patterns in the corresponding entry field with each pattern limited to 1024 characters. For example, providing a user with the Distribute permission to the selected Destinations (i.e. according to JPD Name Patterns), allows the user to distribute to Edge nodes that correspond with the pattern. To distribute to all destinations (i.e. Edge nodes) that start with 'DevCenter1', use the following pattern: "DevCenter**".
Country Codes: Select one or more countries from the available list. All existing and future Destinations that are located in the selected countries in JPD will be part of the Permission Target.
City Name Pattern: Based on "Ant-like" expressions, you can specify any number of patterns in the corresponding entry field (limited to 1024 characters). When providing the Distribute permission to the selected Destinations (i.e. according to City Name Patterns), the user will be able to distribute to Edge nodes that meet the pattern. For example, to distribute to all destinations (i.e. Edge nodes) that are located in London, add the following pattern: "London**".
Pipeline Sources
Requires an Enterprise+ license.
A pipeline source is a Git repository containing pipeline definition files. Administrators can assign users and group permissions to specific pipeline sources. For more, see Managing Pipeline Sources.
Click + Add Pipeline Sources and select the Pipeline Sources to which this Permission Target will apply.
The following methods are supported for including Destinations (Edge Nodes) in your Permission Target.
Any Pipeline Source: You can select Any Pipeline Source to add all the existing and future Pipeline Sources to this permission target.
By Name: You can select existing Pipeline Sources from the available Pipeline Sources list.
Include and Exclude Patterns (By Patterns): Based on "Ant-like" expressions, allowing you to specify any number of Include or Exclude Patterns in the corresponding entry field. Patterns are limited to 1024 characters. To include (or exclude) all pipeline sources that start with '
paulg'
, use the following include pattern: "paulg**/**".
You can now proceed to assign users or groups to the resources you have included in the Permission Target.
Step 2: Select Users or Groups and Assign Permissions
Each resource has a set of dedicated permissions. Using the corresponding tabs, you can set the permissions granted to a user or a group based on each of the resource types. Double-click the user or group you want to modify, and then check the permissions you wish to grant. Only permissions associated with an installed service are displayed in the list. At least one user or group has to be selected to create a permission. Since an admin is privileged and has all permissions, you cannot add a user or group with admin privileges to a Permission Target.
The following example displays applying permissions to users. The identical workflow applies when assigning permissions to groups.
In the Create Permission page, click the Users tab.
Click the Selected Users + icon in the left panel to add users.
Select the users in the Select Users dialog and click OK.
Assign the permissions to the users according to the resource type.
You can assign the following permissions by resource type:
View Effective Permissions
You can view the effective permissions on each of the resources for users, groups, and Permission Targets in the Effective Permissions tab under the Artifacts, Builds and Distribution pages.