第6章 Red Hat Operator

6.1. Cloud Credential Operator

目的

Cloud Credential Operator (CCO) は、クラウドプロバイダーの認証情報を Kubernetes カスタムリソース定義 (CRD) として管理します。CCO は credentialsRequest カスタムリソース (CR) で同期し、OpenShift Container Platform コンポーネントが、クラスターの実行に必要な特定のパーミッションと共にクラウドプロバイダーの認証情報を要求できるようにします。

install-config.yaml ファイルで credentialsMode パラメーターに異なる値を設定すると、CCO は複数の異なるモードで動作するように設定できます。モードが指定されていない場合や、credentialsMode パラメーターが空の文字列 ("") に設定されている場合、CCO はデフォルトモードで動作します。

デフォルトの動作

複数のモードがサポートされるプラットフォーム (AWS、Azure、および GCP) の場合、CCO がデフォルトモードで動作する際に、これは指定される認証情報を動的にチェックし、credentialsRequest CR を処理するのに十分なモードを判別します。

デフォルトで、CCO は推奨される操作モードの mint モードに十分な認証情報があるかどうかを判別し、これらの認証情報を使用してクラスター内のコンポーネントの適切な認証情報を作成します。mint モードに十分な認証情報がない場合は、passthrough モードに十分な認証情報があるかどうかを判別します。passthrough モードに十分な認証情報がない場合、CCO は credentialsRequest CR を適切に処理できません。

注記

CCO は、Azure 認証情報が passthrough モードに十分であるかどうかを検証できません。Azure 認証情報が mint モードに不十分な場合、CCO は認証情報が passthrough モードには十分であることを前提として動作します。

インストール時に提供された認証情報が不十分であると判別される場合、インストールは失敗します。AWS では、インストーラーはプロセスの早期の段階で失敗し、どの必須パーミッションが欠落しているかを示します。他のプロバイダーは、エラーが発生するまでエラーの原因についての具体的な情報を提供しない場合があります。

認証情報が正常なインストールの後に変更され、CCO が新規の認証情報が不十分であると判別する場合に、CCO は新規の credentialsRequest CR に条件を追加し、認証情報が不十分であるためにそれらを処理できないことを示唆します。

不十分な認証情報についての問題を解決するために、適切なパーミッションで認証情報を指定します。エラーがインストール時に発生した場合は、再度インストールを試行します。新規の credentialsRequest CR 関連の問題については、CCO が再び CR の処理を試行するのを待機します。別の方法として、AWS、Azure、または GCP の IAM を手動で作成できます。詳細は、AWS、Azure、または GCP のインストールコンテンツの IAM の手動作成 についてのセクションを参照してください。

モード

install-config.yaml ファイルに credentialsMode パラメーターの異なる値を設定することで、CCO を mintpassthrough、または manual モードで動作するように設定できます。これらのオプションにより、CCO がクラウド認証情報を使用してクラスターで credentialsRequest CR を処理し、CCO を組織のセキュリティー要件に対応するように設定する方法において透明性と柔軟性が提供されます。すべてのクラウドプロバイダーですべての CCO モードがサポートされているわけではありません。

Mint モード

mint モードは AWS、Azure、および GCP でサポートされます。

mint モードは、CCO が使用するデフォルトかつ推奨されるベストプラクティスの設定です。このモードでは、CCO は提供される管理レベルのクラウド認証情報を使用してクラスターを実行します。

インストール後に認証情報が削除されない場合、これは CCO によって保存され、クラスター内のコンポーネントの credentialsRequest CR を処理し、必要な特定のパーミッションのみでそれぞれの新規の認証情報を作成するために使用されます。mint モードでクラウド認証情報を継続的に調整することで、アップグレードなどの追加の認証情報またはパーミッションを必要とするアクションを続行できます。

mint モードがクラスターの kube-system namespace に管理者レベルの認証情報を保存する要件は、すべての組織のセキュリティー要件に適さない可能性があります。

mint モードで CCO を使用する場合、指定する認証情報が OpenShift Container Platform を実行し、インストールしているクラウドの各種要件を満たしていることを確認してください。指定される認証情報が mint モードで不十分な場合、CCO は IAM ユーザーを作成できません。

表6.1 mint モードの認証情報の要件

クラウドパーミッション

AWS

  • iam:CreateAccessKey
  • iam:CreateUser
  • iam:DeleteAccessKey
  • iam:DeleteUser
  • iam:DeleteUserPolicy
  • iam:GetUser
  • iam:GetUserPolicy
  • iam:ListAccessKeys
  • iam:PutUserPolicy
  • iam:TagUser
  • iam:SimulatePrincipalPolicy

Azure

Azure アカウントの設定 コンテンツの サービスプリンシパルの作成 のセクションで指定されるパーミッションを持つサービスプリンシパル

GCP

  • 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

管理者レベルの認証情報の削除またはローテーション機能を持つ mint モード

管理者レベルの認証情報の削除またはローテーション機能を持つ mint モードは、OpenShift Container Platform バージョン 4.4 以降で AWS でサポートされます。

このオプションでは、インストール時に管理者レベルの認証情報が必要ですが、認証情報はクラスターに永続的に保存されないため、有効期間を長くする必要はありません。

OpenShift Container Platform を mint モードでインストールした後に、管理者レベルの認証情報の Secret をクラスターから削除できます。Secret を削除する場合、CCO は、すべての credentialsRequest CR に必要なパーミッションがあるかどうかを確認することを可能にする、以前に作成された読み取り専用の認証情報を使用します。削除された後に、必要な場合は、関連付けられた認証情報は基礎となるクラウドで破棄できます。

