The site that you are currently viewing is a static version of the Software Factory documentation delivered with the

version v7.2.
For up-to-date documentation, see the latest version.

Xray

1. Application

Reference:LLD – Software Factory as a Product - Xray
Type & Classification:Product
Step:Continuous Delivery
Bid/Project/Product Name & ID:Software Factory as a Product (SWaaP)
Solution Level:Digital product
Solution Name:Software Factory as a Product
Solution description:As deployed, create and update a Software Factory
Key Products/Solution:

2. Introduction

2.1 Document purpose

This document is a low level design - LLD which aims to describe how the architecture evoked in high level design - HLD will be implemented. This document will describe the protocols used in the target architecture, how to implement them and any modifications made to their default behavior. Once validated by Thales, this document will then serve as a basis for the implementation of configurations on equipment.

2.2 Document scope

This document is not a manual and is not intended to replace the reference literature describing with great precision all network protocols.

The protocols used will be briefly described as well as the modifications made to their default behavior.

2.3 Referenced documentation

Document referenceDocument Name
TASDTechnical Architecture and Security Document of SWaaP
LLD-ArtifactoryLow level design of Artifactory component
SCOM-XraySoftware Center Operation Manual of Xray

3. Component general description

This component is part of Software Factory as a Product (SWaaP), and it is visible in the TASD .

JFrog Xray is an advanced security and compliance analysis tool designed to provide deep insights into the vulnerabilities and license compliance issues within software artifacts. As a complementary product to JFrog Artifactory, Xray integrates seamlessly to enhance security measures across the software development lifecycle (SDLC). It offers continuous scanning and monitoring of all artifacts stored in the repository, including those within Docker images, Java archives, and more, ensuring comprehensive protection and compliance from code to production.

Xray is completely integrated with Artifactory . It can be managed using:

4. Functional & Business Requirements

No formal list of requirements has been expressed by clients. It is designed and developed based on business use cases.

4.1 Feature summary

JFrog Xray addresses several critical needs in the software development and operations landscape:

  • Security Vulnerabilities: Early detection of security vulnerabilities in dependencies and binaries. Xray ensures that issues are identified as soon as they are declared, preventing insecure code from progressing through the SDLC.

  • License Compliance: Continuous monitoring for license violations to ensure that all software components comply with legal and organizational standards, avoiding potential legal risks associated with the use of open-source software.

  • Impact Analysis: Provides detailed impact analysis to understand how a vulnerability in one component affects others, allowing for informed decision-making and prioritization of remediation efforts.

  • Automated Governance: Facilitates automated and continuous governance and auditing of software artifacts, ensuring compliance with security policies and standards throughout the SDLC.

  • Comprehensive Scanning: Recursively scans all layers of software artifacts, including nested components, to provide a thorough analysis of potential security and compliance issues.

4.2 Target Population

JFrog Xray is targeted towards several key user groups within the software development and IT operations ecosystem:

  • DevSecOps Teams: Professionals who integrate security practices within the DevOps process, ensuring security and compliance are maintained throughout the development pipeline.

  • Security Analysts: Individuals responsible for identifying, analyzing, and mitigating security threats within the organization’s software environment.

  • Compliance Officers: Personnel tasked with ensuring that the organization adheres to legal and regulatory requirements related to software usage and open-source licenses.

  • Software Developers: Developers who need to ensure that their code and dependencies are secure and compliant from the earliest stages of development.

  • IT Operations Teams: Teams managing the deployment and maintenance of software in production environments, who require assurance that deployed applications are secure and compliant.

4.3 Prerequisites

Every prerequisites of the product are applicable to this component. In detail:

4.4 Variability

SWaaP is managing no variability on Xray.

5. Architecture decision record

Here is a list of decisions:

Ref.Date/StatusDescription
ADR-XRAY-0012022/09Add Xray as a component of the Software Factory as a Product (SWaaP). See ADR004 in TASD .

Table 3 - List of architecture decision record.

5.1 ADR-XRAY-001: Add Xray as a component of the product

5.1.1 Status: Accepted

5.1.2 Context

  • See ADR004 in TASD .

5.1.3 Decision

  • Introduce Xray in the product from its current implementation on TDP C2 & TDP C3-CA

5.1.4 Consequences

6. Architecture description

6.1 Business architecture and allocation to services

