Federal Information Processing Standards (FIPS) 140-2 は、情報技術の製品やシステムに含まれる暗号モジュールに関して最低限のセキュリティ要件を規定する米国政府の標準です。 Azure Kubernetes Service (AKS) を使用すると、FIPS 140-2 対応の Linux および Windows ノード プールを作成できます。 FIPS 対応ノード プール上で実行されるデプロイは、そうした暗号モジュールを使用してセキュリティを高め、FedRAMP 準拠の一環としてセキュリティ規制への準拠を促進することができます。 FIPS 140-2 の詳細については、Federal Information Processing Standards (FIPS) 140 に関するページを参照してください。
注意事項
この記事では、AKS で非推奨となる Ubuntu OS バージョンを使用している可能性がある機能への参照があります。
- 2025 年 6 月 17 日から、AKS は Ubuntu 18.04 をサポートしなくなります。 既存のノード イメージは削除され、AKS はセキュリティ更新プログラムを提供しなくなります。 ノード プールをスケーリングできなくなります。 サポートされている Ubuntu バージョンに移行するには、ノード プールをサポートされている kubernetes バージョンにアップグレードします。
- 2027 年 3 月 17 日以降、AKS は Ubuntu 20.04 をサポートしなくなります。 既存のノード イメージは削除され、AKS はセキュリティ更新プログラムを提供しなくなります。 ノード プールをスケーリングできなくなります。 サポートされている Ubuntu バージョンに移行するには、ノード プールを kubernetes バージョン 1.34 以降にアップグレードします。 この提供終了の詳細については、AKS GitHub の問題を参照してください。
重要
2025 年 11 月 30 日から、AKS は Azure Linux 2.0 のセキュリティ更新プログラムをサポートしたり提供したりしなくなります。
2026 年 3 月 31 日以降、ノード イメージは削除され、ノード プールをスケーリングできなくなります。
ノード プールをサポートされている Kubernetes バージョンにアップグレードするか、osSku AzureLinux3
に移行して、サポートされている Azure Linux バージョンに移行します。 詳細については、「 [廃止] AKS 上の Azure Linux 2.0 ノード プール」を参照してください。
前提条件
Azure CLI バージョン 2.32.0 以降がインストールされ構成されていること。 バージョンを確認するには、az --version
を実行します。 Azure CLI のインストールまたはアップグレードの詳細については、「Azure CLI のインストール」を参照してください。
Note
AKS Monitoring Addon では、エージェント バージョン 3.1.17 (Linux) および Win-3.1.17 (Windows) 以降の Ubuntu、Azure Linux、Windows を使用した FIPS 対応ノード プールがサポートされています。
制限事項
- FIPS 対応ノード プールには、次の制限があります。
- FIPS 対応ノードプールには、Kubernetes バージョン 1.19 以降が必要です。
- FIPS に使用される基になるパッケージまたはモジュールを更新するには、ノードイメージのアップグレードを使用する必要があります。
- FIPS ノード上のコンテナー イメージは、FIPS 準拠については評価されません。
- FIPS によって一部の認証モジュールが無効になるため、CIFS 共有のマウントは失敗します。 この問題を回避するには、FIPS 対応ノード プールにファイル共有をマウントしたときのエラーに関するページを参照してください。
- Arm64 VM を備えた FIPS 対応ノード プールは、Azure Linux 3.0 以降でのみサポートされます。
重要
FIPS 対応の Linux イメージは、Linux ベースのノード プールに使用される既定の Linux イメージとは異なります。
FIPS 対応ノード イメージは、FIPS 対応ではないイメージとは異なるバージョン番号 (カーネル バージョンなど) を持つことができます。 FIPS 対応ノード プールとノード イメージの更新サイクルは、FIPS 対応ではないノード プールとイメージとは異なる場合があります。
サポートされている OS バージョン
FIPS 対応ノード プールは、サポートされているすべての OS の種類 (Linux および Windows) で作成できます。 ただし、すべての OS バージョンで FIPS 対応ノード プールがサポートされているわけではありません。 新しい OS バージョンがリリースされた後は、通常、FIPS に準拠する前に待機期間があります。
この表には、サポートされている OS バージョンが含まれています。
OS の種類 | OS SKU | FIPS 準拠 |
---|---|---|
Linux | Ubuntu | サポートされています |
Linux | Azure Linux | サポートされています |
Windows | Windows Server 2019 | サポートされています |
Windows | Windows Server 2022 | サポートされています |
FIPS 対応 Ubuntu を要求するときに、既定の Ubuntu バージョンが FIPS をサポートしていない場合、AKS は既定で最新の FIPS でサポートされているバージョンの Ubuntu に設定されます。 たとえば、Ubuntu 22.04 は Linux ノード プールの既定です。 22.04 は現在 FIPS をサポートしていないため、AKS の既定では Linux FIPS 対応ノード プールの Ubuntu 20.04 が使用されます。
Note
以前は、GetOSOptions API を使用して、特定の OS で FIPS をサポートしているかどうかを判断できました。 GetOSOptions API は非推奨になり、2024-05-01 以降の新しい AKS API バージョンには含まれません。
FIPS 対応 Linux ノード プールを作成する
az aks nodepool add コマンドと
--enable-fips-image
パラメーターを使用して、FIPS 対応の Linux ノード プールを作成します。az aks nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name fipsnp \ --enable-fips-image
az aks show コマンドと agentPoolProfiles の enableFIPS 値のクエリを使用して、ノード プールが FIPS 対応であることを確認します。
az aks show \ --resource-group myResourceGroup \ --name myAKSCluster \ --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \ -o table
次の出力例は、fipsnp ノード プールが FIPS 対応であることを示しています。
Name enableFips --------- ------------ fipsnp True nodepool1 False
kubectl get nodes
コマンドを使用してノードを一覧表示します。kubectl get nodes
次の出力例は、クラスター内のすべてのノードを示しています。
aks-fipsnp
で始まるノードが FIPS 対応ノード プールに属しています。NAME STATUS ROLES AGE VERSION aks-fipsnp-12345678-vmss000000 Ready agent 6m4s v1.19.9 aks-fipsnp-12345678-vmss000001 Ready agent 5m21s v1.19.9 aks-fipsnp-12345678-vmss000002 Ready agent 6m8s v1.19.9 aks-nodepool1-12345678-vmss000000 Ready agent 34m v1.19.9
kubectl debug
を使用して FIPS 対応ノード プールのノードの 1 つに、対話型セッションのデプロイを実行します。kubectl debug node/aks-fipsnp-12345678-vmss000000 -it --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
対話型セッションの出力から、FIPS 暗号ライブラリが有効であることを確認します。 出力は次の出力例のようになります。
root@aks-fipsnp-12345678-vmss000000:/# cat /proc/sys/crypto/fips_enabled 1
また、FIPS 対応ノード プールは、kubernetes.azure.com/fips_enabled=true というラベルを持ち、デプロイではこれを使用して、これらのノード プールをターゲットにすることができます。
FIPS 対応 Windows ノード プールを作成する
az aks nodepool add コマンドと
--enable-fips-image
パラメーターを使用して、FIPS 対応の Windows ノード プールを作成します。 Linux ベースのノード プールとは異なり、Windows ノード プールは同じイメージ セットを共有します。az aks nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name fipsnp \ --enable-fips-image \ --os-type Windows
az aks show コマンドと agentPoolProfiles の enableFIPS 値のクエリを使用して、ノード プールが FIPS 対応であることを確認します。
az aks show \ --resource-group myResourceGroup \ --name myAKSCluster \ --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \ -o table
FIPS 対応ノード プール内に Windows ノードへの RDP 接続を作成することで、Windows ノード プールが FIPS 暗号化ライブラリにアクセスできることを確認し、レジストリをチェックします。 実行アプリケーションから、
regedit
を入力します。レジストリで
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy
を探します。Enabled
が 1 に設定されている場合、FIPS は有効になっています。また、FIPS 対応ノード プールは、kubernetes.azure.com/fips_enabled=true というラベルを持ち、デプロイではこれを使用して、これらのノード プールをターゲットにすることができます。
既存のノード プールを更新して FIPS を有効または無効にする
既存の Linux ノード プールを更新して FIPS を有効または無効にすることができます。 ノード プールを FIPS 以外から FIPS に移行する予定の場合は、まず、運用環境に移行する前に、テスト環境でアプリケーションが正常に動作していることを検証します。 テスト環境でアプリケーションを検証すると、FIPS カーネルによって、FIPS に準拠していない MD4 アルゴリズムなどの脆弱な暗号または暗号化アルゴリズムがブロックされる問題を回避する必要があります。
Note
FIPS を有効または無効にするために既存の Linux ノード プールを更新すると、ノード プールの更新は fips イメージと非 fips イメージの間を移動します。 このノード プールの更新により、再イメージ化がトリガーされ、更新が完了します。 これにより、ノード プールの更新が完了するまでに数分かかる場合があります。
前提条件
Azure CLI バージョン 2.64.0 以降。 バージョンを確認するには、az --version
を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。
既存のノード プールで FIPS を有効にする
既存の Linux ノード プールを更新して FIPS を有効にできます。 既存のノード プールを更新すると、ノード イメージが現在のイメージから同じ OS SKU の推奨 FIPS イメージに変更されます。
az aks nodepool update コマンドと
--enable-fips-image
パラメーターを使用してノード プールを更新します。az aks nodepool update \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name np \ --enable-fips-image
このコマンドは、ノード プールの再イメージ化を直ちにトリガーして、FIPS 準拠のオペレーティング システムを展開します。 この再イメージ化は、ノード プール更新の間に行われます。 追加の手順は必要ありません。
az aks show コマンドを使用してノード プールが FIPS 対応であることを確認し、agentPoolProfiles の enableFIPS 値を照会します。
az aks show \ --resource-group myResourceGroup \ --name myAKSCluster \ --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \ -o table
次の出力例は、np ノード プールが FIPS 対応であることを示しています。
Name enableFips --------- ------------ np True nodepool1 False
kubectl get nodes
コマンドを使用してノードを一覧表示します。kubectl get nodes
次の出力例は、クラスター内のすべてのノードを示しています。
aks-np
で始まるノードが FIPS 対応ノード プールに属しています。NAME STATUS ROLES AGE VERSION aks-np-12345678-vmss000000 Ready agent 6m4s v1.19.9 aks-np-12345678-vmss000001 Ready agent 5m21s v1.19.9 aks-np-12345678-vmss000002 Ready agent 6m8s v1.19.9 aks-nodepool1-12345678-vmss000000 Ready agent 34m v1.19.9
kubectl debug
を使用して FIPS 対応ノード プールのノードの 1 つに、対話型セッションのデプロイを実行します。kubectl debug node/aks-np-12345678-vmss000000 -it --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
対話型セッションの出力から、FIPS 暗号ライブラリが有効であることを確認します。 出力は次の出力例のようになります。
root@aks-np-12345678-vmss000000:/# cat /proc/sys/crypto/fips_enabled 1
また、FIPS 対応ノード プールは、kubernetes.azure.com/fips_enabled=true というラベルを持ち、デプロイではこれを使用して、これらのノード プールをターゲットにすることができます。
既存のノード プールで FIPS を無効にする
既存の Linux ノード プールを更新して FIPS を無効にできます。 既存のノード プールを更新すると、ノード イメージは現在の FIPS イメージから、同じ OS SKU の推奨される FIPS 以外のイメージに変更されます。 ノード イメージの変更は、再イメージ化の後で行われます。
az aks nodepool update コマンドと
--disable-fips-image
パラメーターを使用して Linux ノード プールを更新します。az aks nodepool update \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name np \ --disable-fips-image
このコマンドは、ノード プールの再イメージ化を直ちにトリガーして、FIPS 準拠のオペレーティング システムを展開します。 この再イメージ化は、ノード プール更新の間に行われます。 追加の手順は必要ありません。
az aks show コマンドを使用してノード プールが FIPS 対応でないことを確認し、agentPoolProfiles の enableFIPS 値のクエリを実行します。
az aks show \ --resource-group myResourceGroup \ --name myAKSCluster \ --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \ -o table
次の出力例は、 np ノード プールが FIPS 対応ではないことを示しています。
Name enableFips --------- ------------ np False nodepool1 False
その日のメッセージ
--message-of-the-day
フラグをファイルの場所に渡し、クラスターの作成時またはノードプールの作成時にLinuxノードの「今日のメッセージ」を置き換えます。
az aks create コマンドを使用して、その日のメッセージを含むクラスターを作成します。
az aks create --cluster-name myAKSCluster --resource-group myResourceGroup --message-of-the-day ./newMOTD.txt
az aks nodepool add コマンドを使用して、その日のメッセージを含むノード プールを追加します。
az aks nodepool add --name mynodepool1 --cluster-name myAKSCluster --resource-group myResourceGroup --message-of-the-day ./newMOTD.txt
次のステップ
AKS のセキュリティの詳細については、「Azure Kubernetes Service (AKS) でのクラスターのセキュリティとアップグレードに関するベスト プラクティス」をご覧ください。
Azure Kubernetes Service