11.2. トークンベースの認証の有効化
Microsoft Azure OpenShift Container Platform クラスターをインストールした後、Microsoft Entra Workload ID を有効にして短期認証情報を使用できます。
11.2.1. Cloud Credential Operator ユーティリティーの設定
					クラスターの外部からクラウド認証情報を作成および管理するように既存のクラスターを設定するには、Cloud Credential Operator ユーティリティー (ccoctl) バイナリーを抽出して準備します。
				
						ccoctl ユーティリティーは、Linux 環境で実行する必要がある Linux バイナリーです。
					
前提条件
- クラスター管理者のアクセスを持つ OpenShift Container Platform アカウントを使用できる。
- 
							OpenShift CLI (oc) がインストールされている。
手順
- 次のコマンドを実行して、OpenShift Container Platform リリースイメージの変数を設定します。 - RELEASE_IMAGE=$(oc get clusterversion -o jsonpath={..desired.image})- $ RELEASE_IMAGE=$(oc get clusterversion -o jsonpath={..desired.image})- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 以下のコマンドを実行して、OpenShift Container Platform リリースイメージから CCO コンテナーイメージを取得します。 - CCO_IMAGE=$(oc adm release info --image-for='cloud-credential-operator' $RELEASE_IMAGE -a ~/.pull-secret) - $ CCO_IMAGE=$(oc adm release info --image-for='cloud-credential-operator' $RELEASE_IMAGE -a ~/.pull-secret)- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注記- $RELEASE_IMAGEのアーキテクチャーが、- ccoctlツールを使用する環境のアーキテクチャーと一致していることを確認してください。
- 以下のコマンドを実行して、OpenShift Container Platform リリースイメージ内の CCO コンテナーイメージから - ccoctlバイナリーを抽出します。- oc image extract $CCO_IMAGE \ --file="/usr/bin/ccoctl.<rhel_version>" \ -a ~/.pull-secret - $ oc image extract $CCO_IMAGE \ --file="/usr/bin/ccoctl.<rhel_version>" \- 1 - -a ~/.pull-secret- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- <rhel_version>には、ホストが使用する Red Hat Enterprise Linux (RHEL) のバージョンに対応する値を指定します。値が指定されていない場合は、デフォルトで- ccoctl.rhel8が使用されます。次の値が有効です。- 
											rhel8: RHEL 8 を使用するホストの場合はこの値を指定します。
- 
											rhel9: RHEL 9 を使用するホストの場合はこの値を指定します。
 
- 
											
 
- 次のコマンドを実行して、権限を変更して - ccoctlを実行可能にします。- chmod 775 ccoctl.<rhel_version> - $ chmod 775 ccoctl.<rhel_version>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
検証
- ccoctlが使用できることを確認するには、help ファイルを表示します。コマンドを実行するときは、相対ファイル名を使用します。以下に例を示します。- ./ccoctl.rhel9 - $ ./ccoctl.rhel9- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
11.2.2. 既存のクラスターで Microsoft Entra Workload ID を有効にする
インストール中に Microsoft Azure OpenShift Container Platform クラスターを Microsoft Entra Workload ID を使用するように設定しなかった場合は、既存のクラスターでこの認証方法を有効にすることができます。
既存のクラスターで Workload ID を有効にするプロセスは、サービスの停止を伴い、かなりの時間がかかります。続行する前に、次の考慮事項を確認してください。
- 次の手順を読み、必ず時間の要件を理解してご承知おきください。正確な所要時間は個々のクラスターによって異なりますが、少なくとも 1 時間かかる可能性があります。
- このプロセス中に、すべてのサービスアカウントを更新し、クラスター上のすべての Pod を再起動する必要があります。これらのアクションはワークロードの停止を伴います。この影響を軽減するには、これらのサービスを一時的に停止し、クラスターの準備ができたときに再デプロイすることができます。
- このプロセスを開始した後は、完了するまでクラスターの更新を試みないでください。更新がトリガーされると、既存のクラスターで Workload ID を有効にするプロセスが失敗します。
前提条件
- Microsoft Azure に OpenShift Container Platform クラスターをインストールした。
- 
							cluster-admin権限を持つアカウントを使用してクラスターにアクセスできる。
- 
							OpenShift CLI (oc) がインストールされている。
- 
							Cloud Credential Operator ユーティリティー (ccoctl) バイナリーを展開して準備した。
- 
							Azure CLI (az) を使用して Azure アカウントにアクセスできる。
手順
- 
							ccoctlユーティリティーが生成するマニフェストの出力ディレクトリーを作成します。この手順では、./output_dirを例として使用します。
- 次のコマンドを実行して、クラスターのサービスアカウントの公開署名鍵を出力ディレクトリーに抽出します。 - oc get configmap \ --namespace openshift-kube-apiserver bound-sa-token-signing-certs \ --output 'go-template={{index .data "service-account-001.pub"}}' > ./output_dir/serviceaccount-signer.public- $ oc get configmap \ --namespace openshift-kube-apiserver bound-sa-token-signing-certs \ --output 'go-template={{index .data "service-account-001.pub"}}' > ./output_dir/serviceaccount-signer.public- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- この手順では、例としてserviceaccount-signer.publicという名前のファイルを使用します。
 
