Azure Kubernetes Service (AKS) で OpenID Connect プロバイダーを作成する

OpenID Connect (OIDC) は、OAuth 2.0 の認可プロトコルを Microsoft Entra ID によって発行された別の認証プロトコルとして使用できるように拡張したものです。 OIDC を使用すると、Azure Kubernetes Service (AKS) クラスター上で、ID トークン と呼ばれるセキュリティ トークンを使用して OAuth 対応アプリケーション間でシングル サインオン (SSO) を有効にできます。 AKS クラスターを使用すると、OpenID Connect (OIDC) Issuer を有効にすることができます。これにより、Microsoft Entra ID またはその他のクラウド プロバイダー ID およびアクセス管理プラットフォームで API サーバーの公開署名キーを検出できます。

AKS では、キーは定期的に自動ローテーションされます。 待ちたくない場合は、キーを手動ですぐにローテーションできます。 OIDC プロバイダーによって発行されるトークンの最大有効期間は 1 日です。

警告

既存のクラスターで OIDC Issuer を有効にすると、現在のサービス アカウント トークンの発行者が新しい値に変更され、API サーバーが再起動されるため、ダウン タイムが発生する場合があります。 OIDC Issuer を有効にした後、サービス トークンを使っているアプリケーション ポッドが失敗状態のままになる場合は、ポッドを手動で再起動することをお勧めします。

この記事では、クラスターの OIDC Issuer を作成、更新、管理する方法について説明します。

重要

クラスターで OIDC 発行者を有効にした後、無効にすることはサポートされていません。

重要

トークンは定期的に更新する必要があります。 SDKを使用する場合、ローテーションは自動的に行われます。それ以外の場合は、手動で 24 時間ごとにトークンを更新する必要があります。

前提条件

  • Azure CLI バージョン 2.42.0 以降。 バージョンを確認するには az --version を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。
  • AKS では、バージョン 1.22 以降の OIDC Issuer がサポートされています。

OIDC Issuer を使用して AKS クラスターを作成する

OIDC Issuer を使うには、az aks create コマンドと --enable-oidc-issuer パラメーターを使って、AKS クラスターを作成します。 次の例では、myResourceGroup 内の 1 つのノードで myAKSCluster という名前のクラスターを作成します。

az aks create -g myResourceGroup -n myAKSCluster --node-count 1 --enable-oidc-issuer

OIDC Issuer を備えた AKS クラスターを更新する

OIDC Issuer (プレビュー) を使うには、az aks update コマンドと --enable-oidc-issuer パラメーターを使って、AKS クラスターを更新します。 次の例では、myAKSCluster という名前のクラスターを更新します。

az aks update -g myResourceGroup -n myAKSCluster --enable-oidc-issuer 

OIDC 発行者 URL を表示する

OIDC Issuer の URL を取得するには、az aks show コマンドを実行します。 クラスター名とリソース グループ名の既定値を置き換えてください。

az aks show -n myAKScluster -g myResourceGroup --query "oidcIssuerProfile.issuerUrl" -otsv

既定では、発行者はベース URL https://{region}.oic.prod-aks.azure.com を使用するように設定されています。ここで {region} の値は、AKS クラスターがデプロイされている場所と一致します。

OIDC キーをローテーションする

OIDC キーをローテーションするには、az aks oidc-issuer コマンドを実行します。 クラスター名とリソース グループ名の既定値を置き換えてください。

az aks oidc-issuer rotate-signing-keys -n myAKSCluster -g myResourceGroup

重要

キーをローテーションすると、古いキー (key1) は 24 時間後に期限切れになります。 つまり、24 時間経過するまでは、古いキー (key1) と新しいキー (key2) の両方が有効になっています。 古いキー (key1) をすぐに無効にしたい場合は、OIDC キーを 2 回ローテーションし、投影されたサービス アカウント トークンを使用してポッドを再起動する必要があります。 その後は、key2 と key3 が有効になり、key1 は無効になります。

OIDC キーを確認する

OIDC 発行者 URL を取得する

OIDC Issuer の URL を取得するには、az aks show コマンドを実行します。 クラスター名とリソース グループ名の既定値を置き換えてください。

az aks show -n myAKScluster -g myResourceGroup --query "oidcIssuerProfile.issuerUrl" -otsv

出力は次のようになります。

https://eastus.oic.prod-aks.azure.com/00000000-0000-0000-0000-000000000000/00000000-0000-0000-0000-000000000000/

既定では、発行者はベース URL https://{region}.oic.prod-aks.azure.com/{uuid} を使用するように設定されています。ここで {region} の値は、AKS クラスターがデプロイされている場所と一致します。 値 {uuid} は、不変であるクラスターごとにランダムに生成される guid である OIDC キーを表します。

検出ドキュメントを取得する

検出ドキュメントを取得するには、URL https://(OIDC issuer URL).well-known/openid-configuration をコピーしてブラウザーで開きます。

出力は次のようになります。

{
  "issuer": "https://eastus.oic.prod-aks.azure.com/00000000-0000-0000-0000-000000000000/00000000-0000-0000-0000-000000000000/",
  "jwks_uri": "https://eastus.oic.prod-aks.azure.com/00000000-0000-0000-0000-000000000000/00000000-0000-0000-0000-000000000000/openid/v1/jwks",
  "response_types_supported": [
    "id_token"
  ],
  "subject_types_supported": [
    "public"
  ],
  "id_token_signing_alg_values_supported": [
    "RS256"
  ]
}

JWK セット ドキュメントを取得する

JWK セット ドキュメントを取得するには、検出ドキュメントから jwks_uri をコピーし、ブラウザーのアドレス バーに貼り付けます。

出力は次のようになります。

{
  "keys": [
    {
      "use": "sig",
      "kty": "RSA",
      "kid": "xxx",
      "alg": "RS256",
      "n": "xxxx",
      "e": "AQAB"
    },
    {
      "use": "sig",
      "kty": "RSA",
      "kid": "xxx",
      "alg": "RS256",
      "n": "xxxx",
      "e": "AQAB"
    }
  ]
}

キーのローテーション中、検出ドキュメントには他のキーが 1 つあります。

次のステップ