Preparing the hosts
Prepare cluster hosts for FIPS integration by configuring system entropy, enabling RHEL FIPS mode, and installing JDK 17.
-
Run the cat/proc/sys/kernel/random/entropy_avail command to
check the available entropy.
-
Install and start one of the following tools to maintain high entropy levels on
each host:
rng-tools— Utilizes Hardware Random Number Generators (HWRNGs) or hypervisor entropy sources. For more information on entropy requirements, see Data at Rest Encryption Requirements.Run the following commands to install the package, configure the tool to start on system boot, and launch the
rngdservice immediately:sudo dnf install rng-tools sudo systemctl enable rngd sudo systemctl start rngdhaveged— Generates entropy using CPU execution time jitter. This tool is located in the EPEL repository. For advanced configuration instructions, see haveged documentation.Run the following commands to install the package, configure the tool to start on system boot, and launch the
havegedservice immediately:sudo dnf install haveged sudo systemctl enable haveged sudo systemctl start haveged
-
Configure the host operating system for FIPS compliance.
For instructions on enabling the system-wide cryptographic policy for FIPS mode, see:
- For systems running RHEL 8, see Red Hat security hardening documentation.
- For systems running RHEL 9, see Red Hat Security hardening documentation.
-
Run either of the following
commands to confirm FIPS mode activation across all hosts:
Table 1. FIPS mode activation confirmation commands Command Expected results Meaning cat /proc/sys/crypto/fips_enabledcrypto.fips_enabled = 1A value of 1 confirms FIPS is active sysctl crypto.fips_enabledcrypto.fips_enabled = 1A value of 1 confirms FIPS is active -
Set up the repository for Cloudera Manager and the necessary
package installations.
-
Download the Cloudera Manager repository
configuration file for your OS
version from the following link:
https://[username]:[password]@archive.cloudera.com/p/cm7/7.13.2.10000/redhat9/yum/cloudera-manager.repo -
Edit
/etc/yum.repos.d/cloudera-manager.repoto replace thechangemeplaceholder values with your user name and password.[cloudera-manager] name=Cloudera Manager 7.13.2.10000 baseurl=https://archive.cloudera.com/p/cm7/7.13.2.10000/redhat9/yum/ gpgkey=https://archive.cloudera.com/p/cm7/7.13.2.10000/redhat9/yum/ RPM-GPG-KEY-cloudera username=changeme password=changeme gpgcheck=1 enabled=1 autorefresh=0 type=rpm-md - Set up a local repository for environments with no access to https://archive.cloudera.com. For instructions, see Configuring local package and parcel repositories .
-
Download the Cloudera Manager repository
configuration file for your OS
version from the following link:
-
Deploy JDK 17 across all cluster hosts using one of the
following installation methods:
- OpenJDK17
- Oracle JDK17
- manual tarball archive
-
Download the cloudera-sasl JAR
file.
-
Download the sasl-sha256aes file from the Cloudera archive:
- Open https://archive.cloudera.com/p/cdh7/<cdp_version>/maven-repository/com/cloudera/sasl/sasl-sha256aes/, where <cdp_version> is the four digit version number, such as, 7.1.9.20000.
- Select the
0.1.0.<cdp_version>-<xx>folder, <xx> is an internal build iteration number. For example, for 7.1.9.20000 it is 24. - Download the sasl-sha256aes-0.1.0.<cdp_version>-<xx>.jar file.
- Copy the file to the following locations on all hosts in the cluster:
- /opt/cloudera/fips/ (or to your designated CCJ/BCTLS storage)
- /opt/cloudera/parcels/CDH/jars/
- /opt/cloudera/parcels/CDH/lib/hadoop/
-
Download the sasl-sha256aes file from the Cloudera archive:
-
Install CryptoComply for Java (CC for Java) SafeLogic on all
hosts.
- Download the required SafeLogic CC Java module JAR, BCTLS Java module JAR and BCUTIL Java module JAR files.
- Create the /opt/cloudera/fips/ directory using the sudo mkdir /opt/cloudera/fips/ command.
- Copy the ccj-4.0.0.jar, bctls-2.0.17.1.jar and bcutil-2.0.1.jar files to the /opt/cloudera/fips/ directory.
-
Change the file permissions of the JAR files to
rootusing the following command:chown root: /opt/cloudera/fips/ccj-4.0.0-fips.jar chown root: /opt/cloudera/fips/bctls-2.0.17.1.jar chown root: /opt/cloudera/fips/bcutil-2.0.1.jar -
Set the file permissions of both JAR files to
0644using the following command:chmod 0644 /opt/cloudera/fips/ccj-4.0.0-fips.jar chmod 0644 /opt/cloudera/fips/bctls-2.0.17.1.jar chmod 0644 /opt/cloudera/fips/bcutil-2.0.1.jar
-
Create a configuration script named ccj.sh under
/etc/profile.d/ to configure the Java environment
variables.
echo "export JDK_JAVA_OPTIONS='--module-path=/opt/cloudera/fips/ccj-4.0.0-fips.jar:/opt/cloudera/fips/bctls-2.0.17.1.jar --add-exports java.base/sun.security.provider=com.safelogic.cryptocomply.fips.core --add-modules com.safelogic.cryptocomply.fips.core,bctls'">/etc/profile.d/ccj.sh -
Configure the java.policy file, by adding the CCJ
configuration block inside the closing bracket at the end of the
$JAVA_HOME/conf/security/java.policy file, in the
following format:
//CCJ Java Permissions permission java.lang.RuntimePermission "getProtectionDomain"; permission java.lang.RuntimePermission "accessDeclaredMembers"; permission java.util.PropertyPermission "java.runtime.name", "read"; permission java.security.SecurityPermission "putProviderProperty.CCJ"; //CCJ Key Export and Translation permission com.safelogic.cryptocomply.crypto.CryptoServicesPermission "exportKeys"; //CCJ SSL permission com.safelogic.cryptocomply.crypto.CryptoServicesPermission "tlsAlgorithmsEnabled"; //CCJ Setting of Default SecureRandom permission com.safelogic.cryptocomply.crypto.CryptoServicesPermission "defaultRandomConfig"; //CCJ Setting CryptoServicesRegistrar Properties permission com.safelogic.cryptocomply.crypto.CryptoServicesPermission "globalConfig"; //CCJ Enable JKS permission com.safelogic.cryptocomply.jca.enable_jks "true"; }; -
Append the security provider configuration to the
java.security file.
security.provider.1=com.safelogic.cryptocomply.jcajce.provider.CryptoComplyFipsProvider security.provider.2=org.bouncycastle.jsse.provider.BouncyCastleJsseProvider fips:CCJ security.provider.3=com.cloudera.security.sasl.ClouderaSaslProvider security.provider.4=SUN security.provider.5=SunRsaSign security.provider.6=SunEC security.provider.7=SunJSSE security.provider.8=SunJGSS security.provider.9=SunSASL security.provider.10=XMLDSig security.provider.11=SunPCSC security.provider.12=JdkLDAP security.provider.13=JdkSASL security.provider.14=SunPKCS11 ssl.KeyManagerFactory.algorithm=X.509 ssl.TrustManagerFactory.algorithm=PKIX security.useSystemPropertiesFile=false keystore.type=bcfks
