You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
title: Enable Federal Information Process Standard (FIPS) for Azure Kubernetes Service (AKS) node pools
3
+
description: Learn how to enable Federal Information Process Standard (FIPS) for Azure Kubernetes Service (AKS) node pools.
4
+
author: erik-ha-msft
5
+
ms.author: erikha
6
+
ms.service: container-service
7
+
ms.topic: how-to
8
+
ms.date: 07/19/2022
9
+
ms.custom: template-how-to
10
+
---
11
+
12
+
# Enable Federal Information Process Standard (FIPS) for Azure Kubernetes Service (AKS) node pools
13
+
14
+
The Federal Information Processing Standard (FIPS) 140-2 is a US government standard that defines minimum security requirements for cryptographic modules in information technology products and systems. Azure Kubernetes Service (AKS) allows you to create Linux and Windows node pools with FIPS 140-2 enabled. Deployments running on FIPS-enabled node pools can use those cryptographic modules to provide increased security and help meet security controls as part of FedRAMP compliance. For more information on FIPS 140-2, see [Federal Information Processing Standard (FIPS) 140][fips].
15
+
16
+
## Prerequisites
17
+
18
+
You need the Azure CLI version 2.32.0 or later installed and configured. Run `az --version` to find the version. For more information about installing or upgrading the Azure CLI, see [Install Azure CLI][install-azure-cli].
19
+
20
+
FIPS-enabled node pools have the following limitations:
21
+
22
+
* FIPS-enabled node pools require Kubernetes version 1.19 and greater.
23
+
* To update the underlying packages or modules used for FIPS, you must use [Node Image Upgrade][node-image-upgrade].
24
+
* Container images on the FIPS nodes haven't been assessed for FIPS compliance.
25
+
26
+
> [!IMPORTANT]
27
+
> The FIPS-enabled Linux image is a different image than the default Linux image used for Linux-based node pools. To enable FIPS on a node pool, you must create a new Linux-based node pool. You can't enable FIPS on existing node pools.
28
+
>
29
+
> FIPS-enabled node images may have different version numbers, such as kernel version, than images that are not FIPS-enabled. Also, the update cycle for FIPS-enabled node pools and node images may differ from node pools and images that are not FIPS-enabled.
30
+
31
+
## Create a FIPS-enabled Linux node pool
32
+
33
+
To create a FIPS-enabled Linux node pool, use the [az aks nodepool add][az-aks-nodepool-add] command with the `--enable-fips-image` parameter when creating a node pool.
34
+
35
+
```azurecli-interactive
36
+
az aks nodepool add \
37
+
--resource-group myResourceGroup \
38
+
--cluster-name myAKSCluster \
39
+
--name fipsnp \
40
+
--enable-fips-image
41
+
```
42
+
43
+
> [!NOTE]
44
+
> You can also use the `--enable-fips-image` parameter with [az aks create][az-aks-create] when creating a cluster to enable FIPS on the default node pool. When adding node pools to a cluster created in this way, you still must use the `--enable-fips-image` parameter when adding node pools to create a FIPS-enabled node pool.
45
+
46
+
To verify your node pool is FIPS-enabled, use [az aks show][az-aks-show] to check the *enableFIPS* value in *agentPoolProfiles*.
The following example output shows the *fipsnp* node pool is FIPS-enabled and *nodepool1* isn't.
57
+
58
+
```output
59
+
Name enableFips
60
+
--------- ------------
61
+
fipsnp True
62
+
nodepool1 False
63
+
```
64
+
65
+
You can also verify deployments have access to the FIPS cryptographic libraries using `kubectl debug` on a node in the FIPS-enabled node pool. Use `kubectl get nodes` to list the nodes:
In the above example, the nodes starting with `aks-fipsnp` are part of the FIPS-enabled node pool. Use `kubectl debug` to run a deployment with an interactive session on one of those nodes in the FIPS-enabled node pool.
FIPS-enabled node pools also have a *kubernetes.azure.com/fips_enabled=true* label, which can be used by deployments to target those node pools.
90
+
91
+
## Create a FIPS-enabled Windows node pool
92
+
93
+
To create a FIPS-enabled Windows node pool, use the [az aks nodepool add][az-aks-nodepool-add] command with the `--enable-fips-image` parameter when creating a node pool. Unlike Linux-based node pools, Windows node pools share the same image set.
94
+
95
+
```azurecli-interactive
96
+
az aks nodepool add \
97
+
--resource-group myResourceGroup \
98
+
--cluster-name myAKSCluster \
99
+
--name fipsnp \
100
+
--enable-fips-image \
101
+
--os-type Windows
102
+
```
103
+
104
+
To verify your node pool is FIPS-enabled, use [az aks show][az-aks-show] to check the *enableFIPS* value in *agentPoolProfiles*.
To verify Windows node pools have access to the FIPS cryptographic libraries, [create an RDP connection to a Windows node][aks-rdp] in a FIPS-enabled node pool and check the registry.
115
+
116
+
1. From the **Run** application, enter `regedit`.
117
+
1. Look for `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy` in the registry.
118
+
1. If `Enabled` is set to 1, then FIPS is enabled.
119
+
120
+
:::image type="content" source="./media/enable-fips-nodes/enable-fips-nodes-windows.png" alt-text="Screenshot shows a picture of the registry editor to the FIPS Algorithm Policy, and it being enabled.":::
121
+
122
+
FIPS-enabled node pools also have a *kubernetes.azure.com/fips_enabled=true* label, which can be used by deployments to target those node pools.
123
+
124
+
## Next steps
125
+
126
+
To learn more about AKS security, see [Best practices for cluster security and upgrades in Azure Kubernetes Service (AKS)][aks-best-practices-security].
Copy file name to clipboardExpand all lines: articles/aks/use-multiple-node-pools.md
+3-73Lines changed: 3 additions & 73 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -409,7 +409,7 @@ As your application workloads demands, you may associate node pools to capacity
409
409
410
410
For more information on the capacity reservation groups, please refer to [Capacity Reservation Groups][capacity-reservation-groups].
411
411
412
-
Associating a node pool with an existing capacity reservation group can be done using [az aks nodepool add][az-aks-nodepool-add] command and specifying a capacity reservation group with the --capacityReservationGroup flag" The capacity reservation group should already exist, otherwise the node pool will be added to the cluster with a warning and no capacity reservation group gets associated.
412
+
Associating a node pool with an existing capacity reservation group can be done using [az aks nodepool add][az-aks-nodepool-add] command and specifying a capacity reservation group with the --capacityReservationGroup flag" The capacity reservation group should already exist, otherwise the node pool will be added to the cluster with a warning and no capacity reservation group gets associated.
413
413
414
414
```azurecli-interactive
415
415
az aks nodepool add -g MyRG --cluster-name MyMC -n myAP --capacityReservationGroup myCRG
@@ -605,77 +605,7 @@ For more information on using Azure tags with node pools, see [Use Azure tags in
605
605
606
606
## Add a FIPS-enabled node pool
607
607
608
-
The Federal Information Processing Standard (FIPS) 140-2 is a US government standard that defines minimum security requirements for cryptographic modules in information technology products and systems. AKS allows you to create Linux-based node pools with FIPS 140-2 enabled. Deployments running on FIPS-enabled node pools can use those cryptographic modules to provide increased security and help meet security controls as part of FedRAMP compliance. For more information on FIPS 140-2, see [Federal Information Processing Standard (FIPS) 140-2][fips].
609
-
610
-
### Prerequisites
611
-
612
-
You need the Azure CLI version 2.32.0 or later installed and configured. Run `az --version` to find the version. If you need to install or upgrade, see [Install Azure CLI][install-azure-cli].
613
-
614
-
FIPS-enabled node pools have the following limitations:
615
-
616
-
* Currently, you can only have FIPS-enabled Linux-based node pools running on Ubuntu 18.04.
617
-
* FIPS-enabled node pools require Kubernetes version 1.19 and greater.
618
-
* To update the underlying packages or modules used for FIPS, you must use [Node Image Upgrade][node-image-upgrade].
619
-
* Container Images on the FIPS nodes haven't been assessed for FIPS compliance.
620
-
621
-
> [!IMPORTANT]
622
-
> The FIPS-enabled Linux image is a different image than the default Linux image used for Linux-based node pools. To enable FIPS on a node pool, you must create a new Linux-based node pool. You can't enable FIPS on existing node pools.
623
-
>
624
-
> FIPS-enabled node images may have different version numbers, such as kernel version, than images that are not FIPS-enabled. Also, the update cycle for FIPS-enabled node pools and node images may differ from node pools and images that are not FIPS-enabled.
625
-
626
-
To create a FIPS-enabled node pool, use [az aks nodepool add][az-aks-nodepool-add] with the *--enable-fips-image* parameter when creating a node pool.
627
-
628
-
```azurecli-interactive
629
-
az aks nodepool add \
630
-
--resource-group myResourceGroup \
631
-
--cluster-name myAKSCluster \
632
-
--name fipsnp \
633
-
--enable-fips-image
634
-
```
635
-
636
-
> [!NOTE]
637
-
> You can also use the *--enable-fips-image* parameter with [az aks create][az-aks-create] when creating a cluster to enable FIPS on the default node pool. When adding node pools to a cluster created in this way, you still must use the *--enable-fips-image* parameter when adding node pools to create a FIPS-enabled node pool.
638
-
639
-
To verify your node pool is FIPS-enabled, use [az aks show][az-aks-show] to check the *enableFIPS* value in *agentPoolProfiles*.
640
-
641
-
```azurecli-interactive
642
-
az aks show --resource-group myResourceGroup --name myAKSCluster --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" -o table
643
-
```
644
-
645
-
The following example output shows the *fipsnp* node pool is FIPS-enabled and *nodepool1* isn't.
646
-
647
-
```output
648
-
Name enableFips
649
-
--------- ------------
650
-
fipsnp True
651
-
nodepool1 False
652
-
```
653
-
654
-
You can also verify deployments have access to the FIPS cryptographic libraries using `kubectl debug` on a node in the FIPS-enabled node pool. Use `kubectl get nodes` to list the nodes:
In the above example, the nodes starting with `aks-fipsnp` are part of the FIPS-enabled node pool. Use `kubectl debug` to run a deployment with an interactive session on one of those nodes in the FIPS-enabled node pool.
FIPS-enabled node pools also have a *kubernetes.azure.com/fips_enabled=true* label, which can be used by deployments to target those node pools.
608
+
For more information on enabling Federal Information Process Standard (FIPS) for your AKS cluster, see [Enable Federal Information Process Standard (FIPS) for Azure Kubernetes Service (AKS) node pools][enable-fips-nodes].
679
609
680
610
## Manage node pools using a Resource Manager template
681
611
@@ -911,6 +841,7 @@ Use [proximity placement groups][reduce-latency-ppg] to reduce latency for your
0 commit comments