Enabling and disabling FIPS mode
After you install IBM® Cloud Private, you can enable or disable Federal Information Processing Standard (FIPS) 140-2 compliance for IBM Cloud Private management ingress (management console), NGINX ingress controller (ingress service), image manager, Docker registry, and WebSphere Liberty Application Server (authentication manager).
By default, FIPS compliance mode is disabled.
Required user type or access level: Cluster administrator or team administrator.
Enable or disable FIPS mode for IBM Cloud Private management ingress
- Log on to the management console.
- Download the
icp-management-ingress-3.2.1.tgzchart. -
Copy the chart to a temporary location.
-
For a Linux® cluster, run the following command:
docker run --rm -e LICENSE=accept -i -v /tmp:/tmp ibmcom/icp-inception-amd64:3.2.1-ee cp /addon/icp-management-ingress-3.2.1.tgz /tmp -
For a Linux® on Power® (ppc64le) cluster, run the following command:
docker run --rm -e LICENSE=accept -i -v /tmp:/tmp ibmcom/icp-inception-ppc64le:3.2.1-ee cp /addon/icp-management-ingress-3.2.1.tgz /tmp
-
-
Configure the
helmcommand line interface (CLI) as an Admin user. For more information about configuring the Helm CLI, see Installing the Helm CLI (helm). -
To enable FIPS mode, run the following commands:
helm get values --tls icp-management-ingress > /tmp/old-value.yaml helm upgrade --set fips_enabled=true icp-management-ingress -f /tmp/old-value.yaml /tmp/icp-management-ingress-3.2.1.tgz --tls -
Set up kubectl CLI. See Accessing your cluster from the Kubernetes CLI (kubectl).
-
Check the
icp-management-ingresscontainer log to verify whether FIPS mode is enabled. In the following example,icp-management-ingress-kj5z6is the pod name.kubectl logs icp-management-ingress-kj5z6 | grep FIPSFollowing is a sample output:
2018/09/28 09:24:56 [notice] 20#20: FIPS_mode_set() successfully (SSL:)
To disable FIPS mode, run the following command:
helm upgrade --set fips_enabled=false icp-management-ingress /tmp/icp-management-ingress-3.2.1.tgz --tls
Enable or disable FIPS mode for NGINX ingress controller
- Log on to the management console.
- Download the
nginx-ingress-3.2.1.tgzchart. -
Copy the chart to a temporary location.
-
For a Linux® cluster, run the following command:
docker run --rm -e LICENSE=accept -it -v /tmp:/tmp ibmcom/icp-inception-amd64:3.2.1-ee cp /addon/nginx-ingress-3.2.1.tgz /tmp -
For a Linux® on Power® (ppc64le) cluster, run the following command:
docker run --rm -e LICENSE=accept -it -v /tmp:/tmp ibmcom/icp-inception-ppc64le:3.2.1-ee cp /addon/nginx-ingress-3.2.1.tgz /tmp
-
-
Configure the
helmcommand line interface (CLI) as an Admin user. For more information about configuring the Helm CLI, see Installing the Helm CLI (helm). -
To enable FIPS mode, run the following commands:
helm get values --tls nginx-ingress > /tmp/old-value.yaml helm upgrade --set fips_enabled=true nginx-ingress -f /tmp/old-value.yaml /tmp/nginx-ingress-3.2.1.tgz --tls -
Set up kubectl CLI. See Accessing your cluster from the Kubernetes CLI (kubectl).
-
Check the NGINX ingress controller container log to verify whether FIPS mode is enabled. In the following example,
nginx-ingress-controller-qhczris the pod name.kubectl logs nginx-ingress-controller-qhczr | grep FIPSFollowing is a sample output:
2018/09/28 09:24:56 [notice] 20#20: FIPS_mode_set() successfully (SSL:)
To disable FIPS mode, run the following command:
helm upgrade --set fips_enabled=false nginx-ingress /tmp/nginx-ingress-3.2.1.tgz --tls
Enable or disable FIPS mode for IBM Cloud Private image manager
To enable FIPS mode for IBM Cloud Private image manager, run these commands:
- Set up kubectl CLI. See Accessing your cluster from the Kubernetes CLI (kubectl).
-
Edit the image manager StatefulSet.
kubectl edit StatefulSets image-manager -n kube-system -
Change the value of the environment variable named
FIPS_ENABLEDtotruefor containerimage-manager. - Save the StatefulSet.
To disable FIPS mode for IBM Cloud Private image manager, run these commands:
- Set up kubectl CLI. See Accessing your cluster from the Kubernetes CLI (kubectl).
-
Edit the image manager StatefulSet.
kubectl edit StatefulSets image-manager -n kube-system -
Change the value of the environment variable named
FIPS_ENABLEDtofalsefor containerimage-manager. - Save the StatefulSet.
Enable or disable FIPS mode for Docker registry
To enable FIPS mode for Docker registry, run these commands:
- Set up kubectl CLI. See Accessing your cluster from the Kubernetes CLI (kubectl).
-
Edit the image manager StatefulSet.
kubectl edit StatefulSets image-manager -n kube-system -
Change the value of the environment variable named
FIPS_ENABLEDtotruefor containericp-registry. - Save the StatefulSet.
To disable FIPS mode for IBM Cloud Private image manager, run these commands:
- Set up kubectl CLI. See Accessing your cluster from the Kubernetes CLI (kubectl).
-
Edit the image manager StatefulSet.
kubectl edit StatefulSets image-manager -n kube-system -
Change the value of the environment variable named
FIPS_ENABLEDtofalsefor containericp-registry. - Save the StatefulSet.
Enable or disable FIPS mode for authentication manager
To enable FIPS mode for authentication manager, run these commands:
- Set up kubectl CLI. See Accessing your cluster from the Kubernetes CLI (kubectl).
-
Edit the
platform-auth-idpconfigmap.kubectl -n kube-system edit configmap platform-auth-idp -
Change the value of the variable named
FIPS_ENABLEDtotrue. - Save the configmap.
-
Restart the
auth-idppods by deleting them.kubectl -n kube-system delete pod -l k8s-app=auth-idp -
Wait for some time for the pods to restart. Check the status.
kubectl -n kube-system get pods | grep auth-idpWhen the status of all
auth-idppods shows4/4 Running, the pods are ready.
To disable FIPS mode for authentication manager, run these commands:
- Set up kubectl CLI. See Accessing your cluster from the Kubernetes CLI (kubectl).
-
Edit the
platform-auth-idpconfigmap.kubectl -n kube-system edit configmap platform-auth-idp -
Change the value of the variable named
FIPS_ENABLEDtofalse. - Save the configmap.
-
Restart the
auth-idppods by deleting them.kubectl -n kube-system delete pod -l k8s-app=auth-idp -
Wait for some time for the pods to restart. Check the status.
kubectl -n kube-system get pods | grep auth-idpWhen the status of all
auth-idppods shows4/4 Running, the pods are ready.