You will find in Figure 1 business architecture for software code and CI/CD engineering allocated to services:

Figure 1

Figure 1 - Business architecture allocated to services.

Note: in dash, external items.

6.2 Application architecture

Physical architecture is described in Figure 2 :

Figure 2 - Logical Architecture

Figure 2 - Logical Architecture of Xray

Xray is using these external services:

  • A Software Factory or mirror for deployment (PRE_001).
  • Kubernetes with Flux (PRE_002, PRE_003).
  • Persistent storage to store the configuration and cache (PRE_004).
  • Database (PRE_015); we recommend Managed PostgreSQL database. Alternative can be internal to namespace provided PostgreSQL database that is provided with the product.
  • Integration with Artifactory.

As Xray is integrated to Artifactory, there is no new need of ingress entry point, IAM or mail server.

6.2.1 Main Features and Functionality

  • Early Detection: Xray identifies security vulnerabilities and license violations as early as the dependency declaration stage and blocks builds with security issues from development. Automated and continuous governance and auditing of software artifacts and dependencies throughout the software development lifecycle from code to production.

  • Self-hosted, Cloud, Hybrid or Multi-Cloud Solution: Xray is available self-hosted (self-managed) and on the cloud. Xray Cloud is hosted on your choice of Amazon Web Services, Google Cloud Platform, or Microsoft Azure, allowing you to maintain infrastructure with automated server backups, free updates, and guaranteed uptime.

  • Deep Recursive Scanning: Xray recursively scans artifacts, builds, and Release Bundles in your system, drilling down to analyze even the smallest binary component that affects your software. For example, when analysing a Docker image, if Xray finds that it contains a Java application it will also analyze all the .jar files used in this application.

  • Continuous Impact Analysis: Xray analyzes how an issue in one component affects all others in your company and displays the chain of impact in a component graph, allowing you to have a clear understanding of the impact one component has on another. It is continuously updated with new security vulnerabilities, performing an impact analysis to determine all artifacts affected by the issue.

  • Native Integration with Artifactory: Xray is the only security scanning tool that is natively integrated with JFrog Artifactory. As a complementary product to JFrog Artifactory, Xray has access to the wealth of metadata Artifactory stores which, combined with deep recursive scanning, puts Xray in a unique position to analyze the relationships between binary artifacts and provide radical transparency into your component architecture to reveal the impact that a vulnerability in one component has on any other.

  • Vulnerability Database: Xray comes with JFrog’s vulnerabilities database, which integrates data from vulnerability databases and security advisories including NVD, GitHub, Ubuntu, Debian, Red Hat, PHP, and is enriched by the JFrog Security Research team to give more specific and detailed information on the vulnerability, its use cases, and options for mitigation.

  • Custom API-Driven Automation: Through an open REST API, Xray lets you define a custom regimen of automated analysis for all components in your system.

  • Dependencies Scan: Scan your sources’ dependencies using the JFrog CLI for vulnerabilities and license violations.

  • On-Demand Binary Scan: Point to a binary in your local file system and receive a report that contains a list of vulnerabilities and licenses for that binary using the JFrog CLI.

  • SBOM: Enable DevSecOps engineers to understand and analyze the dependencies of their components. To learn more, see Xray SBOM Report.

  • JFrog Security CVE Research and Enrichment: JFrog’s security research team helps you with enhanced analysis on CVE findings in a way that allows you to focus on the most important issues with the capability of finding the best resources invested in fixing them. For more information, see JFrog Security CVE Research and Enrichment.

  • Component’s Operational Risk: Provides you with additional data on OSS components that will help you gain insights into the risk level of the components in use. For more information, see Components Operational Risk.

  • JFrog Advanced Scans: Includes IaC security, secrets detection, contextual analysis, and detection of OSS library and services misconfiguration or misuse. For more information, see JFrog Advanced Security.

  • Universal Artifact Analysis: In line with JFrog’s universal approach, JFrog Xray performs artifact analysis for all major package formats across the CI/CD pipeline. Xray understands each package type, knows how to unpack it, and what every underlying layer contains.

6.2.2 Following package formats with new formats added regularly are supported

