# SailPoint JFrog Connector Documentation > JFrog Connector Documentation # Documentation # Connecting SailPoint and JFrog To connect SailPoint to the source, perform the following tasks: ## Adding and Configuring the Source in SailPoint To connect to SailPoint, perform the following steps. Once the connection is made, you can configure it to meet your company's needs. 1. Go to **Admin \> Connections \> Sources**. 2. Select **Create New**. 3. Search for a source type and select **Actions**. 4. In the **Actions** dropdown, select the setup method: - **Express Setup** - Quickly create a read-only connection to your target system by providing minimal configurations and authentication. On completion, aggregation is automatically started. > **Note** > > Express Setup supports Credential Providers. For information on supported credential providers and configuration, refer to [Credential Providers](). For more information, contact your SailPoint Customer Service Manager. - **Standard Setup** - Provide detailed basic configuration to create the source. Once the source is created, continue with source setup. ### Express Setup 1. Review the directions and select **Start Express Setup**. 2. Review the pre-populated source name, source owner, and description. To update, select **Edit**. > **Note** > > Source name must be unique. 3. (Optional) If enabled for your organization, select the **Use a Credential Provider** checkbox to manage the source's authentication using a credential provider. > **Note** > > To add a Credential Provider in SailPoint, go to **Admin \> Connections \> Credential Providers**. For more information about credential providers, refer to [Credential Providers](). 4. Configure the authentication to allow SailPoint to connect to the source. For more information, refer to the **Connection Settings** page. 5. Select **Finish**. After a successful test connection, the system creates your source and prompts you to run an aggregation. - If you want to aggregate now, select **Aggregate**. - To see the latest account aggregation history, go to **Account Management \> Account Aggregation**. - To see the list of aggregated source accounts, go to **Account Management \> Accounts**. - If you want to aggregate later, select **Exit**. This returns you to the **Sources** page. Your new source is listed, but contains no accounts or aggregation history yet. ### Standard Setup Configure more detailed settings relative to Express Setup. 1. In the **Source Name** field, enter a unique and descriptive name for your source. Source names cannot exceed 128 characters. 2. In the **Description** field, provide additional details about the source to help distinguish it from similar sources. This field allows a maximum of 2,000 characters. 3. In the **Source Owner** field, begin typing the name of an owner. Matches appear after you type two or more letters. For more information, refer to [Assigning a Source Owner](). 4. (Optional) Select a governance group to grant its members [source]() or [role]() sub-admin level oversight of the source and its access. For more information, refer to [Creating and Managing Governance Groups](). 5. If this source represents a primary system containing your organization's personnel records, select the **Authoritative Source** checkbox. For more information, refer to [Creating Identity Profiles](). 6. Select **Continue**. The source is created, and you are navigated to the **Source Setup \> Base Configuration** page. Here, continue to configure your connected source. ## Base Configuration Provide the base configuration parameters. Information you entered in the Create New Source dialog is automatically entered into the fields in the Base Configuration page. You can edit this information if necessary. 1. Enter a descriptive **Source Name** for the connection. 2. Enter the **Source Description** that provides details necessary to distinguish it from similar connection sources. 3. In **Source Owner**, begin typing the name of the source owner. 4. (Optional) Select the appropriate **Governance Group for Source Management** from the dropdown list. For more information about governance groups, refer to [Associating Governance Groups with a Source](). 5. Select **Create Manual Work Items** to enable the source to support additional source management features such as creating accounts and access profile management. > **Important** > > Once you enable this feature, it can't be disabled. For more information on manual work items, refer to [Work Items](). For more information on SailPoint features, refer to [SailPoint Identity Services](). 6. Select **Save**. ## Connection Settings Configure a secured, direct connection to the source using **API token authentication**. 1. Enter the JFrog Artifactory URL as **Base URL**. Enter the **server root only**. For example, `https://trialc03dqg.jfrog.io`. 2. Enter the JFrog Platform username associated with the API token as **Username**. This field is displayed only if your tenant has a SailPoint Agentic Fabric license, which is required to discover JFrog Artifactory non-human identities (NHIs). For example, `john.doe@example.com`. 3. Enter your JFrog access or identity token as **API Token**. Enter the token in **raw form**, without a `Bearer` prefix. 4. Select **Save**. > [!NOTE] > > Your organization must have a SailPoint Agentic Fabric license to discover non-human identities. Contact your Customer Success team for more information. For more information, refer to [SailPoint Agentic Fabric](). ## Review and Test Perform a test to confirm the connection to SailPoint. 1. Go to **Review and Test**. 2. Confirm that the entries in each field are correct. If you note any mistakes, return to the section and make corrections. 3. Select **Test Connection**. ## SailPoint Application Onboarding SailPoint application onboarding enables you to easily onboard new applications and create sources following the successful onboarding of a discovery source. To use this feature, continue to **Discovered Applications** in the SailPoint user interface. For more information, refer to [Application Onboarding]() in the SailPoint SaaS documentation. # Dataset Management Dataset Management lets you review the object types a source collects and control how the source aggregates those objects into SailPoint. Use Dataset Management to view and manage resource attributes, datasets and their resources, enable dataset aggregation schedules, perform manual aggregation, and view aggregation history. > [!NOTE] > > Datasets are also available in SailPoint Agentic Fabric. Contact your Customer Success team and refer to [SailPoint Agentic Fabric]() for more information. For more information, refer to [Managing Datasets and Resources]() for datasets, resources, owner correlation, and aggregation. ## Datasets A *dataset* is a named group of one or more related resources that the source aggregates together. When aggregation runs for a dataset, the source collects all resources in that dataset from the managed system in one aggregation job. Activate or deactivate aggregation at the dataset level, not for individual resources. > [!NOTE] > > Each resource belongs to exactly one dataset for that source. The source defines which resources belong to each dataset. You can enable aggregation and review associated resources, but you cannot create or delete datasets or move resources between them. ### Dataset Aggregation Configure aggregation on the **Dataset Aggregations** tab for each dataset. Configure each dataset separately. During aggregation, your owner correlation rules are automatically applied to link machine identities to their human owners. For more information, refer to [Configuring Dataset Aggregations](). ## Resources A resource defines an object type from the managed system. It specifies the kind of object, the attributes the source collects, and how the source identifies and displays each object. Resources form the building blocks of the data model. In the UI, each resource appears under **Dataset Management** \> **Resources** with its schema. A resource does not run aggregation by itself. The dataset that owns the resource collects it during aggregation. For more information, refer to [Managing Resources](). ### Owner Correlation Configure owner correlation on each resource to link aggregated objects to human owners. If you do not configure owner correlation, or if the mapping produces no match, an owner is not assigned. For more information, refer to [Configuring Owner Correlation](). ## Supported Datasets Go to **Dataset Management \> Datasets** on your JFrog source to view the datasets the connector aggregates. Select a dataset to review its associated resources and configure aggregation. > [!NOTE] > > Configure aggregation for each dataset separately. For more information, refer to [Dataset Aggregation](). | Dataset name | Associated resources | Dataset ID | | --- | --- | --- | | **Access Tokens** | Access Token | `jfrog:access-tokens` | For schema attribute definitions, refer to [Access Token Attributes](<#access-token-attributes>). ### Dataset Aggregations Dataset aggregation collects resource objects from the managed system and loads them into SailPoint. Repeat the configuration for each dataset on the source. ### Configuring Dataset Aggregation To configure dataset aggregation for a dataset: 1. Go to **Admin \> Connections \> Sources**, and open your source. 2. Go to **Dataset Management \> Datasets**. 3. Select the dataset you want to configure. 4. Select the **Dataset Aggregations** tab. On the **Dataset Aggregations** tab, configure how resource objects from the selected dataset are aggregated into SailPoint. The tab contains **Scheduled Aggregations**, **Manual Aggregation**, and **Latest Aggregation**. #### Scheduled Aggregations Scheduled aggregations run on a schedule to keep the dataset synchronized with the managed system. 1. On the **Dataset Aggregations** tab, select **Enable Schedule** to turn on scheduled aggregations. When scheduled aggregations are enabled, SailPoint aggregates all resource objects in the dataset on the configured schedule. #### Manual Aggregation Manual aggregation runs once and collects all resource objects in the dataset. 1. On the **Dataset Aggregations** tab, select **Start Aggregation**. SailPoint starts the aggregation immediately. When the run completes, results appear in the **Latest Aggregation** section. #### Viewing Aggregation Results After an aggregation completes, review its status in the **Latest Aggregation** section on the **Dataset Aggregations** tab. The **Latest Aggregation** section shows: - **Start Time** - when the aggregation started - **Resource Objects Scanned** - the number of resource objects the aggregation processed - **Status** - whether the aggregation succeeded or failed Select **Details** to view additional information about the most recent run. To view prior runs, select **Aggregation History**. ## Supported Resources For more information, refer to [Managing Resources](). > [!NOTE] > > When you enable dataset aggregation for a selected dataset, all resources in that dataset are collected at once. Activate or deactivate aggregation at the dataset level, not for individual resources. Under **Dataset Management** \> **Resources**, the JFrog source lists each object type that is aggregated. Select a resource to review its schema on the **Schema** tab. | Resource name | Resource type | Resource ID | | --- | --- | --- | | **[Access Token](<#access-token-attributes>)** | `std:credential` | `jfrog:access-token` | Each access token that JFrog returns becomes one credential object. The source identifies the credential by its token ID and displays the description entered in JFrog. > [!NOTE] > > JFrog does not return the token secret, so the source cannot read or store it. Only token metadata is aggregated. ### Owner Correlation On the **Owner Correlation** tab of the **Access Token** resource, map the token to the identity that owns it. By default, the source matches the `username` attribute, parsed from the token subject, to the identity email address. For more information, refer to [Owner Correlation](). ## Access Token Attributes The **Access Token** resource is in the **Access Tokens** dataset. | Field | Value | | --- | --- | | Resource ID | `jfrog:access-token` | | Resource type | `std:credential` | | Identity attribute | `token_id` | | Display attribute | `description` | The following table lists the schema attributes for the Access Token resource: | Attribute Name | Description | | --- | --- | | token\_id | Unique identifier of the access token in JFrog. SailPoint uses this value as the resource ID. | | description | Label entered for the access token in JFrog. SailPoint displays this value as the resource name. | | audience | JFrog services that accept the access token. | | expiry | Date and time when the access token expires, in ISO-8601 UTC format. A value of `0` means that the access token never expires. | | issued\_at | Date and time when the access token was created, in ISO-8601 UTC format. | | issuer | Identifier of the JFrog service that created the access token. | | last\_used | Date and time when the access token was last used, in ISO-8601 UTC format. Absent when the JFrog instance does not track token usage. | | project | Project key, present when a project administrator created the access token. | | refreshable | Indicates whether the access token can be refreshed. | | scope | Access scope granted by the access token. | | subject | Identity the access token is associated with. | | username | JFrog username parsed from a user-token subject. Used for owner correlation to a human identity. | # Integrating SailPoint with JFrog JFrog is a software supply chain platform for artifact management, security scanning, and software distribution across DevOps workflows. This document covers how to configure a new direct connection between SailPoint and JFrog for Quick Compliance. For a reference to the terminology specific to SailPoint products, refer to [Source and Connector Definitions](). > [!NOTE] > > To view the latest features, enhancements, and fixes for all SaaS connectors, refer to the [SaaS Release Notes]() page. ## Supported Features The JFrog connector supports the following: ### Account Management - Aggregate Users ### Entitlement Management - Aggregate Groups ### Non-Human Identity Discovery - Aggregate Access Tokens - Gain visibility into Docker image layers stored in local JFrog Artifactory repositories to detect leaked secrets across the image layer file system Refer to Dataset Management for more information. Refer to [Discovering Potential Non-Human Accounts]() for more information. > [!NOTE] > > Your organization must have a SailPoint Agentic Fabric license to discover non-human identities. Contact your Customer Success team for more information. For more information, refer to [SailPoint Agentic Fabric](). > [!NOTE] > > This connector is read-only. It supports test connection, account aggregation, entitlement aggregation, and dataset aggregation for Quick Compliance. Provisioning, de-provisioning, and write operations are not supported. > [!IMPORTANT] > > Quick Compliance connectors have the following manual aggregation limits within a 24-hour period: > > - **Organization Admins**: Limited to 3 manual account or entitlement aggregations per day per source. This limit is cumulative across all admins in the organization. > - **Regular Users**: Limited to 1 manual account or entitlement aggregation per day per source. > > These limits ensure that individual compliance statuses are kept up to date while maintaining continuous compliance monitoring. If you need to run additional aggregations beyond these limits, contact SailPoint Support. ## Prerequisites Before you configure the JFrog connector, ensure the following requirements are met: 1. Sign in to the JFrog Platform as an administrator. 2. Generate an API token for the administrator account. 3. Copy the token and store it securely. 4. Record the following values for connector configuration: - **Base URL** - The JFrog Artifactory server root. For example, `https://trialc03dqg.jfrog.io`. - **Username** - The JFrog Platform username associated with the API token. Required when your tenant has a SailPoint Agentic Fabric license for non-human identity discovery. - **API Token** - The JFrog access or identity token in raw form, without a `Bearer` prefix. For more information about creating API credentials, refer to [Work with API Keys (Until Deprecated)]() and the [Artifactory REST APIs]() documentation. > [!NOTE] > > The linked document is not maintained by SailPoint and is subject to change without notice. ## Required Permissions Only administrator users can generate user tokens for themselves in the JFrog Platform. Access follows the permissions assigned to that user. There is no dedicated read-only API role for standard user tokens. # Schema Reference The application schema is used to configure the objects returned from a connector. > [!NOTE] > > - The **Account Schema** tab is used to define the attributes for each object type in the application being configured. The schema attributes can be defined as **Entitlement** or **Multi-Valued**. Refer to [Managing Source Account Schemas]() for more information. > - The schema attributes that are not present by [default](<#default-account-schema>) must be defined as strings if not specified. The JFrog connector uses the following default correlation and object configurations. ## Default Account Schema Each source supports a variety of details, or attributes, about each user who has an account, such as their name, email address, manager name, and location. The set of account attributes each source stores and how they're organized is known as the account's *schema*. To best represent your data, you can configure sources to use an account schema matching the one you use in the external connector. Refer to [Managing Source Account Schemas]() for more information. ### Default Account ID SailPoint requires that certain attributes remain in your configuration. These attributes are referred to as *account IDs*. > [!CAUTION] > > Changing the attribute marked as the account ID after aggregating accounts can result in duplicate accounts being created. To avoid this, either reset the accounts on this source before editing the account ID attribute or edit the account ID attribute before aggregating accounts. > > To resolve issues caused by changing account IDs, reconfigure them to their default values. The following table lists the default account IDs for this connector: | Account ID | Schema Object Type | | --- | --- | | username | Account | ### Default Account Attributes The JFrog connector supports the following default account schema attributes and customer configurable attributes. The attributes must be defined as strings if not specified. | Attribute Name | Description | | --- | --- | | username | Unique username of the user | | email | Email address of the user | | admin | Indicates if the user has administrator privileges | | effective\_admin | Indicates if the user is an effective administrator | | profile\_updatable | Indicates if the user profile can be updated | | internal\_password\_disabled | Indicates if internal password authentication is disabled for the user | | disable\_ui\_access | Indicates if UI access is disabled for the user | | last\_logged\_in | Timestamp of the user's last login | | realm | Authentication realm for the user | | groups | Groups the user belongs to. Aggregated as Group entitlements | ## Default Entitlement Attributes Entitlement attributes define the entitlements, such as groups or roles, that can be assigned to the managed system's user accounts. Refer to [Managing Entitlements]() for more information. > [!CAUTION] > > Changing the attribute marked as the Entitlement ID after aggregating accounts or entitlements can result in duplicate entitlements being created, or access profiles and roles breaking. To avoid this, edit the entitlement schema before performing any aggregations. ### Default Group Attributes The JFrog connector also supports groups. The following attributes must be configured on the managed system and in the SailPoint source schema to manage groups. | Attribute Name | Description | | --- | --- | | group\_name | Name of the group | | uri | URI required to get the group details | | description | Description of the group | | auto\_join | Indicates if users can automatically join the group | | admin\_privileges | Indicates if the group has admin privileges | | members | Members of the group |