管理者レベルの認証情報を必要とするものがアップグレード時などに変更される必要がない限り、管理者レベルの認証情報を必要はありません。それぞれのアップグレードの前に、認証情報の Secret を管理者レベルの認証情報と共に元に戻す必要があります。認証情報が存在しない場合は、アップグレードがブロックされる可能性があります。

passthrough モード

passthrough モードは、AWS、Azure、GCP、Red Hat OpenStack Platform (RHOSP)、Red Hat Virtualization (RHV)、および VMware vSphere でサポートされています。

passthrough モードでは、CCO はクラウド認証情報を要求するコンポーネントに、指定されたクラウド認証情報を渡します。認証情報には、インストールを実行し、クラスター内のコンポーネントで必要な操作を完了するためのパーミッションが必要ですが、認証情報を新たに作成する必要はありません。CCO は、passthrough モードで、追加の制限されたスコープの認証情報の作成を試行しません。

passthrough モードのパーミッション要件

passthrough モードで CCO を使用する場合、指定する認証情報が OpenShift Container Platform を実行し、インストールしているクラウドの各種要件を満たしていることを確認してください。CCO が credentialsRequest CR を作成するコンポーネントに渡す指定された認証情報が不十分な場合に、そのコンポーネントは、パーミッションがない API の呼び出しを試行する際にエラーを報告します。

AWS、Azure、または GCP の passthrough モードに指定する認証情報には、実行し、インストールしている OpenShift Container Platform のバージョンで必要なすべての credentialsRequest CR に必要なすべての必須パーミッションがなければなりません。クラウドプロバイダーに必要な credentialsRequest CR を見つけるには、AWS、Azure、または GCP のインストールコンテンツの IAM の手動作成 についてのセクションを参照してください。

OpenShift Container Platform クラスターを Red Hat OpenStack Platform (RHOSP) にインストールするには、CCO では member ユーザーロールのパーミッションと共に認証情報が必要になります。

OpenShift Container Platform クラスターを Red Hat Virtualization (RHV) にインストールするには、CCO には、以下の権限と共に認証情報が必要になります。

  • DiskOperator
  • DiskCreator
  • UserTemplateBasedVm
  • TemplateOwner
  • TemplateCreator
  • OpenShift Container Platform デプロイメントにターゲットが設定される特定クラスターの ClusterAdmin

OpenShift Container Platform クラスターを VMware vSphere にインストールするには、CCO には以下の vSphere 権限と共に認証情報が必要になります。

表6.2 必要な vSphere 権限

カテゴリー権限

データストア

領域の割り当て

フォルダー

フォルダーの作成フォルダーの削除

vSphere タグ

すべての権限

ネットワーク

ネットワークの割り当て

リソース

仮想マシンのリソースプールへの割り当て

プロファイル駆動型ストレージ

すべての権限

vApp

すべての権限

仮想マシン

すべての権限

passthrough モードの認証情報のメンテナーンス

credentialsRequest CR がクラスターのアップグレード時に変更される場合、各種要件を満たすために passthrough モードの認証情報を手動で更新する必要があります。アップグレード時の認証情報の問題を回避するには、アップグレードの前に、新規バージョンの OpenShift Container Platform のリリースイメージで credentialsRequest CR を確認します。クラウドプロバイダーに必要な credentialsRequest CR を見つけるには、AWS、Azure、または GCP のインストールコンテンツの IAM の手動作成 についてのセクションを参照してください。

インストール後のパーミッションの縮小

passthrough モードを使用する場合、各コンポーネントには他のすべてのコンポーネントによって使用されるパーミッションと同じパーミッションがあります。インストール後にパーミッションを縮小しない場合、すべてのコンポーネントにはインストーラーの実行に必要な幅広いパーミッションが付与されます。

インストール後に、認証情報のパーミッションを、クラスターの実行に必要なパーミッションに制限できます。これは、使用している OpenShift Container Platform バージョンのリリースイメージの credentialsRequest CR で定義されます。

AWS、Azure、または GCP に必要な credentialsRequest CR を見つけ、CCO が使用するパーミッションを変更する方法については、AWS、Azure、または GCP のインストールコンテンツの IAM の手動作成 についてのセクションを参照してください。

手動モード

手動モードは AWS でサポートされます。

手動モードでは、ユーザーは CCO の代わりにクラウド認証情報を管理します。このモードを使用するには、実行またはインストールしている OpenShift Container Platform バージョンのリリースイメージの credentialsRequest CR を検査し、基礎となるクラウドプロバイダーで対応する認証情報を作成し、クラスターのクラウドプロバイダーのすべての credentialsRequest CR に対応するために Kubernetes Secret を正しい namespace に作成する必要があります。

手動モードを使用すると、クラスターに管理者レベルの認証情報を保存する必要なく、各クラスターコンポーネントに必要なパーミッションのみを指定できます。このモードでは、AWS パブリック IAM エンドポイントへの接続も必要ありません。ただし、各アップグレードについて、パーミッションを新規リリースイメージを使用して手動で調整する必要があります。

手動モードを使用するように AWS を設定する方法についての詳細は、AWS の IAM の手動作成 について参照してください。

無効にされた CCO

無効にされた CCO は Azure および GCP でサポートされます。

Azure または GCP の認証情報を手動で管理するには、CCO を無効にする必要があります。CCO を無効にする場合には、手動モードで CCO を実行する場合と同様の設定やメンテナーンスの要件が多数適用されますが、異なるプロセスでこれを実行できます。詳細は、Azure または GCP のインストールコンテンツの IAM の手動作成についてのセクションを参照してください。

プロジェクト

openshift-cloud-credential-operator

CRD

  • credentialsrequests.cloudcredential.openshift.io

    • スコープ: Namespaced
    • CR: credentialsrequest
    • 検証: Yes

設定オブジェクト

必要な設定はありません。