19.2. mint モードの Cloud Credential Operator
mint モードは、OpenShift Container Platform をサポートするプラットフォーム上の OpenShift Container Platform のデフォルトの Cloud Credential Operator (CCO) クレデンシャルモードです。Mint モードは、Amazon Web Services (AWS) および Google Cloud Platform (GCP) クラスターをサポートします。
19.2.1. mint モードの認証情報管理
CCO を mint モードで使用するクラスターの場合、管理者レベルの認証情報は kube-system
namespace に保存されます。CCO は、admin
認証情報を使用してクラスター内の CredentialsRequest
オブジェクトを処理し、制限されたアクセス許可を持つコンポーネントのユーザーを作成します。
mint モードでは、各クラスターコンポーネントには、必要な特定のアクセス許可のみが与えられます。mint モードでクラウド認証情報を自動的に継続的に調整することで、アップグレードなどの追加の認証情報またはパーミッションを必要とするアクションを続行できます。
デフォルトでは、mint モードでは、admin
認証情報をクラスターの kube-system
namespace に保存する必要があります。このアプローチが組織のセキュリティー要件を満たさない場合は、クラスターのインストール後に認証情報を削除 できます。
19.2.1.1. mint モードのパーミッション要件
mint モードで CCO を使用する場合、指定する認証情報が OpenShift Container Platform を実行し、インストールしているクラウドの各種要件を満たしていることを確認してください。指定される認証情報が mint モードで不十分な場合、CCO は IAM ユーザーを作成できません。
Amazon Web Services (AWS) の mint モードに指定する認証情報には、次の権限が必要です。
例19.1 必要な AWS パーミッション
-
iam:CreateAccessKey
-
iam:CreateUser
-
iam:DeleteAccessKey
-
iam:DeleteUser
-
iam:DeleteUserPolicy
-
iam:GetUser
-
iam:GetUserPolicy
-
iam:ListAccessKeys
-
iam:PutUserPolicy
-
iam:TagUser
-
iam:SimulatePrincipalPolicy
Google Cloud Platform (GCP) の mint モードに指定する認証情報には、次の権限が必要です。
例19.2 必要な GCP パーミッション
-
resourcemanager.projects.get
-
serviceusage.services.list
-
iam.serviceAccountKeys.create
-
iam.serviceAccountKeys.delete
-
iam.serviceAccountKeys.list
-
iam.serviceAccounts.create
-
iam.serviceAccounts.delete
-
iam.serviceAccounts.get
-
iam.roles.create
-
iam.roles.get
-
iam.roles.list
-
iam.roles.undelete
-
iam.roles.update
-
resourcemanager.projects.getIamPolicy
-
resourcemanager.projects.setIamPolicy
19.2.1.2. 管理者の認証情報のルートシークレット形式
各クラウドプロバイダーは、kube-system
namespace の認証情報ルートシークレットを使用します。これは、すべての認証情報要求を満たし、それぞれのシークレットを作成するために使用されます。これは、mint モード で新規の認証情報を作成するか、passthrough モード で認証情報 root シークレットをコピーして実行します。
シークレットの形式はクラウドごとに異なり、それぞれの CredentialsRequest
シークレットにも使用されます。
Amazon Web Services (AWS) シークレット形式
apiVersion: v1 kind: Secret metadata: namespace: kube-system name: aws-creds stringData: aws_access_key_id: <base64-encoded_access_key_id> aws_secret_access_key: <base64-encoded_secret_access_key>
Google Cloud Platform (GCP) シークレット形式
apiVersion: v1 kind: Secret metadata: namespace: kube-system name: gcp-credentials stringData: service_account.json: <base64-encoded_service_account>
19.2.2. クラウドプロバイダーの認証情報の維持
クラウドプロバイダーの認証情報が何らかの理由で変更される場合、クラウドプロバイダーの認証情報の管理に Cloud Credential Operator (CCO) が使用するシークレットを手動で更新する必要があります。
クラウド認証情報をローテーションするプロセスは、CCO を使用するように設定されているモードによって変わります。mint モードを使用しているクラスターの認証情報をローテーションした後に、削除された認証情報で作成されたコンポーネントの認証情報は手動で削除する必要があります。
前提条件
クラスターは、使用している CCO モードでのクラウド認証情報の手動ローテーションをサポートするプラットフォームにインストールされている。
- mint モードについては、Amazon Web Services (AWS) および Google Cloud Platform (GCP) がサポートされます。
- クラウドプロバイダーとのインターフェイスに使用される認証情報を変更している。
- 新規認証情報には、モードの CCO がクラスターで使用されるように設定するのに十分なパーミッションがある。
手順
-
Web コンソールの Administrator パースペクティブで、Workloads
Secrets に移動します。 Secrets ページの表で、クラウドプロバイダーのルートシークレットを見つけます。
プラットフォーム シークレット名 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'
ここで、
<provider_spec>
はクラウドプロバイダーの対応する値になります。-
AWS:
AWSProviderSpec
-
GCP:
GCPProviderSpec
AWS の部分的なサンプル出力
{ "name": "ebs-cloud-credentials", "namespace": "openshift-cluster-csi-drivers" } { "name": "cloud-credential-operator-iam-ro-creds", "namespace": "openshift-cloud-credential-operator" }
-
AWS:
参照されるコンポーネントの各シークレットを削除します。
$ oc delete secret <secret_name> \1 -n <secret_namespace> 2
AWS シークレットの削除例
$ oc delete secret ebs-cloud-credentials -n openshift-cluster-csi-drivers
プロバイダーコンソールから認証情報を手動で削除する必要はありません。参照されるコンポーネントのシークレットを削除すると、CCO はプラットフォームから既存の認証情報を削除し、新規の認証情報を作成します。
-
検証
認証情報が変更されたことを確認するには、以下を実行します。
-
Web コンソールの Administrator パースペクティブで、Workloads
Secrets に移動します。 - Value フィールドの内容が変更されていることを確認します。