- 抽出したサービスアカウント公開署名鍵を使用して、次のコマンドを実行し、OpenID Connect (OIDC) 発行者と、OIDC 設定ファイルを含む Azure Blob ストレージコンテナーを作成します。 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、Azure pod identity webhook の設定ファイルが作成されたことを確認します。 - ll ./output_dir/manifests - $ ll ./output_dir/manifests- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - total 8 -rw-------. 1 cloud-user cloud-user 193 May 22 02:29 azure-ad-pod-identity-webhook-config.yaml -rw-------. 1 cloud-user cloud-user 165 May 22 02:29 cluster-authentication-02-config.yaml - total 8 -rw-------. 1 cloud-user cloud-user 193 May 22 02:29 azure-ad-pod-identity-webhook-config.yaml- 1 - -rw-------. 1 cloud-user cloud-user 165 May 22 02:29 cluster-authentication-02-config.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- ファイルazure-ad-pod-identity-webhook-config.yamlには、Azure pod identity webhook 設定が含まれています。
 
- 次のコマンドを実行して、出力ディレクトリーに生成されたマニフェストの OIDC 発行者 URL を使用して - OIDC_ISSUER_URL変数を設定します。- OIDC_ISSUER_URL=`awk '/serviceAccountIssuer/ { print $2 }' ./output_dir/manifests/cluster-authentication-02-config.yaml`- $ OIDC_ISSUER_URL=`awk '/serviceAccountIssuer/ { print $2 }' ./output_dir/manifests/cluster-authentication-02-config.yaml`- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、クラスターの - authentication設定の- spec.serviceAccountIssuerパラメーターを更新します。- oc patch authentication cluster \ --type=merge \ -p "{\"spec\":{\"serviceAccountIssuer\":\"${OIDC_ISSUER_URL}\"}}"- $ oc patch authentication cluster \ --type=merge \ -p "{\"spec\":{\"serviceAccountIssuer\":\"${OIDC_ISSUER_URL}\"}}"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、設定の更新の進行状況を監視します。 - oc adm wait-for-stable-cluster - $ oc adm wait-for-stable-cluster- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - このプロセスには 15 分以上かかる場合があります。次の出力は、プロセスが完了したことを示します。 - All clusteroperators are stable - All clusteroperators are stable- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、クラスター内のすべての Pod を再起動します。 - oc adm reboot-machine-config-pool mcp/worker mcp/master - $ oc adm reboot-machine-config-pool mcp/worker mcp/master- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - Pod を再起動すると、 - serviceAccountIssuerフィールドが更新され、サービスアカウントの公開署名鍵が更新されます。
- 次のコマンドを実行して、再起動と更新のプロセスを監視します。 - oc adm wait-for-node-reboot nodes --all - $ oc adm wait-for-node-reboot nodes --all- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - このプロセスには 15 分以上かかる場合があります。次の出力は、プロセスが完了したことを示します。 - All nodes rebooted - All nodes rebooted- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、Cloud Credential Operator の - spec.credentialsModeパラメーターを- Manualに更新します。- oc patch cloudcredential cluster \ --type=merge \ --patch '{"spec":{"credentialsMode":"Manual"}}'- $ oc patch cloudcredential cluster \ --type=merge \ --patch '{"spec":{"credentialsMode":"Manual"}}'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 以下のコマンドを実行して、OpenShift Container Platform リリースイメージから - CredentialsRequestオブジェクトのリストを抽出します。- oc adm release extract \ --credentials-requests \ --included \ --to <path_to_directory_for_credentials_requests> \ --registry-config ~/.pull-secret - $ oc adm release extract \ --credentials-requests \ --included \ --to <path_to_directory_for_credentials_requests> \ --registry-config ~/.pull-secret- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注記- このコマンドの実行には少し時間がかかる場合があります。 
- 次のコマンドを実行して、Azure リソースグループ名を使用して - AZURE_INSTALL_RG変数を設定します。- AZURE_INSTALL_RG=`oc get infrastructure cluster -o jsonpath --template '{ .status.platformStatus.azure.resourceGroupName }'`- $ AZURE_INSTALL_RG=`oc get infrastructure cluster -o jsonpath --template '{ .status.platformStatus.azure.resourceGroupName }'`- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、 - ccoctlユーティリティーを使用してすべての- CredentialsRequestオブジェクトのマネージド ID を作成します。注記- 次のコマンドでは、使用可能なすべてのオプションは表示されません。特定のユースケースで必要となる可能性のあるものを含め、すべてのオプションのリストを表示するには、 - $ ccoctl azure create-managed-identities --helpを実行してください。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、Workload ID の Azure pod identity webhook 設定を適用します。 - oc apply -f ./output_dir/manifests/azure-ad-pod-identity-webhook-config.yaml - $ oc apply -f ./output_dir/manifests/azure-ad-pod-identity-webhook-config.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、 - ccoctlユーティリティーによって生成されたシークレットを適用します。- find ./output_dir/manifests -iname "openshift*yaml" -print0 | xargs -I {} -0 -t oc replace -f {}- $ find ./output_dir/manifests -iname "openshift*yaml" -print0 | xargs -I {} -0 -t oc replace -f {}- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - このプロセスには数分の時間がかかる可能性があります。 
- 次のコマンドを実行して、クラスター内のすべての Pod を再起動します。 - oc adm reboot-machine-config-pool mcp/worker mcp/master - $ oc adm reboot-machine-config-pool mcp/worker mcp/master- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - Pod を再起動すると、 - serviceAccountIssuerフィールドが更新され、サービスアカウントの公開署名鍵が更新されます。
- 次のコマンドを実行して、再起動と更新のプロセスを監視します。 - oc adm wait-for-node-reboot nodes --all - $ oc adm wait-for-node-reboot nodes --all- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - このプロセスには 15 分以上かかる場合があります。次の出力は、プロセスが完了したことを示します。 - All nodes rebooted - All nodes rebooted- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、設定の更新の進行状況を監視します。 - oc adm wait-for-stable-cluster - $ oc adm wait-for-stable-cluster- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - このプロセスには 15 分以上かかる場合があります。次の出力は、プロセスが完了したことを示します。 - All clusteroperators are stable - All clusteroperators are stable- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- オプション: 次のコマンドを実行して、Azure の root 認証情報シークレットを削除します。 - oc delete secret -n kube-system azure-credentials - $ oc delete secret -n kube-system azure-credentials- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
11.2.3. クラスターが短期認証情報を使用していることを確認する
クラスター内の Cloud Credential Operator (CCO) 設定やその他の値で、クラスターが個々のコンポーネントに対して短期的なセキュリティー認証情報を使用していることを確認できます。
前提条件
- 
							Cloud Credential Operator ユーティリティー (ccoctl) を使用して OpenShift Container Platform クラスターをデプロイし、短期認証情報を実装した。
