適用対象: ✔️ AKS 自動 ✔️ AKS Standard
この記事では、Azure Kubernetes Service (AKS) クラスターの OpenID Connect (OIDC) 発行者を作成および管理する方法について説明します。 OIDC 発行者を使用すると、AKS クラスターを Microsoft Entra ID などの ID プロバイダーと統合できるため、クラスター内で実行されているアプリケーションに対してシングル サインオン (SSO) 機能を安全に認証して提供できます。
ほとんどの運用ワークロードでは、AKS Automatic が推奨される既定の AKS エクスペリエンスです。 AKS Automatic は既定で運用の準備が整っており、構成済みのセキュリティ機能として OIDC 発行者が含まれています。 AKS Standard では、OIDC 発行者の動作は Kubernetes のバージョンとクラスターの状態に依存し、必要に応じて手動で有効にすることができます。
AKS Automatic の詳細については、「Azure Kubernetes Service (AKS) Automatic とは」を参照してください。
AKS Automatic および AKS Standard の OIDC 発行者
両方の AKS クラスター モードで OIDC 発行者がサポートされますが、セットアップは異なります。
- AKS Automatic: OIDC 発行元は事前構成されています。
- AKS Standard: OIDC 発行者は、バージョンと既に構成されているかどうかに応じて、明示的に有効にする必要がある場合があります。
ほとんどの運用シナリオでは、AKS Automatic から始めて、運用対応の既定値を使用し、運用オーバーヘッドを削減します。
AKS の OpenID Connect (OIDC) について
OpenID Connect (OIDC) は、Microsoft Entra IDによって発行された別の認証プロトコルとして使用するために OAuth 2.0 承認プロトコルを拡張します。 OIDC を使用すると、ID トークンと呼ばれるセキュリティ トークンを使用して、Azure Kubernetes Service (AKS) クラスター上の OAuth 対応アプリケーション間でシングル サインオン (SSO) を有効にすることができます。 AKS クラスターで OIDC 発行者を有効にすることができます。これにより、Microsoft Entra ID (または別のクラウド プロバイダーの ID およびアクセス管理プラットフォーム) で API サーバーの公開署名キーを検出できます。
前提条件
プラットフォームの要件:
- Azure CLI バージョン 2.42.0 以降 (
az --versionでバージョンを確認し、必要に応じて Azure CLI をインストールまたはアップグレードしてください)。 - Kubernetes バージョン 1.22 以降。
バージョン固有の動作 (AKS Standard):
- OIDC 発行者は、Kubernetes バージョン 1.34 以降で新しく作成された AKS クラスターに対して既定で有効になっています (
--enable-oidc-issuerフラグは必要ありません)。 - 既存のクラスターの場合、OIDC は Kubernetes のバージョンに関係なく既定では有効になりません。手動で有効にする必要があります。
- Kubernetes バージョン 1.30.0 以降では、トークンの自動拡張機能が無効 (
--service-account-extend-token-expiration=false)。 - OIDC 発行者が以前に構成されていない場合は、1.34 より前のバージョンの Kubernetes で手動で有効にする必要があります。
- Kubernetes バージョン 1.30 以降のクラスターには、投影されたサービス アカウント トークンが必要です。
重要な考慮事項:
- 一度有効にすると、OIDC 発行者を無効にすることはできません。
- 既存のクラスターで OIDC 発行者を有効にするには、API サーバーの再起動 (短時間のダウンタイム) が必要です。
- トークンの最大有効期間は 24 時間 (1 日) です。
OIDC 発行者を使用して AKS クラスターを作成する
AKS 自動(本番環境の推奨される既定値)
AKS Automatic では、OIDC 発行者が事前構成されています。 個別の OIDC 発行者有効化手順は必要ありません。
クイック スタートに従って AKS 自動クラスターを作成します。
AKS Standard
az aks create パラメーターを指定して --enable-oidc-issuer コマンドを使用して AKS Standard クラスターを作成します。
# Set environment variables
RESOURCE_GROUP=<your-resource-group-name>
CLUSTER_NAME=<your-aks-cluster-name>
# Create the AKS Standard cluster with OIDC issuer enabled
az aks create \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--node-count 1 \
--enable-oidc-issuer \
--generate-ssh-keys
注
Kubernetes バージョン 1.34 以降で作成された AKS Standard クラスターでは、OIDC 発行者は新しいクラスターに対して既定で有効になっています。
既存の AKS Standard クラスターで OIDC 発行者を有効にする
az aks update コマンドと --enable-oidc-issuer パラメーターを使用して、既存の AKS Standard クラスターで OIDC 発行者を有効にします。
# Set environment variables
RESOURCE_GROUP=<your-resource-group-name>
CLUSTER_NAME=<your-aks-cluster-name>
# Enable the OIDC issuer on the existing AKS Standard cluster
az aks update \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--enable-oidc-issuer
OIDC 発行者 URL を取得する
az aks show コマンドを使用して OIDC 発行者 URL を取得します。
# Set environment variables
RESOURCE_GROUP=<your-resource-group-name>
CLUSTER_NAME=<your-aks-cluster-name>
# Get the OIDC issuer URL
az aks show \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--query "oidcIssuerProfile.issuerUrl" \
-o tsv
既定では、発行者はベース URL https://{region}.oic.prod-aks.azure.comを使用します。 {region} の値は、AKS クラスターをデプロイした場所と一致します。
OIDC 署名キーをローテーションする
重要
OIDC 署名キーをローテーションする場合は、次の考慮事項に注意してください。
- キーのローテーションの直後に古いキーを無効にする場合は、OIDC キーを 2 回ローテーションし、投影されたサービス アカウント トークンを使用してポッドを再起動する必要があります。
- 古いキーと新しいキーは、ローテーション後 24 時間有効です。
- トークンは、24 時間ごとに手動で更新する必要があります (自動的に更新Azure ID クライアント ライブラリを使用している場合を除く)。
az aks oidc-issuer コマンドを使用して OIDC キーを回転します。
# Set environment variables
RESOURCE_GROUP=<your-resource-group-name>
CLUSTER_NAME=<your-aks-cluster-name>
# Rotate the OIDC signing keys
az aks oidc-issuer rotate-signing-keys \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP
検出ドキュメントを取得する
ブラウザーで OIDC 発行者の URL に移動し、URL に /.well-known/openid-configuration を追加します。
例: https://eastus.oic.prod-aks.azure.com/.well-known/openid-configuration
出力は、次の出力例のようになります。
{
"issuer": "https://eastus.oic.prod-aks.azure.com/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0/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 セット ドキュメントを取得する
ブラウザーで、探索ドキュメントからjwks_uriに移動します。
例えば: https://eastus.oic.prod-aks.azure.com/00000000-0000-0000-0000-000000000000/00000000-0000-0000-0000-000000000000/openid/v1/jwks
出力は、次の出力例のようになります。
{
"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 つ含まれます。