1.2. namespace スコープのインスタンスにユーザー定義のクラスターロールを指定して、一般的なクラスターロールを設定する
クラスター管理者は、argocd.argoproj.io/managed-by
ラベルを使用して Argo CD に namespace へのアクセス権限を付与すると、Argo CD は namespace-admin
権限を想定します。次に、Red Hat OpenShift GitOps Operator は、次の GitOps コントロールプレーンコンポーネントのすべてのマネージド namespace のロールバインディングを自動的に作成します。
- Argo CD Application Controller
- Argo CD サーバー
- Argo CD ApplicationSet Controller
開発チームなど、管理者以外のユーザーに namespace を提供する場合、namespace-admin
権限を使用してネットワークポリシーなどのオブジェクトを変更できます。これらの namespace に Argo CD インスタンスをインストールすると、開発チームが admin
権限を付与し、割り当てられた権限を間接的に昇格します。これらのロールは高度な特権があり、すべてのリソースを削除できます。予防措置として、Operator が Argo CD Application Controller および Argo CD サーバーコンポーネント用に作成するロールバインディング内のすべてのマネージド namespace に共通のクラスターロールを設定することで、セキュリティー要件を満たすために特定の縮小パーミッションセットを定義できます。
すべてのマネージド namespace に共通のクラスターロールを設定するには、Operator の Subscription
オブジェクト YAML ファイルで CONTROLLER_CLUSTER_ROLE
環境変数および SERVER_CLUSTER_ROLE
環境変数にユーザー定義のクラスターロールを指定します。その結果、デフォルトの admin
ロールを作成する代わりに、Operator は既存のユーザー定義のクラスターロールを使用し、すべてのマネージド namespace のロールバインディングを作成します。
前提条件
- OpenShift Container Platform クラスターに管理者としてログインしている。
- Red Hat OpenShift GitOps Operator が OpenShift Container Platform クラスターにインストールされている。
手順
-
Administrator パースペクティブで、Administration
CustomResourceDefinitions に移動します。 - サブスクリプション CRD を見つけて、クリックして開きます。
- Instances タブを選択し、openshift-gitops-operator サブスクリプションをクリックします。
YAML タブを選択し、カスタマイズを行います。
CONTROLLER_CLUSTER_ROLE
およびSERVER_CLUSTER_ROLE
環境変数のユーザー定義のクラスターロールを指定します。Subscription の例
apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: openshift-gitops-operator namespace: openshift-gitops-operator spec: config: env: - name: CONTROLLER_CLUSTER_ROLE value: gitops-controller-role 1 - name: SERVER_CLUSTER_ROLE value: gitops-server-role 2
または、前述の環境変数を Operator の Deployment
オブジェクト YAML ファイルに直接挿入することもできます。