PackageDescription
GoXray scans and indexes your Go Registries, Go Modules and Go packages including recursive analysis, component graph integration and providing detailed metadata information.
CondaXray scans Conda packages that contain Python packages and their dependencies for security vulnerabilities, license compliance and operational risk.
PHPXray recursively scans your PHP Composer packages in your registries, Zip files or Docker/OCI Containers whether they are local or remote. Xray also checks for any dependencies in your PHP builds.
MavenScan your Maven project dependencies using Xray and view vulnerabilities directly from within the IntelliJ IDE, with the JFrog IntelliJ Maven Plugin.
BowerXray scans your Bower packages and performs impact analysis to keeps all components in your organization safe from any violations.
GradleRecursively scan the different layers of your Gradle packages and their dependencies, and use Xray’s component graph to display the impact of any detected issues on your services and applications.
IvyXray scans your Ivy packages and performs impact analysis to keeps all components in your organization safe from any violations.
SBTRecursively scan your SBT packages and identify all components in your organization that are affected by a vulnerability, and monitor components for new issues and vulnerabilities that are detected.
npmXray identifies each JavaScript file within your npm packages and performs matching and analysis on each one to ensure that your npm application is safe to use. Learn more about the npm integration with Xray (npm audit).
NuGetXray scans NuGet packages, recursively going through the layers of dependencies to discover issues and vulnerabilities at any depth.
PyPIXray recursively opens the different layers of your Python packages and their dependencies, discovering any issues and vulnerabilities that may affect your organization.
DockerXray identifies every component contained within every layer of your Docker images. This includes identifying the packages deployed on the OS in the base image layer.
OCIXray identifies every component contained within every layer of your OCI images. This includes identifying the packages deployed on the OS in the base image layer. Helm charts and WASM as OCI artifacts are not supported.
DebianXray identifies the Debian packages deployed on your Debian or Ubuntu OS that’s running on the base layer of your Docker or OCI containers. Each component is scanned for issues and vulnerabilities giving you maximum visibility into your software dependencies.
RPMXray identifies the RPM packages deployed on your RedHat or CentOS OS that’s running on the base layer of your Docker or OCI containers. Each component is scanned for issues and vulnerabilities giving you maximum visibility into your software dependencies.
RubyGemsXray provides transparency into your software architecture, recursively scanning RubyGems packages through all levels of dependency to discover issues and vulnerabilities.
AlpineXray scans and indexes your Alpine Repositories and Alpine Packages, including recursive analysis, component graph integration, and providing detailed metadata information.
ConanXray scans Conan Packages and Conan Builds for issues and vulnerabilities. Xray identifies these issues in the conanmanifest.txt file. For more information, see Conan and C/C++ Support in Xray.
C/C++Xray scans C/C++ dependencies in C/C++ builds to identify vulnerabilities in these builds. For more information, see Conan and C/C++ Support in Xray.
Google Distroless ImagesXray scans Google Distroless Images that only contain your application and its runtime dependencies.
CargoXray scans Rust Cargo packages. Xray supports SCA for Rust binary ELF files (compiled with cargo-auditable) providing their SBOM including licenses and vulnerabilities. When in Docker or OCI containers, Rust binaries can also be scanned for contextual analysis.
CRANXray scans CRAN packages (R packages) to detect security vulnerabilities, ensure license compliance, and evaluate operational risks.
Hugging Face MLXray supports SCA for Hugging Face ML models, detects their license, and if the model is identified as malicious (shown as “Malicious Packages”). Malicious model detection covers the models that are susceptible to deserialization attack: Keras H5, Paddle, PyTorch, Pickle, Numpy, JobLib, Dill, TensorFlow SavedModel, Zip-based models (ex. MLeap).
Terraform stateApplicable only with JFrog Advanced Security. JFrog Advanced Security scans Terraform state in the Artifactory Terraform BE repository for Cloud services configuration issues (see JFrog Advanced Security: Exposure Scanning Categories).
Chainguard ImagesXray supports Chainguard image scanning for SBOM and SCA.

6.2.3 Sub components

The Xray service consists of several microservices, each responsible for different aspects of artifact scanning and analysis:

Indexer

Responsible for the indexing process, which includes:

  • Recursively extracting artifacts and builds
  • Collecting artifact metadata from accompanying files
  • Building an artifact components graph representation
Persist

Responsibilities include:

  • Matching the given components graph with public component information
  • Completing component naming
  • Storing graph data and component metadata in PostgreSQL

