> For the complete documentation index, see [llms.txt](https://docs.collibra.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.collibra.com/data-quality-self-hosted/installation/installing-data-quality-observability-self-hosted-on-self-hosted-spark-standalone/configure-fips-compliant-algorithms.md).

# Configure FIPS-compliant algorithms

Federal Information Processing Standards (FIPS) are the standards by which many federal and private sector organizations secure their computer systems. Support for FIPS-compliant algorithms in Data Quality & Observability (self-hosted) can be configured upon installation through the applicable environment variables.

Keep in mind the following points related to FIPS compliance:

* To enable FIPS compliance, set the environment variable `DQ_APP_FIPS_ENABLED` to **true**. In standalone, the system performs a series of tests to determine if the environment is FIPS compliant.
* SSL is required for FIPS compliance. The datasource URL must end with `sslmode=verify-full`.
* Customers must change the default encryption key to be FIPS compliant.
* The primary security provider configured for the JVM is Bouncy Castle FIPS (BCFIPS).

Livy is not supported for cloud-native Data Quality & Observability (self-hosted) installations that run in FIPS mode. This affects the following capabilities:

* Data preview for remote-file connectors, such as Google Cloud Storage (GCS), Azure Data Lake, and Amazon S3.
* Rule and query preview for JDBC connections.

The following table describes the environment variables related to FIPS compliance.

<table><thead><tr><th width="152">Environment variable</th><th>Description</th></tr></thead><tbody><tr><td><code>DQ_APP_FIPS_ENABLED</code></td><td><p>Optional. Set to <strong>true</strong> to enable FIPS-compliant algorithms. In standalone, this must be enabled in the <strong>setup.sh</strong> and <strong>owlmanage.sh</strong> file upon the installation of Data Quality &#x26; Observability (self-hosted). The system also performs a series of tests to determine if the environment is FIPS compliant.</p><p>Default is <strong>false</strong>.</p></td></tr><tr><td><code>DQ_APP_AES_ENCRYPTION_KEY</code></td><td><p>Optional. Only required when using your own Java security provider, algorithm, and encryption key. Enter the key for AES encryption from your preferred provider.</p><p>Defaults to the Collibra DQ AES key.</p></td></tr><tr><td><code>DQ_FIPS_PROVIDER_NAME</code></td><td><p>Optional. Only required when using your own Java security provider, algorithm, and encryption key. Provide your own provider implementation.</p><p>Defaults to Bouncy Castle, which is supported in Collibra DQ and considered one of the secure and compliant FIPS providers.</p></td></tr><tr><td><code>DQ_FIPS_ALGORITHM</code></td><td><p>Optional. Only required when using your own Java security provider, algorithm, and encryption key. Provide an algorithm supported by your FIPS provider.</p><p>Defaults to password-based AES 128 encryption algorithm complaint with FIPS.</p></td></tr><tr><td><code>DQ_APP_ENCRYPTION_AT_REST_MODE</code></td><td><p>Optional. Specifies whether to use the legacy or hybrid cryptosystem. For FIPS compliance, set to <strong>hybrid</strong>.</p><p>Default is <strong>legacy</strong>.</p></td></tr><tr><td><code>DQ_APP_ENCRYPTION_AT_REST_MIGRATION</code></td><td><p>Optional. For existing customers that need to migrate from <strong>legacy</strong> to <strong>hybrid</strong> encryption at rest mode. Performs migration to new encryption key during startup. After completing the initial migration, disable this setting.</p><p>Default is <strong>false</strong>.</p></td></tr></tbody></table>

## Set up the keystore

Depending on your configuration, you may need to set up and migrate to a FIPS-compliant keystore. BCFKS is required for FIPS compliance. For more information on the migration process, go to [Migrating keystores](/data-quality-self-hosted/security-configuration/migrating-keystores.md).

## Configuring Collibra DQ for FIPS Compliance

{% tabs %}
{% tab title="Standalone" %}
The OS environment variable `export DQ_APP_FIPS_ENABLED=true` is set in the **setup.sh**, **owlmanage.sh**, and owl-env.sh files, while all other optional environment variables are set in the owl-env.sh. While all environment variables are optional, if you do not set them, they will default to the out-of-the-box Bouncy Castle configurations.

{% stepper %}
{% step %}
Before installing Data Quality & Observability (self-hosted), generate a keystore using a FIPS-compliant algorithm.
{% endstep %}

{% step %}
Ensure that the entry **org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider** is set as the security provider in **$JAVA\_HOME/conf/security/java.security**.

<i class="fa-glasses-round">:glasses-round:</i> Example: `security.provider.13=org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider`

***

{% endstep %}

{% step %}
Set the environment variable `export DQ_APP_FIPS_ENABLED=true` in the **setup.sh** and **owlmanage.sh** files.
{% endstep %}

{% step %}
Follow the standard [Standalone Installation](/data-quality-self-hosted/installation/installing-data-quality-observability-self-hosted-on-self-hosted-spark-standalone/install-on-self-hosted-spark-standalone.md) steps.

<details>

<summary>Show screenshot of FIPS-enabled installation</summary>

![image of fips-enabled standalone dq installation](https://4121921244-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWCrP7Albs8DfJjIQxUxw%2Fuploads%2Fgit-blob-0bcf03d4a1c50c93266a75cd9174bdb2e2d2aa5c%2Fdq-fips-enabled-standalone-installation-example.png?alt=media)

</details>
{% endstep %}

{% step %}
Set all FIPS and keystore environment variables (described above) and restart the DQ web application and DQ agent services.

{% hint style="warning" %}
If FIPS is enabled, specify the path to the keystore in `KEYSTORE_FILEPATH` (instead of `SAML_KEYSTORE_FILE`).
{% endhint %}
{% endstep %}

{% step %}
SSL is required for FIPS compliance. Follow the standard steps for [Setting up SSL (HTTPS)](/data-quality-self-hosted/security-configuration/setting-up-ssl-https.md). Note that the datasource URL must end with `sslmode=verify-full`.
{% endstep %}

{% step %}
Sign in to Data Quality & Observability (self-hosted).
{% endstep %}

{% step %}
On the Collibra DQ home page, hover your pointer over <img src="https://4121921244-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWCrP7Albs8DfJjIQxUxw%2Fuploads%2Fgit-blob-75245abf5c50ddf56f1d2d727ccaacf757d11145%2Fcogwheel-large%402x.png?alt=media" alt="" data-size="line"> **Settings** and select **Admin Console**.\ <i class="fa-chevrons-right">:chevrons-right:</i> The Admin Console opens.
{% endstep %}

{% step %}
Click **Agent Configuration**.\ <i class="fa-chevrons-right">:chevrons-right:</i> The Agent Configuration page opens.
{% endstep %}

{% step %}
In the Actions column, click <img src="https://4121921244-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWCrP7Albs8DfJjIQxUxw%2Fuploads%2Fgit-blob-5face7f577747d86367bf6698315172b6a3536f5%2FEditIcon.svg?alt=media" alt="Edit icon" data-size="line"> to edit your agent.\ <i class="fa-chevrons-right">:chevrons-right:</i> The **Edit Agent** modal appears.
{% endstep %}

{% step %}
In the Free Form (Appended) field, enter the following configuration and ensure that the Bouncy Castle FIPS JAR file, such as **bc-fips-x.jar**, is included in the directory.

```
-addlib $OWL_HOME/bin/external/
```

{% endstep %}

{% step %}
Restart the DQ web application and DQ agent services.
{% endstep %}
{% endstepper %}

### Example of environment variables when using the default Bouncy Castle FIPS provider and Collibra DQ values

```
export DQ_APP_FIPS_ENABLED=true
export DBPASSWORD="String to Encrypt"
# If successful, the following command will return encrypted string
java -cp dq-core.jar:bc-fips-1.0.2.5.jar com.owl.core.security.SecurityManager -encryptString $DBPASSWORD
```

{% endtab %}

{% tab title="Cloud Native" %}
{% stepper %}
{% step %}
Before installing Data Quality & Observability (self-hosted), generate a Java truststore and keystore using a FIPS-compliant algorithm (BCFKS).
{% endstep %}

{% step %}
Create a kubernetes secret using the new keystore.
{% endstep %}

{% step %}
Pull the DQ container images that are FIPS compliant (with the `-fips` suffix). For example:

```
docker pull gcr.io/owl-hadoop-cdh/dq-web-fips:2026.02-ABDGCSHILM-4227
docker pull gcr.io/owl-hadoop-cdh/dq-agent-fips:2026.02-ABDGCSHILM-4227
docker pull gcr.io/owl-hadoop-cdh/dq-livy-fips:4.1.0-2026.02-ABDGCSHILM-4227
docker pull gcr.io/owl-hadoop-cdh/dq-spark-fips:4.1.0-2026.02-ABDGCSHILM-4227
```

{% endstep %}
{% endstepper %}

{% hint style="warning" %}
Livy interactive sessions are not supported in FIPS mode on Kubernetes. Data preview for remote-file connectors and rule and query preview for JDBC connections are not available until this limitation is resolved.
{% endhint %}

{% stepper %}
{% step %}
Configure the JVM with Bouncy Castle FIPS (BCFIPS) as the primary security provider. Internal keystores or truststores must be in BCFKS format.

1. Ensure that the entry **org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider** is set as the security provider in **$JAVA\_HOME/conf/security/java.security**.

<i class="fa-glasses-round">:glasses-round:</i> Example: `security.provider.13=org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider`

***

{% endstep %}

{% step %}
Set the OS environment variable `DQ_APP_FIPS_ENABLED` to **true**.
{% endstep %}

{% step %}
Set the additional keystore properties for the DQ web application and DQ agent:

```
DQ_APP_ENCRYPTION_AT_REST_MODE: HYBRID
KEYSTORE_FILEPATH: /opt/owl/keystore/mykeystore.bcfks
KEYSTORE_PRIVATEKEY_ALIAS: mykeypair
KEYSTORE_PUBLICKEY_ALIAS: mykeypair
KEYSTORE_SECRETS_SOURCE: FILE
KEYSTORE_TYPE: BCFKS
```

{% hint style="warning" %}
If FIPS is enabled, specify the path to the keystore in `KEYSTORE_FILEPATH` (instead of `SAML_KEYSTORE_FILE`).
{% endhint %}
{% endstep %}

{% step %}
Set additional sensitive properties for the secret:

```
KEYSTORE_PASSWORD: BASE64OFTHEPASSWORD
KEYSTORE_PRIVATEKEY_PASSWORD: BASE64OFTHEPASSWORD
```

{% endstep %}

{% step %}
Follow the installation steps for [Installing Data Quality & Observability (self-hosted) on self-hosted Kubernetes](/data-quality-self-hosted/installation/installing-data-quality-observability-self-hosted-on-self-hosted-kubernetes.md).

* Add the following statement to the helm chart to make the base image FIPS-compliant:

  ```
  Values.global.cryptography.fips.enabled
  ```

{% endstep %}

{% step %}
SSL is required for FIPS compliance. Follow the standard steps for [Setting up SSL (HTTPS)](/data-quality-self-hosted/security-configuration/setting-up-ssl-https.md). Note that the datasource URL must end with `sslmode=verify-full`.
{% endstep %}

{% step %}
Create a Spark Pod template k8s-spark-template.yml and mount it at the DQ agent:

```
apiVersion: v1
Kind: Pod
spec:
  securityContext:
    runAsUser: 1000
    runAsGroup: 1000
    fsGroup: 1000
  volumes:
   - name: dq-truststore
     secret:
       secretName: dq-truststore
   - name: dq-fips-keystore
     secret:
       secretName: dq-fips-keystore
  containers:
   - volumeMounts:
      - name: dq-truststore
        mountPath: /etc/custom-ssl
      - name: dq-fips-keystore
        mountPath: /opt/owl/keystore
```

{% endstep %}

{% step %}
Sign in to Data Quality & Observability (self-hosted).
{% endstep %}

{% step %}
On the Collibra DQ home page, hover your pointer over <img src="https://4121921244-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWCrP7Albs8DfJjIQxUxw%2Fuploads%2Fgit-blob-75245abf5c50ddf56f1d2d727ccaacf757d11145%2Fcogwheel-large%402x.png?alt=media" alt="" data-size="line"> **Settings** and select **Admin Console**.\ <i class="fa-chevrons-right">:chevrons-right:</i> The Admin Console opens.
{% endstep %}

{% step %}
Click **Agent Configuration**.\ <i class="fa-chevrons-right">:chevrons-right:</i> The Agent Configuration page opens.
{% endstep %}

{% step %}
In the Actions column, click <img src="https://4121921244-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWCrP7Albs8DfJjIQxUxw%2Fuploads%2Fgit-blob-5face7f577747d86367bf6698315172b6a3536f5%2FEditIcon.svg?alt=media" alt="Edit icon" data-size="line"> to edit your agent.\ <i class="fa-chevrons-right">:chevrons-right:</i> The **Edit Agent** modal appears.
{% endstep %}

{% step %}
In the Free Form (Appended) field, enter the following configuration and ensure that the Bouncy Castle FIPS JAR file, such as **bc-fips-x.jar**, is included in the directory.

```
-addlib $OWL_HOME/bin/external/
```

{% endstep %}

{% step %}
In the Free Form (Appended) field, enter the following Spark configuration.

```
-conf spark.kubernetes.executor.podTemplateFile=/opt/owl/pod-templates/k8s-spark-template.yml,spark.kubernetes.driver.podTemplateFile=/opt/owl/pod-templates/k8s-spark-template.yml,spark.driver.extraJavaOptions=-Djavax.net.ssl.trustStore=/etc/custom-ssl/truststore.bcfks;-Djavax.net.ssl.trustStoreType=BCFKS;-Djavax.net.ssl.trustStorePassword=changeit
```

{% endstep %}

{% step %}
Restart the DQ web application and DQ agent services.
{% endstep %}
{% endstepper %}
{% endtab %}
{% endtabs %}
