19.2. mint モードの使用
Mint モードは、Amazon Web Services (AWS) と Google Cloud Platform (GCP) でサポートされています。
Mint モードは、サポートされているプラットフォームのデフォルトモードです。このモードでは、Cloud Credential Operator (CCO) は提供される管理者レベルのクラウド認証情報を使用して、必要となる特定のパーミッションのみでクラスター内のコンポーネントの新規の認証情報を作成します。
CCO を mint モードで使用するクラスターの場合、管理者レベルの認証情報は kube-system
namespace に保存されます。CCO は、admin
認証情報を使用してクラスター内の CredentialsRequest
オブジェクトを処理し、制限されたアクセス許可を持つコンポーネントのユーザーを作成します。
mint モードでは、各クラスターコンポーネントには、必要な特定のアクセス許可のみが与えられます。クラウド認証情報の調整は自動的かつ継続的に行われるため、コンポーネントは追加の認証情報や権限を必要とするアクションを実行できます。
たとえば、マイナーバージョンのクラスター更新 (OpenShift Container Platform 4.16 から 4.17 への更新など) には、クラスターコンポーネントの更新された CredentialsRequest
リソースが含まれる場合があります。mint モードで動作する CCO は、admin
認証情報を使用して CredentialsRequest
リソースを処理し、更新された認証要件を満たすために制限された権限を持つユーザーを作成します。
19.2.1. mint モードのパーミッション要件 リンクのコピーリンクがクリップボードにコピーされました!
mint モードで CCO を使用する場合、指定する認証情報が OpenShift Container Platform を実行し、インストールしているクラウドの各種要件を満たしていることを確認してください。指定される認証情報が mint モードで不十分な場合、CCO は IAM ユーザーを作成できません。
19.2.1.1. Amazon Web Services (AWS) パーミッション リンクのコピーリンクがクリップボードにコピーされました!
AWS で mint モードに指定する認証情報には以下のパーミッションが必要です。
-
iam:CreateAccessKey
-
iam:CreateUser
-
iam:DeleteAccessKey
-
iam:DeleteUser
-
iam:DeleteUserPolicy
-
iam:GetUser
-
iam:GetUserPolicy
-
iam:ListAccessKeys
-
iam:PutUserPolicy
-
iam:TagUser
-
iam:SimulatePrincipalPolicy
19.2.1.2. Google Cloud Platform (GCP) パーミッション リンクのコピーリンクがクリップボードにコピーされました!
GCP の mint モードに指定する認証情報には以下のパーミッションが必要です。
-
resourcemanager.projects.get
-
serviceusage.services.list
-
iam.serviceAccountKeys.create
-
iam.serviceAccountKeys.delete
-
iam.serviceAccounts.create
-
iam.serviceAccounts.delete
-
iam.serviceAccounts.get
-
iam.roles.get
-
resourcemanager.projects.getIamPolicy
-
resourcemanager.projects.setIamPolicy
19.2.2. 管理者の認証情報のルートシークレット形式 リンクのコピーリンクがクリップボードにコピーされました!
各クラウドプロバイダーは、kube-system
namespace の認証情報ルートシークレットを使用します。これは、すべての認証情報要求を満たし、それぞれのシークレットを作成するために使用されます。これは、mint モード で新規の認証情報を作成するか、passthrough モード で認証情報 root シークレットをコピーして実行します。
シークレットの形式はクラウドごとに異なり、それぞれの CredentialsRequest
シークレットにも使用されます。
Amazon Web Services (AWS) シークレット形式
Google Cloud Platform (GCP) シークレット形式
19.2.3. 管理者レベルの認証情報の削除またはローテーション機能を持つ mint モード リンクのコピーリンクがクリップボードにコピーされました!
現時点で、このモードは AWS および GCP でのみサポートされます。
このモードでは、ユーザーは通常の mint モードと同様に管理者レベルの認証情報を使用して OpenShift Container Platform をインストールします。ただし、このプロセスはクラスターのインストール後の管理者レベルの認証情報シークレットを削除します。
管理者は、Cloud Credential Operator に読み取り専用の認証情報について独自の要求を行わせることができます。これにより、すべての CredentialsRequest
オブジェクトに必要なパーミッションがあることの確認が可能になります。そのため、いずれかの変更が必要にならない限り、管理者レベルの認証情報は必要になりません。関連付けられた認証情報が削除された後に、必要な場合は、これは基礎となるクラウドで破棄するか、非アクティブにできます。
z-stream 以外のアップグレードの前に、認証情報のシークレットを管理者レベルの認証情報と共に元に戻す必要があります。認証情報が存在しない場合は、アップグレードがブロックされる可能性があります。
管理者レベルの認証情報はクラスターに永続的に保存されません。
これらの手順を実行するには、短い期間にクラスターでの管理者レベルの認証情報が必要になります。また、アップグレードごとに管理者レベルの認証情報を使用してシークレットを手動で再インストールする必要があります。
19.2.3.1. クラウドプロバイダーの認証情報の手動によるローテーション リンクのコピーリンクがクリップボードにコピーされました!
クラウドプロバイダーの認証情報が何らかの理由で変更される場合、クラウドプロバイダーの認証情報の管理に Cloud Credential Operator (CCO) が使用するシークレットを手動で更新する必要があります。
クラウド認証情報をローテーションするプロセスは、CCO を使用するように設定されているモードによって変わります。mint モードを使用しているクラスターの認証情報をローテーションした後に、削除された認証情報で作成されたコンポーネントの認証情報は手動で削除する必要があります。
前提条件
クラスターは、使用している CCO モードでのクラウド認証情報の手動ローテーションをサポートするプラットフォームにインストールされている。
- mint モードについては、Amazon Web Services (AWS) および Google Cloud Platform (GCP) がサポートされます。
- クラウドプロバイダーとのインターフェイスに使用される認証情報を変更している。
- 新規認証情報には、モードの CCO がクラスターで使用されるように設定するのに十分なパーミッションがある。
手順
-
Web コンソールの Administrator パースペクティブで、Workloads
Secrets に移動します。 Secrets ページの表で、クラウドプロバイダーのルートシークレットを見つけます。
Expand プラットフォーム シークレット名 AWS
aws-creds
GCP
gcp-credentials
-
シークレットと同じ行にある Options メニュー
をクリックし、Edit Secret を選択します。
- Value フィールドの内容を記録します。この情報を使用して、認証情報の更新後に値が異なることを確認できます。
- Value フィールドのテキストをクラウドプロバイダーの新規の認証情報で更新し、Save をクリックします。
個々の
CredentialsRequest
オブジェクトによって参照される各コンポーネントシークレットを削除します。-
cluster-admin
ロールを持つユーザーとして OpenShift Container Platform CLI にログインします。 参照されたすべてのコンポーネントシークレットの名前および namespace を取得します。
oc -n openshift-cloud-credential-operator get CredentialsRequest \ -o json | jq -r '.items[] | select (.spec.providerSpec.kind=="<provider_spec>") | .spec.secretRef'
$ oc -n openshift-cloud-credential-operator get CredentialsRequest \ -o json | jq -r '.items[] | select (.spec.providerSpec.kind=="<provider_spec>") | .spec.secretRef'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここで、
<provider_spec>
はクラウドプロバイダーの対応する値になります。-
AWS:
AWSProviderSpec
-
GCP:
GCPProviderSpec
AWS の部分的なサンプル出力
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
AWS:
参照されるコンポーネントの各シークレットを削除します。
oc delete secret <secret_name> \ -n <secret_namespace>
$ oc delete secret <secret_name> \
1 -n <secret_namespace>
2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS シークレットの削除例
oc delete secret ebs-cloud-credentials -n openshift-cluster-csi-drivers
$ oc delete secret ebs-cloud-credentials -n openshift-cluster-csi-drivers
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プロバイダーコンソールから認証情報を手動で削除する必要はありません。参照されるコンポーネントのシークレットを削除すると、CCO はプラットフォームから既存の認証情報を削除し、新規の認証情報を作成します。
-
検証
認証情報が変更されたことを確認するには、以下を実行します。
-
Web コンソールの Administrator パースペクティブで、Workloads
Secrets に移動します。 - Value フィールドの内容が変更されていることを確認します。
19.2.3.2. クラウドプロバイダーの認証情報の削除 リンクのコピーリンクがクリップボードにコピーされました!
mint モードの Cloud Credential Operator (CCO) を使用するクラスターの場合、管理者レベルの認証情報が kube-system
namespace に保存されます。CCO は、admin
認証情報を使用してクラスター内の CredentialsRequest
オブジェクトを処理し、制限された権限を持つコンポーネントのユーザーを作成します。
mint モードの CCO を使用して OpenShift Container Platform クラスターをインストールした後、クラスターの kube-system
namespace から管理者レベルの認証情報シークレットを削除できます。CCO が管理者レベルの認証情報を必要とするのは、マイナークラスターバージョンの更新など、新しいまたは変更された CredentialsRequest
カスタムリソースの調整が必要な変更を行うときだけです。
マイナーバージョンのクラスター更新 (たとえば、OpenShift Container Platform 4.16 から 4.17 への更新) を実行する前に、管理者レベルの認証情報を使用して認証情報シークレットを復元する必要があります。認証情報が存在しない場合は、更新がブロックされる可能性があります。
前提条件
- クラスターが、CCO からのクラウド認証情報の削除をサポートするプラットフォームにインストールされている。サポート対象プラットフォームは AWS および GCP。
手順
-
Web コンソールの Administrator パースペクティブで、Workloads
Secrets に移動します。 Secrets ページの表で、クラウドプロバイダーのルートシークレットを見つけます。
Expand プラットフォーム シークレット名 AWS
aws-creds
GCP
gcp-credentials
-
シークレットと同じ行にある Options メニュー
をクリックし、Delete Secret を選択します。