第19章 クラウドプロバイダーの認証情報の管理
19.1. Cloud Credential Operator について
Cloud Credential Operator (CCO) は、クラウドプロバイダーの認証情報をカスタムリソース定義 (CRD) として管理します。CCO は CredentialsRequest
カスタムリソース (CR) で同期し、OpenShift Container Platform コンポーネントが、クラスターの実行に必要な特定のパーミッションと共にクラウドプロバイダーの認証情報を要求できるようにします。
install-config.yaml
ファイルで credentialsMode
パラメーターに異なる値を設定すると、CCO は複数の異なるモードで動作するように設定できます。モードが指定されていない場合や、credentialsMode
パラメーターが空の文字列 (""
) に設定されている場合、CCO はデフォルトモードで動作します。
19.1.1. モード
install-config.yaml
ファイルに credentialsMode
パラメーターの異なる値を設定することで、CCO を mint、passthrough、または manual モードで動作するように設定できます。これらのオプションにより、CCO がクラウド認証情報を使用してクラスターで CredentialsRequest
CR を処理し、CCO を組織のセキュリティー要件に対応するように設定する方法において透明性と柔軟性が提供されます。すべてのクラウドプロバイダーですべての CCO モードがサポートされている訳ではありません。
- Mint: mint モードでは、CCO は提供される管理レベルのクラウド認証情報を使用して、必要となる特定のパーミッションのみでクラスター内のコンポーネントの新規の認証情報を作成します。
- Passthrough: passthrough モードでは、CCO はクラウド認証情報を要求するコンポーネントに、指定されたクラウド認証情報を渡します。
- コンポーネントの長期認証情報を使用する手動モード: 手動モードでは、CCO の代わりに長期クラウド認証情報を管理できます。
-
コンポーネントの短期認証情報を使用した手動モード: 一部のプロバイダーでは、インストール中に CCO ユーティリティー (
ccoctl
) を使用して、個々のコンポーネントに短期認証情報を実装できます。これらの認証情報は、OpenShift Container Platform クラスターの外部で作成および管理されます。
クラウドプロバイダー | Mint | Passthrough | 長期認証情報を含むマニュアル | 短期認証情報を含むマニュアル |
---|---|---|---|---|
Alibaba Cloud | X [1] | |||
Amazon Web Services (AWS) | X | X | X | X |
Global Microsoft Azure | X | X | X | |
Microsoft Azure Stack Hub | X | |||
Google Cloud Platform (GCP) | X | X | X | X |
IBM Cloud® | X [1] | |||
Nutanix | X [1] | |||
Red Hat OpenStack Platform (RHOSP) | X | |||
VMware vSphere | X |
-
このプラットフォームは、インストール中に
ccoctl
ユーティリティーを使用して、長期認証情報を設定します。
19.1.2. Cloud Credential Operator モードの決定
複数のモードでの CCO の使用をサポートするプラットフォームの場合、Web コンソールまたは CLI を使用して、CCO がどのモードを使用するように設定されているかを判断できます。
図19.1 CCO 設定の決定
19.1.2.1. Web コンソールを使用した Cloud Credential Operator モードの判別
Cloud Credential Operator (CCO) がどのモードを使用するように設定されているかは、Web コンソールを使用して判別できます。
複数の CCO モードをサポートするのは、Amazon Web Services (AWS)、グローバル Microsoft Azure、および Google Cloud Platform (GCP) クラスターのみです。
前提条件
- クラスター管理者パーミッションを持つ OpenShift Container Platform アカウントにアクセスできる。
手順
-
cluster-admin
ロールを持つユーザーとして OpenShift Container Platform Web コンソールにログインします。 -
Administration
Cluster Settings に移動します。 - Cluster Settings ページで、Configuration タブを選択します。
- Configuration resource で CloudCredential を選択します。
- CloudCredential details ページで、YAML タブを選択します。
YAML ブロックで、
spec.credentialsMode
の値を確認します。次の値が可能ですが、すべてのプラットフォームですべてがサポートされているわけではありません。-
''
: CCO はデフォルトモードで動作しています。この設定では、CCO は、インストール中に提供されたクレデンシャルに応じて、ミントモードまたはパススルーモードで動作します。 -
Mint
: CCO はミントモードで動作しています。 -
Passthrough
: CCO はパススルーモードで動作しています。 -
Manual
: CCO は手動モードで動作します。
重要spec.credentialsMode
が''
、Mint
、またはManual
である AWS、GCP、またはグローバル Microsoft Azure クラスターの特定の設定を判断するには、さらに調査する必要があります。AWS および GCP クラスターは、ルートシークレットが削除されたミントモードの使用をサポートします。
手動モードを使用する AWS、GCP、またはグローバル Microsoft Azure クラスターは、AWS STS、GCP Workload Identity、または Microsoft Entra Workload ID を使用してクラスターの外部からクラウド認証情報を作成および管理するように設定されている場合があります。クラスター
Authentication
オブジェクトを調べることで、クラスターがこの戦略を使用しているかどうかを判断できます。-
デフォルト (
''
) のみを使用する AWS または GCP クラスター: クラスターがミントモードまたはパススルーモードで動作しているかどうかを判断するには、クラスタールートシークレットのアノテーションを調べます。Workloads
Secrets に移動し、クラウドプロバイダーのルートシークレットを探します。 注記Project ドロップダウンが All Projects に設定されていることを確認します。
プラットフォーム シークレット名 AWS
aws-creds
GCP
gcp-credentials
クラスターが使用している CCO モードを表示するには、Annotations で
1 annotation
をクリックし、value フィールドを確認します。以下の値が可能です。-
Mint
: CCO はミントモードで動作しています。 -
Passthrough
: CCO はパススルーモードで動作しています。
クラスターが mint モードを使用している場合、クラスターがルートシークレットなしで動作しているかどうかを判断することもできます。
-
mint モードのみを使用する AWS または GCP クラスター: クラスターがルートシークレットなしで動作しているかどうかを判断するには、Workloads
Secrets に移動し、クラウドプロバイダーのルートシークレットを探します。 注記Project ドロップダウンが All Projects に設定されていることを確認します。
プラットフォーム シークレット名 AWS
aws-creds
GCP
gcp-credentials
- これらの値のいずれかが表示される場合、クラスターはルートシークレットが存在するミントモードまたはパススルーモードを使用しています。
- これらの値が表示されない場合、クラスターはルートシークレットが削除されたミントモードで CCO を使用しています。
手動モードのみを使用する AWS、GCP、または global Microsoft Azure クラスター: クラスターがクラスターの外部からクラウド認証情報を作成および管理するように設定されているかどうかを判断するには、クラスター
Authentication
オブジェクトの YAML 値を確認する必要があります。-
Administration
Cluster Settings に移動します。 - Cluster Settings ページで、Configuration タブを選択します。
- Configuration resource で Authentication を選択します。
- Authentication details ページで、YAML タブを選択します。
YAML ブロックで、
.spec.serviceAccountIssuer
パラメーターの値を確認します。-
クラウドプロバイダーに関連付けられた URL が含まれる値は、CCO がコンポーネントの短期認証情報を使用して手動モードを使用していることを示します。このクラスターは、クラスターの外からクラウド認証情報を作成および管理するために
ccoctl
ユーティリティーを使用して設定されています。 -
空の値 (
''
) は、クラスターが手動モードで CCO を使用しているが、ccoctl
ユーティリティーを使用して設定されていないことを示します。
-
クラウドプロバイダーに関連付けられた URL が含まれる値は、CCO がコンポーネントの短期認証情報を使用して手動モードを使用していることを示します。このクラスターは、クラスターの外からクラウド認証情報を作成および管理するために
-
Administration
19.1.2.2. CLI を使用した Cloud Credential Operator モードの判別
CLI を使用して、Cloud Credential Operator (CCO) が使用するように設定されているモードを判別できます。
複数の CCO モードをサポートするのは、Amazon Web Services (AWS)、グローバル Microsoft Azure、および Google Cloud Platform (GCP) クラスターのみです。
前提条件
- クラスター管理者パーミッションを持つ OpenShift Container Platform アカウントにアクセスできる。
-
OpenShift CLI (
oc
) がインストールされている。
手順
-
cluster-admin
ロールを持つユーザーとしてクラスターのoc
にログインします。 CCO が使用するように設定されているモードを確認するには、次のコマンドを入力します。
$ oc get cloudcredentials cluster \ -o=jsonpath={.spec.credentialsMode}
すべてのプラットフォームですべてがサポートされているわけではありませんが、次の出力値が可能です。
-
''
: CCO はデフォルトモードで動作しています。この設定では、CCO は、インストール中に提供されたクレデンシャルに応じて、ミントモードまたはパススルーモードで動作します。 -
Mint
: CCO はミントモードで動作しています。 -
Passthrough
: CCO はパススルーモードで動作しています。 -
Manual
: CCO は手動モードで動作します。
重要spec.credentialsMode
が''
、Mint
、またはManual
である AWS、GCP、またはグローバル Microsoft Azure クラスターの特定の設定を判断するには、さらに調査する必要があります。AWS および GCP クラスターは、ルートシークレットが削除されたミントモードの使用をサポートします。
手動モードを使用する AWS、GCP、またはグローバル Microsoft Azure クラスターは、AWS STS、GCP Workload Identity、または Microsoft Entra Workload ID を使用してクラスターの外部からクラウド認証情報を作成および管理するように設定されている場合があります。クラスター
Authentication
オブジェクトを調べることで、クラスターがこの戦略を使用しているかどうかを判断できます。-
デフォルト (
''
) のみを使用する AWS または GCP クラスター: クラスターがミントモードまたはパススルーモードで動作しているかどうかを判断するには、次のコマンドを実行します。$ oc get secret <secret_name> \ -n kube-system \ -o jsonpath \ --template '{ .metadata.annotations }'
<secret_name>
は、AWS の場合はaws-creds
、GCP の場合はgcp-credentials
です。このコマンドは、クラスタールートシークレットオブジェクトの
.metadata.annotations
パラメーターの値を表示します。以下の出力値を使用できます。-
Mint
: CCO はミントモードで動作しています。 -
Passthrough
: CCO はパススルーモードで動作しています。
クラスターが mint モードを使用している場合、クラスターがルートシークレットなしで動作しているかどうかを判断することもできます。
-
mint モードのみを使用する AWS または GCP クラスター: クラスターがルートシークレットなしで動作しているかどうかを判断するには、次のコマンドを実行します。
$ oc get secret <secret_name> \ -n=kube-system
<secret_name>
は、AWS の場合はaws-creds
、GCP の場合はgcp-credentials
です。ルートシークレットが存在する場合、このコマンドの出力はシークレットに関する情報を返します。エラーは、ルートシークレットがクラスターに存在しないことを示します。
手動モードのみを使用する AWS、GCP、またはグローバル Microsoft Azure クラスター: クラスターの外部からクラウド認証情報を作成および管理するようにクラスターが設定されているかどうかを確認するには、次のコマンドを実行します。
$ oc get authentication cluster \ -o jsonpath \ --template='{ .spec.serviceAccountIssuer }'
このコマンドは、クラスター
Authentication
オブジェクトの.spec.serviceAccountIssuer
パラメーターの値を表示します。-
クラウドプロバイダーに関連付けられた URL の出力は、CCO がコンポーネントの短期認証情報を使用して手動モードを使用していることを示します。このクラスターは、クラスターの外からクラウド認証情報を作成および管理するために
ccoctl
ユーティリティーを使用して設定されています。 -
空の出力は、クラスターが手動モードで CCO を使用しているが、
ccoctl
ユーティリティーを使用して設定されていないことを示します。
-
クラウドプロバイダーに関連付けられた URL の出力は、CCO がコンポーネントの短期認証情報を使用して手動モードを使用していることを示します。このクラスターは、クラスターの外からクラウド認証情報を作成および管理するために
19.1.3. デフォルト動作
複数のモードがサポートされるプラットフォーム (AWS、Azure、および GCP) の場合、CCO がデフォルトモードで動作する際に、これは指定される認証情報を動的にチェックし、CredentialsRequest
CR を処理するのに十分なモードを判別します。
デフォルトで、CCO は推奨される操作モードの mint モードに十分な認証情報があるかどうかを判別し、これらの認証情報を使用してクラスター内のコンポーネントの適切な認証情報を作成します。mint モードに十分な認証情報がない場合は、passthrough モードに十分な認証情報があるかどうかを判別します。passthrough モードに十分な認証情報がない場合、CCO は CredentialsRequest
CR を適切に処理できません。
インストール時に提供された認証情報が不十分であると判別される場合、インストールは失敗します。AWS の場合、インストールプログラムはプロセスの早い段階で失敗し、必要な権限が不足していることが示されます。他のプロバイダーは、エラーが発生するまでエラーの原因に関する具体的な情報を提供しない場合があります。
認証情報が正常なインストールの後に変更され、CCO が新規の認証情報が不十分であると判別する場合に、CCO は新規の CredentialsRequest
CR に条件を追加し、認証情報が不十分であるためにそれらを処理できないことを示唆します。
不十分な認証情報に関する問題を解決するために、適切なパーミッションで認証情報を指定します。エラーがインストール時に発生した場合は、再度インストールを試行します。新規の CredentialsRequest
CR 関連の問題は、CCO が再び CR の処理を試行するのを待機します。代わりに、クラウドプロバイダーでサポートされている別の CCO モードを使用するようにクラスターを設定できます。