- 
							OpenShift CLI (oc) がインストールされている。
- 
							cluster-admin権限を持つユーザーとしてログインしている。
手順
- 次のコマンドを実行して、CCO が手動モードで動作するように設定されていることを確認します。 - oc get cloudcredentials cluster \ -o=jsonpath={.spec.credentialsMode}- $ oc get cloudcredentials cluster \ -o=jsonpath={.spec.credentialsMode}- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 次の出力は、CCO が手動モードで動作していることを示しています。 - 出力例 - Manual - Manual- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、クラスターに - root認証情報がないことを確認します。- oc get secrets \ -n kube-system <secret_name> - $ oc get secrets \ -n kube-system <secret_name>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - <secret_name>は、クラウドプロバイダーのルートシークレットの名前です。- Expand - プラットフォーム - シークレット名 - Amazon Web Services (AWS) - aws-creds- Microsoft Azure - azure-credentials- Google Cloud Platform (GCP) - gcp-credentials- エラーは、ルートシークレットがクラスター上に存在しないことを確認します。 - AWS クラスターの出力例 - Error from server (NotFound): secrets "aws-creds" not found - Error from server (NotFound): secrets "aws-creds" not found- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、コンポーネントが個々のコンポーネントに対して短期セキュリティー認証情報を使用していることを確認します。 - oc get authentication cluster \ -o jsonpath \ --template='{ .spec.serviceAccountIssuer }'- $ oc get authentication cluster \ -o jsonpath \ --template='{ .spec.serviceAccountIssuer }'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - このコマンドは、クラスター - Authenticationオブジェクトの- .spec.serviceAccountIssuerパラメーターの値を表示します。クラウドプロバイダーに関連付けられた URL の出力は、クラスターがクラスターの外部から作成および管理される短期認証情報を使用して手動モードを使用していることを示します。
- Azure クラスター: 次のコマンドを実行して、コンポーネントがシークレットマニフェストで指定された Azure クライアント ID を想定していることを確認します。 - oc get secrets \ -n openshift-image-registry installer-cloud-credentials \ -o jsonpath='{.data}'- $ oc get secrets \ -n openshift-image-registry installer-cloud-credentials \ -o jsonpath='{.data}'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力に - azure_client_idフィールドと- azure_federated_token_fileフィールドが含まれている場合は、コンポーネントが Azure クライアント ID を想定しています。
- Azure クラスター: 次のコマンドを実行して、pod identity webhook を実行していることを確認します。 - oc get pods \ -n openshift-cloud-credential-operator - $ oc get pods \ -n openshift-cloud-credential-operator- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - NAME READY STATUS RESTARTS AGE cloud-credential-operator-59cf744f78-r8pbq 2/2 Running 2 71m pod-identity-webhook-548f977b4c-859lz 1/1 Running 1 70m - NAME READY STATUS RESTARTS AGE cloud-credential-operator-59cf744f78-r8pbq 2/2 Running 2 71m pod-identity-webhook-548f977b4c-859lz 1/1 Running 1 70m- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow