アクセス制御とユーザー管理
ユーザー認証とユーザーおよび namespace のアクセス制御の設定
概要
第1章 Argo CD RBAC の設定 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、Red Hat SSO (RH SSO) を使用して Argo CD にログインするユーザーは、読み取り専用ユーザーになります。ユーザーレベルのアクセスを変更および管理できます。
1.1. ユーザーレベルのアクセス設定 リンクのコピーリンクがクリップボードにコピーされました!
ユーザーレベルのアクセスを管理および変更するには、Argo CD カスタムリソース (CR) のロールベースのアクセス制御 (RBAC) セクションを設定します。
手順
argocdCR を編集します。oc edit argocd [argocd-instance-name] -n [namespace]
$ oc edit argocd [argocd-instance-name] -n [namespace]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力
Copy to Clipboard Copied! Toggle word wrap Toggle overflow policy設定をrbacセクションに追加し、name、email、およびユーザーのroleを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
現在、RHSSO は Red Hat OpenShift GitOps ユーザーのグループ情報を読み取ることができません。そのため、ユーザーレベルで RBAC を設定します。
1.2. RHSSO リソース要求/制限の変更 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、RHSSO コンテナーがリソース要求および制限と共に作成されます。リソース要求を変更および管理できます。
| リソース | 要求 | 制限 |
|---|---|---|
| CPU | 500 | 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"}} }}]'
$ 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 によって作成された RHSSO は、Operator によって行われる変更のみを永続化します。RHSSO が再起動すると、RHSSO で Admin が作成した追加の設定が削除されます。
第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 の将来のリリースでは、ArgoCD CR の spec.dex パラメーターを使用した Dex の設定は削除される予定です。代わりに .spec.sso パラメーターの使用を検討してください。
2.1. Dex OpenShift OAuth コネクターを有効にするための設定 リンクのコピーリンクがクリップボードにコピーされました!
Dex は、Operator によって作成されるすべての Argo CD インスタンスにデフォルトでインストールされます。Dex は、プラットフォームが提供する OAuth サーバーを確認して、OpenShift 内で定義されたユーザーおよびグループを使用します。Dex の SSO プロバイダーのオプションを設定できます。以下の例は、Dex のプロパティーと設定例を紹介しています。
2.1.1. 特定のロールへのユーザーのマッピング リンクのコピーリンクがクリップボードにコピーされました!
Argo CD は、直接の ClusterRoleBinding ロールがある場合は、ユーザーを特定のロールにマップできません。OpenShift 経由で SSO の role:admin としてロールを手動で変更できます。
手順
cluster-adminsという名前のグループを作成します。oc adm groups new cluster-admins
$ oc adm groups new cluster-adminsCopy to Clipboard Copied! Toggle word wrap Toggle overflow ユーザーをグループに追加します。
oc adm groups add-users cluster-admins USER
$ oc adm groups add-users cluster-admins USERCopy to Clipboard Copied! Toggle word wrap Toggle overflow cluster-adminClusterRoleをグループに適用します。oc adm policy add-cluster-role-to-group cluster-admin cluster-admins
$ oc adm policy add-cluster-role-to-group cluster-admin cluster-adminsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2. Dex の無効化 リンクのコピーリンクがクリップボードにコピーされました!
Dex は、Operator によって作成されるすべての Argo CD インスタンスにデフォルトでインストールされます。.spec.dex パラメーターを設定して Dex を SSO 認証プロバイダーとして使用するように Red Hat OpenShift GitOps を設定できます。
Red Hat OpenShift GitOps v1.6.0 では、DISABLE_DEX は非推奨となり、Red Hat OpenShift GitOps v1.10.0 で削除される予定です。代わりに .spec.sso.dex パラメーターを使用することを検討してください。.spec.sso を使用した Dex の有効化または無効化を参照してください。
手順
Operator の YAML リソースで環境変数
DISABLE_DEXをtrueに設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3. .spec.sso を使用した Dex の有効化または無効化 リンクのコピーリンクがクリップボードにコピーされました!
.spec.sso パラメーターを設定することで、Dex を SSO 認証プロバイダーとして使用するように Red Hat OpenShift GitOps を設定できます。
手順
Dex を有効にするには、Operator の YAML リソースで
.spec.sso.provider: dexパラメーターを設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
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 がクラスターにインストールされます。
- Argo CD がクラスターにインストールされている。
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 を保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Argo CD CR で
providerパラメーターの値をkeycloakに設定します。 次のいずれかの手順を実行して、Keycloak を設定します。
安全な接続のために、次の例に示すように
rootCAパラメーターの値を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Keycloak の TLS 証明書を検証するために使用されるカスタム証明書。
Operator は
.spec.keycloak.rootCAパラメーターの変更を調整し、argocd-cm設定マップの PEM エンコードされたルート証明書でoidc.configパラメーターを更新します。安全でない接続の場合、
rootCAパラメーターの値を空のままにして、以下に示すようにoidc.tls.insecure.skip.verifyパラメーターを使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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
$ 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 NoneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 環境変数としてユーザー名とパスワードを保存する Keycloak Pod 名を取得します。
oc -n argocd get pods NAME READY STATUS RESTARTS AGE keycloak-1-2sjcl 1/1 Running 0 45m
$ oc -n argocd get pods NAME READY STATUS RESTARTS AGE keycloak-1-2sjcl 1/1 Running 0 45mCopy to Clipboard Copied! Toggle word wrap Toggle overflow Keycloak ユーザー名を取得します。
oc -n argocd exec keycloak-1-2sjcl -- "env" | grep SSO_ADMIN_USERNAME SSO_ADMIN_USERNAME=Cqid54Ih
$ oc -n argocd exec keycloak-1-2sjcl -- "env" | grep SSO_ADMIN_USERNAME SSO_ADMIN_USERNAME=Cqid54IhCopy to Clipboard Copied! Toggle word wrap Toggle overflow Keycloak パスワードを取得します。
oc -n argocd exec keycloak-1-2sjcl -- "env" | grep SSO_ADMIN_PASSWORD SSO_ADMIN_PASSWORD=GVXxHifH
$ oc -n argocd exec keycloak-1-2sjcl -- "env" | grep SSO_ADMIN_PASSWORD SSO_ADMIN_PASSWORD=GVXxHifHCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ログインページで、LOG IN VIA KEYCLOAK をクリックします。
注記Keycloak インスタンスの準備ができた後にのみ、LOGIN VIA KEYCLOAK オプションが表示されます。
Login with OpenShift をクリックします。
注記kubeadminを使用したログインはサポートされていません。- ログインするために OpenShift の認証情報を入力します。
オプション: デフォルトでは、Argo CD にログインしているすべてのユーザーが、読み取り専用アクセス権を持っています。
argocd-rbac-cm設定マップを更新して、ユーザーレベルのアクセスを管理できます。policy.csv: <name>, <email>, role:admin
policy.csv: <name>, <email>, role:adminCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4. Keycloak のアンインストール リンクのコピーリンクがクリップボードにコピーされました!
Argo CD カスタムリソース (CR) ファイルから SSO フィールドを削除して、Keycloak リソースおよびそれらの関連設定を削除することができます。SSO フィールドを削除すると、ファイルの値は以下のようになります。
この方法を使用して作成した Keycloak アプリケーションは、現在永続的ではありません。Argo CD Keycloak レルムで作成された追加の設定は、サーバーの再起動時に削除されます。