第9章 Operator のインストールおよびアップグレードについてのポリシーの作成
Operator の実行には幅広い権限が必要になる可能性があり、必要な権限はバージョン間で異なる場合があります。Operator Lifecycle Manager (OLM) は、cluster-admin
権限で実行されます。デフォルトで、Operator の作成者は ClusterServiceVersion (CSV) で任意のパーミッションのセットを指定でき、OLM はこれを Operator に付与します。
クラスター管理者は、Operator がクラスタースコープの権限を実行できず、ユーザーが OLM を使用して権限をエスカレートできないようにするよう対策を取る必要があります。これを制限する方法として、クラスター管理者は Operator をクラスターに追加される前に監査する必要があります。また、クラスター管理者には、サービスアカウントを使用した Operator のインストールまたはアップグレード時に許可されるアクションを判別し、制限するための各種ツールが提供されます。
OperatorGroup を、その権限のセットが付与されたサービスアカウントセットに関連付けることにより、クラスター管理者は Operator にポリシーを設定して、それらが RBAC ルールを使用して事前に決定された境界内でのみ動作するようにできます。Operator は、それらのルールによって明示的に許可されていないことはいずれも実行できません。
クラスター管理者以外のユーザーによるこの自己完結型の、スコープが制限された Operator のインストールによって、より多くのユーザーがさらに多くの Operator Framework ツールを利用でき、Operator によるアプリケーションのビルドのエクスペリエンスが強化されます。
9.1. Operator インストールポリシーについて
OLM を使用すると、クラスター管理者は OperatorGroup に関連付けられたすべての Operator がデプロイされ、サービスアカウントに付与される権限に基づいてデプロイされ、実行されるように OperatorGroup のサービスアカウントを指定できます。
APIService
および CustomResourceDefinition
リソースは、cluster-admin
ロールを使用して OLM によって常に作成されます。OperatorGroup に関連付けられたサービスアカウントには、これらのリソースを作成するための権限を付与できません。
指定したサービスアカウントがインストールまたはアップグレードされる Operator についての適切なパーミッションを持たない場合、便利なコンテキスト情報がそれぞれのリソースのステータスに追加されます。これにより、管理者が問題のトラブルシューティングおよび解決が容易になります。
この OperatorGroup に関連付けられる Operator は、指定されたサービスアカウントに付与されるパーミッションに制限されます。Operator がサービスアカウントの範囲外のパーミッションを要求する場合、インストールは適切なエラーを出して失敗します。
9.1.1. インストールシナリオ
Operator をクラスターでインストールまたはアップグレードできるかどうかを決定する際に、OLM は以下のシナリオを検討します。
- クラスター管理者は新規の OperatorGroup を作成し、サービスアカウントを指定します。この OperatorGroup に関連付けられるすべての Operator がサービスアカウントに付与される権限に基づいてインストールされ、実行されます。
- クラスター管理者は新規の OperatorGroup を作成し、サービスアカウントを指定しません。OpenShift Container Platform は後方互換性を維持します。そのため、デフォルト動作はそのまま残り、Operator のインストールおよびアップグレードは許可されます。
- サービスアカウントを指定しない既存の OperatorGroup の場合、デフォルトの動作は残り、Operator のインストールおよびアップグレードは許可されます。
- クラスター管理者は既存の OperatorGroup を更新し、サービスアカウントを指定します。OLM により、既存の Operator は現在の権限で継続して実行されます。このような既存 Operator がアップグレードされる場合、これは再インストールされ、新規 Operator のようにサービスアカウントに付与される権限に基づいて実行されます。
- OperatorGroup で指定されるサービスアカウントは、パーミッションの追加または削除によって変更されるか、または既存のサービスアカウントは新しいサービスアカウントに切り替わります。既存の Operator がアップグレードされる場合、これは再インストールされ、新規 Operator のように更新されたサービスアカウントに付与される権限に基づいて実行されます。
- クラスター管理者は、サービスアカウントを OperatorGroup から削除します。デフォルトの動作は残り、Operator のインストールおよびアップグレードは許可されます。
9.1.2. インストールワークフロー
OperatorGroup がサービスアカウントに関連付けられ、Operator がインストールまたはアップグレードされると、OLM は以下のワークフローを使用します。
- 指定された Subscription オブジェクトは OLM によって選択されます。
- OLM はこの Subscription に関連する OperatorGroup をフェッチします。
- OLM は OperatorGroup にサービスアカウントが指定されていることを判別します。
- OLM はサービスアカウントにスコープが設定されたクライアントを作成し、スコープ設定されたクライアントを使用して Operator をインストールします。これにより、Operator で要求されるパーミッションは常に OperatorGroup のそのサービスアカウントのパーミッションに制限されるようになります。
- OLM は CSV で指定されたパーミッションセットを使用して新規サービスアカウントを作成し、これを Operator に割り当てます。Operator は割り当てられたサービスアカウントで実行されます。