Policy Enforcer

Responsible for generating violations by matching analysis data with Xray Watches and Policies.

Analysis

Responsible for enriching component metadata such as vulnerabilities, licenses, and versions.

Server

Responsibilities include:

  • Generating violations by matching analysis data with watches and policies
  • Hosting the API and UI endpoints
  • Running scheduled jobs such as the database synchronization process
Router

Responsible for communication between all the microservices and cross-product.

6.2.4 User management

The user management for Xray is done in Artifactory. Artifactory permits to manage roles with a finer granularity. For more information please consult the Artifactory Users Management

6.2.5 RACI

This role matrix has been defined in TASD:

User roleDescription user roleComment
UC1End user / Software engineerPerson that can have Read/Deploy/Delete/Annotate resources within Repositories, Builds and Release Bundles tenant
UC2ReaderPerson that can have Read resources within Repositories, Builds and Release Bundles tenant
UC3Tenant ownerPerson that can have Read/Deploy/Delete/Annotate/Manage Xray Metadata/Manage resources within Repositories, Builds and Release Bundles tenant
UC4Software Factory application adminPerson that can administrate Software Factory instance components
UC5Software Factory system adminPerson that can administrate the deployment/upgrade of the Software Factory instance
UC6Software Factory tribePerson that are delivering asset to deploy/upgrade a Software Factory instance

For Xray, a tenant is a repository.

In addition of global RACI (Responsible, Accountable, Consulted, Informed) of the SWaaP defined in TASD:

ActionDescriptionUC4UC3UC2UC1
General Xray ConfigurationR/AI/C
Ignore Global ViolationR/AI
Manage Xray DataR/AI/C
Manage ReportsR/AIR
Manage WatchesR/AI
Manage PoliciesR/AI
Xray Messages and MonitoringR/A

6.3 Delivery

Component is part of the Software Factory as a Product (SWaaP) delivery. See TASD for more details.

6.3.1 Latest Version

6.3.2 Version Chart 103.137.31 / Xray 3.137.31

6.4 Infrastructure architecture

6.4.1 Software Factory API

Here is a list of services that can be integrated with Xray.

Ref.NameRequiredDescription
SFE01Flux → Git in Software Factory for deploymentMandatoryCode in a Git server for deployment of the product
SFE02Flux → Registry in Software Factory for deploymentMandatoryRegistries with helm charts and containers for deployment of the product
SFE06Managed Databases (PostgreSQL)Highly recommendedComponents store data in a PostgreSQL data base - Alternative is to use deploy embedded data base with the product
SFB03Runner or CLI → XrayMandatoryGitLab Runner or CLI should connect to Xray using Xray public API - NextGen-CICD can manage this API
SFE08User applicative admin → Artifactory (and Xray)MandatoryUser and applicative admin should use Artifactory UI or public API to access to Artifactory or Xray
SFI04Xray → ArtifactoryMandatoryXray is integrated in Artifactory (it is accessible through Artifactory UI)

6.4.2 Database integration

Xray supports the following versions of PostgreSQL:

  • 16.x (from version 3.107)
  • 15.x (from version 3.78.9)
  • 14.x
  • 13.x (from version 3.18)

6.4.3 RabbitMQ integration

RabbitMQ is installed as part of the Xray installation for every node. In a High Availability (HA) architecture setup.

Below is a low-level architecture diagram showcasing all the components, their nature, their location, and technical flows.

Xray System Architecture Diagram

How JFrog Xray uses RabbitMQ Xray has multiple crucial roles, such as scanning, impact analysis, and database sync. These roles require simultaneous flows to be processed by the different Xray services. Xray uses RabbitMQ to manage these different flows while tracking communication between services.

RabbitMQ manages 3 main types of queues in Xray:

6.4.3.1 New Content

Responsible for events related to new content added to the system. For example, uploading a new Artifact to a repository that is marked for indexing -> will create a message in the Index queue.

6.4.3.2 Existing Content

Responsible for the content which already exists in the system. For example, reindexing a repository will send messages to this queue.

6.4.3.3 Retry

Failed messages will be sent to this queue and will stay there for a TTL. Once the TTL has elapsed, the messages will be returned to the original queue. The queue names are defined by the service name and the queue type (new content queues name do not have any suffix).For example – ‘indexExistingContent’, and ‘alertRetry’ while ‘persist’ has no suffix. This naming convention is useful when debugging RabbitMQ queues since the queue name is predictable.

