アクセス制御とユーザー管理
ユーザー認証とユーザーおよび namespace のアクセス制御の設定
概要
第1章 Argo CD RBAC の設定 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、デフォルトの Argo CD インスタンスにログインしている kube:admin ユーザー以外のどのタイプのユーザーも、どのサービスにもアクセスできません。ただし、カスタム Argo CD インスタンスにログインしたユーザーは、デフォルトでは読み取り専用ユーザーです。
Red Hat OpenShift GitOps v1.9.0 以前のバージョンでは、Red Hat SSO (RH SSO) を使用して Argo CD にログインした kube:admin ユーザー以外のすべてのタイプのユーザーは、デフォルトで読み取り専用ユーザーです。
1.1. ユーザーレベルのアクセス設定 リンクのコピーリンクがクリップボードにコピーされました!
ユーザーレベルのアクセスを管理および変更するには、Argo CD カスタムリソース (CR) のロールベースのアクセス制御 (RBAC) セクションを設定します。
手順
argocdCR を編集します。$ oc edit argocd [argocd-instance-name] -n [namespace]出力
metadata ... ... rbac: policy: 'g, rbacsystem:cluster-admins, role:admin' scopes: '[groups]'rbacセクションにpolicy設定を追加し、ユーザーに適用するnameと目的のroleを追加します。metadata ... ... rbac: policy: g, <name>, role:<admin> scopes: '[groups]'
現在、RHSSO は Red Hat OpenShift GitOps ユーザーのグループ情報を読み取ることができません。そのため、ユーザーレベルで RBAC を設定します。
第2章 Dex を使用した Argo CD の SSO の設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift GitOps Operator がインストールされると、Argo CD は admin 権限を持つユーザーを自動的に作成します。複数のユーザーを管理するために、クラスター管理者は Argo CD を使用して、シングルサインオン (SSO) を設定できます。
ArgoCD CR の spec.dex パラメーターは、Red Hat OpenShift GitOps v1.10.0 以降ではサポート対象外になりました。代わりに .spec.sso パラメーターの使用を検討してください。
2.1. Dex OpenShift OAuth コネクターを有効にするための設定 リンクのコピーリンクがクリップボードにコピーされました!
Dex は、Operator によって作成されるすべての Argo CD インスタンスにデフォルトでインストールされます。.spec.sso パラメーターを設定することで、Dex を SSO 認証プロバイダーとして使用するように Red Hat OpenShift GitOps を設定できます。
Dex は、プラットフォームが提供する OAuth サーバーを確認して、OpenShift Container Platform 内で定義されたユーザーおよびグループを使用します。
手順
Dex を有効にするには、Operator の YAML リソースで
.spec.sso.providerパラメーターをdexに設定します。# ... spec: sso: provider: dex dex: openShiftOAuth: true1 # ...- 1
openShiftOAuthプロパティーは、値がtrueに設定されている場合に、組み込み OpenShift Container PlatformOAuthサーバーを自動的に設定するように Operator をトリガーします。
2.1.1. 特定のロールへのユーザーのマッピング リンクのコピーリンクがクリップボードにコピーされました!
Argo CD は、直接の ClusterRoleBinding ロールがある場合は、ユーザーを特定のロールにマップできません。OpenShift 経由で SSO の role:admin としてロールを手動で変更できます。
手順
cluster-adminsという名前のグループを作成します。$ oc adm groups new cluster-adminsユーザーをグループに追加します。
$ oc adm groups add-users cluster-admins USERcluster-adminClusterRoleをグループに適用します。$ oc adm policy add-cluster-role-to-group cluster-admin cluster-admins
2.2. .spec.sso を置き換えて Dex を無効にする リンクのコピーリンクがクリップボードにコピーされました!
-
dex を無効にするには、Argo CD カスタムリソースから
spec.sso要素を削除するか、別の SSO プロバイダーを指定します。
第3章 Keycloak を使用した Argo CD の SSO の設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift GitOps Operator がインストールされると、Argo CD は admin 権限を持つユーザーを自動的に作成します。複数のユーザーを管理するために、クラスター管理者は Argo CD を使用して、シングルサインオン (SSO) を設定できます。
3.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- Red Hat SSO がクラスターにインストールされている。
- Red Hat OpenShift GitOps Operator が OpenShift Container Platform クラスターにインストールされている。
- Argo CD がクラスターにインストールされている。
-
DeploymentConfigAPI はクラスターで使用できます。詳細は、「DeploymentConfig [apps.openshift.io/v1]」を参照してください。 - Red Hat OpenShift GitOps Operator が FIPS モードに設定された OpenShift Container Platform クラスターにデプロイされている場合、Keycloak を使用した Argo CD のシングルサインオン (SSO) 設定はサポートされません。
3.2. Keycloak での新規クライアントの設定 リンクのコピーリンクがクリップボードにコピーされました!
Dex は、Operator によって作成されるすべての Argo CD インスタンスにデフォルトでインストールされます。ただし、Dex 設定を削除し、代わりに Keycloak を追加して OpenShift 認証情報を使用して Argo CD にログインすることができます。Keycloak は Argo CD と OpenShift 間のアイデンティティーブローカーとして機能します。
手順
Keycloak を設定するには、以下の手順に従います。
Argo CD カスタムリソース (CR) から
.spec.sso.dexパラメーターを削除して Dex 設定を削除し、CR を保存します。dex: openShiftOAuth: true resources: limits: cpu: memory: requests: cpu: memory:-
Argo CD CR で
providerパラメーターの値をkeycloakに設定します。 次のいずれかの手順を実行して、Keycloak を設定します。
安全な接続のために、次の例に示すように
rootCAパラメーターの値を設定します。apiVersion: argoproj.io/v1beta1 kind: ArgoCD metadata: name: example-argocd labels: example: basic spec: sso: provider: keycloak keycloak: rootCA: "<PEM-encoded-root-certificate>"1 server: route: enabled: true- 1
- Keycloak の TLS 証明書を検証するために使用されるカスタム証明書。
Operator は
.spec.keycloak.rootCAパラメーターの変更を調整し、argocd-cm設定マップの PEM エンコードされたルート証明書でoidc.configパラメーターを更新します。安全でない接続の場合は、
rootCAパラメーターの値を空のままにして、以下に示すようにoidc.tls.insecure.skip.verifyパラメーターを使用します。apiVersion: argoproj.io/v1beta1 kind: ArgoCD metadata: name: example-argocd labels: example: basic spec: extraConfig: oidc.tls.insecure.skip.verify: "true" sso: provider: keycloak keycloak: rootCA: ""オプション:
spec.sso.keycloakフィールドをカスタマイズして、ArgoCDCR にkeycloakプロバイダーのルート名を追加します。この機能を使用すると、複数の Ingress Controller シャーディング 間で着信トラフィックの負荷を分散するなど、高度なルーティングのユースケースをサポートできます。次の YAML の例を使用して、
ArgoCDCR にhostパラメーターを追加します。ArgoCDCR の例apiVersion: argoproj.io/v1alpha1 kind: ArgoCD metadata: name: <resource_name>1 labels: example: route spec: sso: provider: keycloak keycloak: host: <hostname>2 server: ingress: enabled: true insecure: trueArgoCD CRを作成するには、次のコマンドを実行します。$ oc create -f <argocd_filename>.yaml -n <your-namespace>ArgoCD CRを編集するには、次のコマンドを実行します。$ oc edit -f <argocd_filename>.yaml -n <your_namespace>- 変更を適用するためにファイルを保存します。
ArgoCDCR を適用するには、次のコマンドを実行します。$ oc apply -f <argocd_filename>.yaml -n <your_namespace>次のコマンドを実行して、
host属性が追加されたことを確認します。$ oc get route keycloak -n <your_namespace> -o yaml出力例
kind: Route metadata: name: keycloak1 labels: application: keycloak spec: host: sso.test.example.com status: ingress: - host: sso.test.example.com2 注記Keycloak インスタンスのインストールおよび実行には、2 - 3 分かかります。
3.3. Keycloak へのログイン リンクのコピーリンクがクリップボードにコピーされました!
Keycloak コンソールにログインしてアイデンティティーまたはロールを管理し、さまざまなロールに割り当てられた権限を定義します。
前提条件
- Dex のデフォルト設定は削除されている。
- Argo CD CR は Keycloak SSO プロバイダーを使用するように設定されている。
手順
ログイン用の Keycloak ルート URL を取得します。
$ oc -n argocd get route keycloak NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD keycloak keycloak-default.apps.ci-ln-******.origin-ci-int-aws.dev.**.com keycloak <all> reencrypt None環境変数としてユーザー名とパスワードを保存する Keycloak Pod 名を取得します。
$ oc -n argocd get pods NAME READY STATUS RESTARTS AGE keycloak-1-2sjcl 1/1 Running 0 45mKeycloak ユーザー名を取得します。
$ oc -n argocd exec keycloak-1-2sjcl -- "env" | grep SSO_ADMIN_USERNAME SSO_ADMIN_USERNAME=Cqid54IhKeycloak パスワードを取得します。
$ oc -n argocd exec keycloak-1-2sjcl -- "env" | grep SSO_ADMIN_PASSWORD SSO_ADMIN_PASSWORD=GVXxHifH
ログインページで、LOG IN VIA KEYCLOAK をクリックします。
注記Keycloak インスタンスの準備ができた後にのみ、LOGIN VIA KEYCLOAK オプションが表示されます。
Login with OpenShift をクリックします。
注記kubeadminを使用したログインはサポートされていません。- ログインするために OpenShift の認証情報を入力します。
オプション: デフォルトでは、Argo CD にログインしているすべてのユーザーが、読み取り専用アクセス権を持っています。
argocd-rbac-cm設定マップを更新して、ユーザーレベルのアクセスを管理できます。policy.csv: <name>, <email>, role:admin
3.4. Keycloak のアンインストール リンクのコピーリンクがクリップボードにコピーされました!
Argo CD カスタムリソース (CR) ファイルから SSO フィールドを削除して、Keycloak リソースおよびそれらの関連設定を削除できます。SSO フィールドを削除すると、ファイルの値は以下のようになります。
apiVersion: argoproj.io/v1beta1
kind: ArgoCD
metadata:
name: example-argocd
labels:
example: basic
spec:
server:
route:
enabled: true
この方法を使用して作成した Keycloak アプリケーションは、現在永続的ではありません。Argo CD Keycloak レルムで作成された追加の設定は、サーバーの再起動時に削除されます。
3.5. Keycloak リソースリクエスト/制限の変更 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、Keycloak コンテナーはリソース要求と制限付きで作成されます。リソース要求を変更および管理できます。
| リソース | 要求 | 制限 |
|---|---|---|
| CPU | 500 m | 1000 m |
| メモリー | 512 Mi | 1024 Mi |
手順
- Argo CD カスタムリソース (CR) にパッチを適用する際のデフォルトのリソース要件を変更します。
$ oc -n openshift-gitops patch argocd openshift-gitops --type='json' -p='[{"op": "add", "path": "/spec/sso", "value": {"provider": "keycloak", "resources": {"requests": {"cpu": "512m", "memory": "512Mi"}, "limits": {"cpu": "1024m", "memory": "1024Mi"}} }}]'
Red Hat OpenShift GitOps Operator によって作成された Keycloak は、Operator によって行われる変更のみを永続化します。Keycloak が再起動すると、管理者が Keycloak で作成した追加の設定はすべて削除されます。