Curation Compliance Check

JFrog Curation defends your software supply chain by enabling early detection and blocking of malicious or risky open-source packages before they enter your environment. It helps identify harmful, vulnerable, or non-compliant packages seamlessly, enhancing security, compliance, and developer productivity.

The curation-audit command checks the project to identify third-party dependencies that violate Curation service restrictions. It provides detailed insights into policy violations and may suggest compliant package alternatives.

Learn more about Curation Supported Technologies here.

Command: curation-audit, ca

Configuration

  • Pass-Through Curation: Required for package types except npm. Configure on remote repositories in Artifactory.

  • Connect JFrog CLI to Platform:

    jf c add

    Use an access token from Artifactory when prompted. Verify the connection:

    jf c show
  • Project Configuration:

    • Config command: Sets up jf ca for that package manager.
    • Set Me Up: The package manager's native configuration produced by Artifactory Set Me Up.

    The following table describes how to configure each package manager for jf ca.

    Package ManagerConfig CommandConfiguration ModePass-Through RequiredNotes
    npmjf npmcConfig command or Set Me UpNoThe --run-native flag helps you use native configuration.
    yarnNo config commandSet Me UpYesYarn V2, V3, and V4 are supported. V1 is not supported.
    pnpmNo config commandSet Me UpNopnpm v10.x only.
    pipjf pipcConfig command or Set Me UpYes
    Mavenjf mvncConfig command onlyYes
    Gojf gocConfig command onlyYes
    NuGetjf nugetcConfig command or Set Me UpYesThe --solution-path flag provides a path to the .NET solution file (.sln or .slnx) when multiple solution files are present in the directory.
    Gradlejf gradlecConfig command onlyYesAudits .jar only, not .pom or Gradle Module Metadata.
    poetryNo config commandSet Me UpYesPoetry v1.2.0 or higher is supported.
    RubyGemsjf ruby-configConfig command or Set Me UpYesRuby 2.6.0 or higher is supported.
    DockerNo config command. Run jf ca --image=<image>Set Me UpNoAudits a Docker image against Curation policies. Does not analyze Dockerfiles or extract packages from image layers. Supported from JFrog CLI 2.89.0.
    pipenvNo config commandSet Me UpYespipenv v2023.7.4 or higher.
    Hugging FaceNo config commandSet Me UpNoThe --hugging-face-model flag audits Hugging Face models in <repo-id>[:revision] format. Multiple models can be comma-separated.
    CargoNo config commandSet Me UpNo
    uvNo config commandSet Me UpYesuv v0.6.17 or higher is supported.

Commands Parameters

ParameterOptional/RequiredDescription
--formatOptionalDefines the output format. Acceptable values: table (default) and json.
--working-dirsOptionalA comma-separated list of directories to audit.
--insecure-tlsDefault: falseSet to true to skip TLS certificates verification.
--threadsOptionalNumber of parallel threads for checking package status. Default: 3.
--requirements-fileOptional[Pip] Specifies the requirements file (e.g., requirements.txt).
--solution-pathOptionalSpecifies the path to the .NET solution (.sln) file to use when the directory contains multiple solution files.
--imageOptionalSpecifies the Docker image name to audit, using the same format as the Docker CLI.
--include-cached-packagesDefault: false[On-demand curation] Set to true to also audit cached packages. Required for Curation on-demand workflows, which rely on package caching.
--run-nativeDefault: false[npm] Use the native npm client for dependency resolution instead of jf npmc. Reads the Artifactory URL and repository from the project's .npmrc.
--legacy-peer-depsDefault: false[npm] Pass --legacy-peer-deps to npm install to bypass peer-dependency version conflicts.
--use-wrapperDefault: true[Gradle, Maven] Use the Gradle or Maven wrapper.
--use-included-buildsDefault: false[Gradle] Set to true to also take into account included builds (composite builds), in addition to subprojects.
--mvn-include-plugin-depsDefault: false[Maven] Set to true to also resolve and include build-plugin transitive dependencies in the curation evaluation. By default only project dependencies are scanned.

Examples

Audit the current directory:

jf curation-audit

Audit specific directories:

jf curation-audit --working-dirs="/path/to/project/npm_project1,/path/to/project/npm_project2"

Audit with multiple threads:

jf curation-audit --threads=5

Exclude specific packages or versions from policy restrictions using waivers:

  1. Execute the jf-curation-audit command:
jf curation-audit
Found 4 blocked packages for project sample-node-project:1.0.0
Curation
┌────┬──────────────┬────────────┬──────────────┬─────────┬─────────┬──────────────┬──────────────┬──────────────┬──────────────┐
│ ID │ DIRECT       │ DIRECT     │ BLOCKED      │ BLOCKED │ PACKAGE │ VIOLATED     │ VIOLATED CON │ EXPLANATION  │ RECOMMENDATI │
│    │ DEPENDENCY   │ DEPENDENCY │ PACKAGE      │ PACKAGE │ TYPE    │ POLICY       │ DITION       │              │ ON           │
│    │ PACKAGE      │ PACKAGE    │ NAME         │ VERSION │         │ NAME         │ NAME         │              │              │
│    │ NAME         │ VERSION    │              │         │         │              │              │              │              │
├────┼──────────────┼────────────┼──────────────┼─────────┼─────────┼──────────────┼──────────────┼──────────────┼──────────────┤
│ 1  │ ansi-regex   │ 3.0.0      │ ansi-regex   │ 3.0.0   │ npm     │ High CVE     │ CVE with CVS │ Package vers │ Upgrade to t │
│    │              │            │              │         │         │              │ S score betw │ ion contains │ he following │
│    │              │            │              │         │         │              │ een 7.0 and  │ the followin │ version(s):  │
│    │              │            │              │         │         │              │ 8.9 (with or │ g vulnerabil │ CVE-2021-380 │
│    │              │            │              │         │         │              │ without a fi │ ity(s):      │ 7: 6.0.1; 5. │
│    │              │            │              │         │         │              │ x version av │ CVE-2021-380 │ 0.1; 4.1.1;  │
│    │              │            │              │         │         │              │ ailable)     │ 7: 7.5       │ 3.0.1        │
└────┴──────────────┴────────────┴──────────────┴─────────┴─────────┴──────────────┴──────────────┴──────────────┴──────────────┘
  1. Enter y as an answer to whether or not you want a waiver:
Do you want to request a waiver for any of the listed packages? (y/n) [n]? y
  1. Enter table row numbers representing packages you want to exclude from policy restrictions:
Please enter the row number(s) for which you want to request a waiver (comma-separated for multiple, range, or “all”) [all]: all
  1. Enter the reason for requesting a waiver:
Please enter the reason for the waiver request: Required packages

Did this page help you?