アクセス制御とユーザー管理
ユーザー認証とユーザーおよび 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]
$ 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 rbacセクションにpolicy設定を追加し、ユーザーに適用するnameと目的のroleを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
現在、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に設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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 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. .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]」を参照してください。
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 オプション:
spec.sso.keycloakフィールドをカスタマイズして、ArgoCDCR にkeycloakプロバイダーのルート名を追加します。この機能を使用すると、複数の Ingress Controller シャーディング 間で着信トラフィックの負荷を分散するなど、高度なルーティングのユースケースをサポートできます。次の YAML の例を使用して、
ArgoCDCR にhostパラメーターを追加します。ArgoCDCR の例Copy to Clipboard Copied! Toggle word wrap Toggle overflow ArgoCD CRを作成するには、次のコマンドを実行します。oc create -f <argocd_filename>.yaml -n <your-namespace>
$ oc create -f <argocd_filename>.yaml -n <your-namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ArgoCD CRを編集するには、次のコマンドを実行します。oc edit -f <argocd_filename>.yaml -n <your_namespace>
$ oc edit -f <argocd_filename>.yaml -n <your_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を適用するためにファイルを保存します。
ArgoCDCR を適用するには、次のコマンドを実行します。oc apply -f <argocd_filename>.yaml -n <your_namespace>
$ oc apply -f <argocd_filename>.yaml -n <your_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
host属性が追加されたことを確認します。oc get route keycloak -n <your_namespace> -o yaml
$ oc get route keycloak -n <your_namespace> -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
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 レルムで作成された追加の設定は、サーバーの再起動時に削除されます。
3.5. Keycloak リソースリクエスト/制限の変更 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、Keycloak コンテナーはリソース要求と制限付きで作成されます。リソース要求を変更および管理できます。
| リソース | 要求 | 制限 |
|---|---|---|
| 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 によって作成された Keycloak は、Operator によって行われる変更のみを永続化します。Keycloak が再起動すると、管理者が Keycloak で作成した追加の設定はすべて削除されます。