4.8. クラスター管理者以外のユーザーによる Operator のインストールの許可
クラスター管理者は、Operator グループ を使用して、通常のユーザーが Operator をインストールできるようにすることができます。
クラスタースコープの権限を必要とする Operator は、管理者以外のユーザーが以下のいずれかの権限を持つ名前空間にはインストールしないでください。
-
デフォルトの
編集クラスターロール - サービスアカウントトークンの作成
ワークロードの作成例:
- Pod
- レプリカセット
- デプロイメント
- ジョブ
- Cron ジョブ
- デーモンセット
詳細は、委任された Operator のインストールを監査して保護する (Red Hat ナレッジベース) を参照してください。
4.8.1. Operator インストールポリシーについて リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、Operator Lifecycle Manager (OLM) は cluster-admin 特権で実行され、Operator の作成者がクラスターサービスバージョン (CSV) で指定したすべての権限を付与します。
Operator の作成者はクラスターサービスバージョン (CSV) で任意のパーミッションのセットを指定でき、OLM はこれを Operator に付与します。
Operator がクラスタースコープの権限を取得できず、ユーザーが OLM を使用して権限を昇格できないようにするために、クラスター管理者は Operator をクラスターに追加する前に手動で監査できます。また、クラスター管理者には、サービスアカウントを使用した Operator のインストールまたはアップグレード時に許可されるアクションを判別し、制限するための各種ツールが提供されます。
クラスター管理者は、一連の権限が付与されたサービスアカウントに Operator グループを関連付けることができます。サービスアカウントは、ロールベースのアクセス制御 (RBAC) ルールを使用して、事前に定義された境界内でのみ実行されるように、Operator にポリシーを設定します。その結果、Operator は、それらのルールによって明示的に許可されていないことはいずれも実行できません。
Operator グループを採用することで、十分な権限を持つユーザーは、限られた範囲で Operator をインストールできます。その結果、より多くの Operator Framework ツールをより多くのユーザーが安全に利用できるようになり、Operator を使用してアプリケーションを構築するためのより豊かなエクスペリエンスが提供されます。
Subscription オブジェクトのロールベースのアクセス制御 (RBAC) は、namespace で edit または admin のロールを持つすべてのユーザーに自動的に付与されます。ただし、RBAC は OperatorGroup オブジェクトには存在しません。この不在が、通常のユーザーが Operator をインストールできない理由です。Operator グループを事前にインストールすることで、実質的にインストール権限が付与されます。
Operator グループをサービスアカウントに関連付ける際は、次の点に注意してください。
-
APIServiceおよびCustomResourceDefinitionリソースは、cluster-adminロールを使用して OLM によって常に作成されます。Operator グループに関連付けられたサービスアカウントには、これらのリソースを作成するための権限を付与できません。 - この Operator グループに関連付けられる Operator は、指定されたサービスアカウントに付与されるパーミッションに制限されるようになりました。Operator がサービスアカウントの範囲外のアクセス許可を要求した場合、インストールは適切なエラーで失敗するため、クラスター管理者は問題をトラブルシューティングして解決できます。
4.8.1.1. インストールシナリオ リンクのコピーリンクがクリップボードにコピーされました!
インストールまたは更新操作の成功を予測するには、Operator のインストールまたはアップグレード時に、Operator Lifecycle Manager (OLM) が考慮するシナリオを確認します。
OLM は、Operator のインストールまたはアップグレード時に、以下の Operator グループシナリオを考慮します。
- クラスター管理者は新規の Operator グループプを作成し、サービスアカウントを指定します。この Operator グループに関連付けられるすべての Operator がサービスアカウントに付与される権限に基づいてインストールされ、実行されます。
- クラスター管理者は新規の Operator グループを作成し、サービスアカウントを指定しません。OpenShift Container Platform は後方互換性を維持します。そのため、デフォルト動作はそのまま残り、Operator のインストールおよびアップグレードは許可されます。
- サービスアカウントを指定しない既存の Operator グループの場合、デフォルトの動作は残り、Operator のインストールおよびアップグレードは許可されます。
- クラスター管理者は既存の Operator グループを更新し、サービスアカウントを指定します。OLM により、既存の Operator は現在の権限で継続して実行されます。このような既存 Operator がアップグレードされる場合、これは再インストールされ、新規 Operator のようにサービスアカウントに付与される権限に基づいて実行されます。
- Operator グループで指定されるサービスアカウントは、パーミッションの追加または削除によって変更されるか、既存のサービスアカウントは新しいサービスアカウントに切り替わります。既存の Operator がアップグレードされる場合、これは再インストールされ、新規 Operator のように更新されたサービスアカウントに付与される権限に基づいて実行されます。
- クラスター管理者は、サービスアカウントを Operator グループから削除します。デフォルトの動作は残り、Operator のインストールおよびアップグレードは許可されます。
4.8.1.2. インストールワークフロー リンクのコピーリンクがクリップボードにコピーされました!
インストールまたは更新に関する問題のトラブルシューティングを行うには、Operator Lifecycle Manager (OLM) がインストールプロセス中に従うワークフローを確認してください。
Operator グループがサービスアカウントを指定すると、OLM は以下の手順を実行します。
-
OLM は
Subscriptionオブジェクトを取得します。 - OLM は、サブスクリプションにリンクされている Operator グループを取得します。
- OLM は、Operator グループがサービスアカウントを指定しているか確認します。
- OLM はサービスアカウントにスコープされたクライアントを作成し、それを使用して Operator をインストールすることで、権限がそのサービスアカウントに限定されるようにします。
- OLM は CSV で指定された権限を使用して新規サービスアカウントを作成し、これを Operator に割り当てます。Operator は、この割り当てられたサービスアカウントを使用して実行されます。