Xray RabbitMQ Architecture Diagram

7. Operational and maintenance

In this chapter you will find strategy and policy. Detail implementation will be described in the SCOM.

7.1 Life cycle policy

Cadence of version is describe in the Product Lifecycle .

7.2 License

As Xray is integrated with Artifactory, it’s inherit Artifactory license.

7.3 Deployment

The component is deployed as a standard component using Flux and SWaaP packaging. See TASD for more details.

7.4 IAM

We support and recommend integration with IAM using SAML SSO. This configuration is done in Artifactory .

7.5 Scaling

Xray system requirements depend on the size of your environment, specifically the number of indexed artifacts and artifacts/builds processed per day.

Number of Indexed ArtifactsProcessor RequirementsMemory RequirementsDisk Space Requirements
Up to 100kXray and DB: 6 coresXray and DB: 24 GBXray and DB: 500 GB (SSD, 3000 IOPS)
JFrog Advanced Security: 6 coresJFrog Advanced Security: 24 GBJFrog Advanced Security: 500 GB (SSD, 3000 IOPS)
Up to 1MXray (x2 nodes): 4 coresXray (x2 nodes): 8 GBXray (x2 nodes): 300 GB
DB: 8 coresDB: 32 GBDB: 500 GB (SSD, 3000 IOPS)
JFrog Advanced Security (x2 nodes): 8 coresJFrog Advanced Security (x2 nodes): 24 GBJFrog Advanced Security (x2 nodes): 300 GB
Up to 2MXray (x3 nodes): 6 coresXray (x3 nodes): 12 GBXray (x3 nodes): 300 GB
DB: 16 coresDB: 32 GBDB: 1 TB (SSD, 3000 IOPS)
JFrog Advanced Security (x4 nodes): 8 coresJFrog Advanced Security (x4 nodes): 24 GBJFrog Advanced Security (x4 nodes): 300 GB
Up to 10MXray (x3 nodes): 8 coresXray (x3 nodes): 24 GBXray (x3 nodes): 300 GB
DB: 16 coresDB: 64 GBDB: 2.5 TB (SSD, 3000 IOPS)
JFrog Advanced Security (x8 nodes): 8 coresJFrog Advanced Security (x8 nodes): 24 GBJFrog Advanced Security (x4 nodes): 300 GB
Over 10MContact JFrog Support for sizing requirements
  • Processor Requirements: Specifies the number of CPU cores required for Xray, Database (DB), and JFrog Advanced Security components.
  • Memory Requirements: Specifies the RAM (memory) required for Xray, Database (DB), and JFrog Advanced Security components.
  • Disk Space Requirements: Specifies the disk space requirements, including SSD type and IOPS (Input/Output Operations Per Second) for Xray, Database (DB), and JFrog Advanced Security components.

Note: For environments with over 10 million indexed artifacts and 50,000 artifacts/builds per day, contact JFrog Support for specific sizing requirements.

Xray system limitation based on the maximum xray-2xlarge.yaml (biggest size) file

Note: This size is intended for large organizations. It can be increased with adding replicas:

autoscaling:
  enabled: true
  minReplicas: 3
  maxReplicas: 12
  targetCPUUtilizationPercentage: 200
  targetMemoryUtilizationPercentage: 800

7.6 Backup / restore

In the official JFrog documentation, the backup and restore processes for Xray are not referenced in a separate topic. JFrog Xray uses the same PostgreSQL database as the Artifactory product, for which the vendor provides detailed information on these processes.

Database Backup Steps

We recommend to have point in time restore principle set at platform level to get consistency regarding database and volumes backup at platform level.

Data corruption is managed by the COTS and can be detecting watching logs. Can contact editor support through the product support

In case of irremediable data loss/alteration, we have to restore from the same point in time backup database and volumes.

7.7 Monitoring

Please check documentation from Operations Guide

Official documentation JFrog:

7.8 Logging

JFrog Monitoring and Logging

7.9 Operating procedures

Please check documentation from Operations Guide

Annex

References from official JFrog-Xray Docs

Supported Installation Methods:

Other links:

Last modified 12.06.2026: Update Xray documentation lld (d2979b1)