Azure Kubernetes Service (AKS) でカスタム証明機関 (CA) を使用する

カスタム証明機関 (CA) を使用すると、最大 10 個の base64 でエンコードされた証明書をノードの信頼ストアに追加できます。 この機能は、プライベート レジストリに接続するときのように、証明機関 (CA) がノード上に存在する必要がある場合によく必要です。

この記事では、カスタム CA を作成し、それらを AKS クラスターに適用する方法について説明します。

Note

カスタム CA 機能は、カスタム証明書を AKS ノードの信頼ストアに追加します。 この機能で追加された証明書は、ポッドで実行されているコンテナーでは使用できません。 コンテナー内に証明書が必要な場合は、ポッドで使用されるイメージに追加するか、スクリプトとシークレットを使用して実行時に証明書を個別に追加する必要があります。

Prerequisites

  • Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、無料アカウントを作成してください。
  • Azure CLI バージョン 2.72.0 以降がインストールおよび構成されています。 CLI のバージョンを確認するには、 az --version コマンドを実行します。 インストールまたはアップグレードが必要な場合は、Azure CLI のインストールを参照してください。
  • base64 でエンコードされた証明書文字列、または証明書を含むテキスト ファイル。

Limitations

  • Windows ノード プールはサポートされていません。
  • 同じクラスターに異なる CA をインストールすることはできません。

証明書ファイルを作成する

  • 最大 10 行の空白行区切り証明書を含むテキスト ファイルを作成します。 このファイルをクラスターに渡すと、証明書は AKS ノードの信頼ストアにインストールされます。

    テキスト ファイルの例:

        -----BEGIN CERTIFICATE-----
        cert1
        -----END CERTIFICATE-----
    
        -----BEGIN CERTIFICATE-----
        cert2
        -----END CERTIFICATE-----
    

次の手順に進む前に、エラーを回避するためにテキスト ファイルに空白スペースがないことを確認してください

カスタム CA を AKS クラスターに渡す

  • 証明書ファイルの名前にaz aks createを設定して、az aks updateまたは--custom-ca-trust-certificatesコマンドを使用して、クラスターに証明書を渡します。

    # Create a new cluster
    az aks create \
        --resource-group <resource-group-name> \
        --name <cluster-name> \
        --node-count 2 \
        --custom-ca-trust-certificates <path-to-certificate-file> \
        --generate-ssh-keys
    
    # Update an existing cluster
    az aks update \
        --resource-group <resource-group-name> \
        --name <cluster-name> \
        --custom-ca-trust-certificates <path-to-certificate-file>
    

    Note

    この操作により、モデルの更新がトリガーされ、すべての既存のノードに、正しいプロビジョニング用に同じ CA がインストールされます。 AKS は、新しいノードを作成し、既存のノードをドレインし、既存のノードを削除して、新しい CA セットがインストールされているノードに置き換えます。

CA がインストールされていることを確認する

  • az aks show コマンドを使用して CA がインストールされていることを確認します。

    az aks show --resource-group <resource-group-name> --name <cluster-name> | grep securityProfile -A 4
    

    出力には、 securityProfile セクションにカスタム CA 証明書が含まれている必要があります。 例えば次が挙げられます。

      "securityProfile": {
        "azureKeyVaultKms": null,
        "customCaTrustCertificates": [
            "values"
    

カスタム CA の書式設定エラーを解決する

証明書をクラスターに追加すると、証明書を含むファイルの形式が正しくない場合にエラーが発生する可能性があります。 次の例のようなエラーが表示される場合があります。

failed to decode one of SecurityProfile.CustomCATrustCertificates to PEM after base64 decoding

このエラーが発生した場合は、例のファイルに示すように、入力ファイルに、正しく書式設定された証明書以外の余分な改行、空白、またはデータがないことを確認する必要があります。

不明な機関によって署名されたカスタム CA X.509 証明書のエラーを解決する

AKS では、渡された証明書が適切に書式設定され、base64 でエンコードされている必要があります。 渡した CA が適切に base64 でエンコードされていることと、CA を含むファイルに CRLF 改行がないことを確認します。

コンテナーを再起動して新しい証明書を取得する

コンテナー化しても新しい証明書が取得されない場合は、ノードのシェルから systemctl restart containerd コマンドを実行します。 コンテナーが再起動されると、コンテナー ランタイムは新しい証明書を取得する必要があります。

enableCustomCATrust (プレビュー) 廃止に伴う移行

Important

2026 年 9 月 14 日から、プレビュー プロパティ enableCustomCATrust は廃止されます。 その日以降、 enableCustomCATrust=true ノード プール レベルのフィールドでは、AKS のカスタム証明機関 (CA) 機能は有効ではなくなります。 このプロパティをサポートする最後のプレビュー API は 2025-08-02-previewenableCustomCATrust=trueに依存している既存のノード プールでは、スケーリング操作中や証明書の更新時にエラーが発生する可能性があります。 サービスの中断を回避するには、影響を受けるクラスターとノード プールを更新し、2026 年 9 月 14 日より前にプレビュー プロパティを削除します。 移行手順については、enableCustomCATrust (プレビュー) 提供終了に伴う移行を参照してください。 このサポート終了の詳細については、Retirement GitHub イシューをご覧ください。 お知らせや更新プログラムに関する最新情報を入手するには、 AKS のリリース ノートに従ってください。

ノード プールからカスタム CA 信頼プロパティを削除する

現在のAzure CLI リリースには、--disable-custom-ca-trust オプションは含まれていません。 廃止される enableCustomCATrust プロパティを削除するには、影響を受ける各ノード プールの汎用リソース更新プログラムを使用します。 2025-08-02-preview API は、このプロパティを公開する最後の API バージョンです。

POOL_ID=$(az aks nodepool show \
  --resource-group <resource-group> \
  --cluster-name <cluster-name> \
  --name <node-pool-name> \
  --query id \
  --output tsv)

az resource update \
  --ids "$POOL_ID" \
  --api-version 2025-08-02-preview \
  --set properties.enableCustomCATrust=false

このコマンドは、完全なノード プール リソースを取得し、 enableCustomCATrust更新し、更新されたリソースを返送します。 他のノードプールのプロパティが保持されます。

プロパティが無効であり、ノード プールの更新が成功したことを確認します。

az rest \
  --method get \
  --url "https://management.azure.com${POOL_ID}?api-version=2025-08-02-preview" \
  --query "properties.{enableCustomCATrust:enableCustomCATrust,provisioningState:provisioningState}" \
  --output json

enableCustomCATrustが有効になっているすべてのノード プールに対して、これらの手順を繰り返します。 期待される出力は、falseenableCustomCATrust に設定され、SucceededprovisioningState に設定されていることを示しています。

この廃止後にクラスターでカスタム CA 信頼を有効にする場合は、 --custom-ca-trust-certificates を使用し、証明書ファイルへのパスを指定します。

AKS のセキュリティのベスト プラクティスについて詳しくは、「Azure Kubernetes Service (AKS) でのクラスターのセキュリティとアップグレードに関するベスト プラクティス」をご覧ください。