アクセス制御とユーザー管理


Red Hat OpenShift GitOps 1.16

ユーザー認証とユーザーおよび namespace のアクセス制御の設定

Red Hat OpenShift Documentation Team

概要

このドキュメントでは、ユーザーレベルのアクセスとリソース要求を変更および管理する手順を説明します。また、クラスター内の複数のユーザー、権限、Argo CD リソース、およびインスタンスを管理するために、ロールベースのアクセス制御およびシングルサインオン認証プロバイダーを設定する方法も説明します。

第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) セクションを設定します。

手順

  1. argocd CR を編集します。

    $ oc edit argocd [argocd-instance-name] -n [namespace]

    出力

    metadata
    ...
    ...
      rbac:
        policy: 'g, rbacsystem:cluster-admins, role:admin'
        scopes: '[groups]'

  2. 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: true 1
    # ...
    1
    openShiftOAuth プロパティーは、値が true に設定されている場合に、組み込み OpenShift Container Platform OAuth サーバーを自動的に設定するように Operator をトリガーします。

2.1.1. 特定のロールへのユーザーのマッピング

Argo CD は、直接の ClusterRoleBinding ロールがある場合は、ユーザーを特定のロールにマップできません。OpenShift 経由で SSO の role:admin としてロールを手動で変更できます。

手順

  1. cluster-admins という名前のグループを作成します。

    $ oc adm groups new cluster-admins
  2. ユーザーをグループに追加します。

    $ oc adm groups add-users cluster-admins USER
  3. cluster-admin ClusterRole をグループに適用します。

    $ 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 がクラスターにインストールされている。
  • DeploymentConfig API はクラスターで使用できます。詳細は、「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 を設定するには、以下の手順に従います。

  1. Argo CD カスタムリソース (CR) から .spec.sso.dex パラメーターを削除して Dex 設定を削除し、CR を保存します。

    dex:
        openShiftOAuth: true
        resources:
          limits:
            cpu:
            memory:
          requests:
            cpu:
            memory:
  2. Argo CD CR で provider パラメーターの値を keycloak に設定します。
  3. 次のいずれかの手順を実行して、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 フィールドをカスタマイズして、ArgoCD CR に keycloak プロバイダーのルート名を追加します。この機能を使用すると、複数の Ingress Controller シャーディング 間で着信トラフィックの負荷を分散するなど、高度なルーティングのユースケースをサポートできます。

      • 次の YAML の例を使用して、ArgoCD CR に host パラメーターを追加します。

        ArgoCD CR の例

        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: true

        1
        <resource_name>ArgoCD CR の名前に置き換えます。
        2
        <hostname> をホストキーの名前に置き換えます (例: sso.test.example.com)。
      • ArgoCD CR を作成するには、次のコマンドを実行します。

        $ oc create -f <argocd_filename>.yaml -n <your-namespace>
      • ArgoCD CR を編集するには、次のコマンドを実行します。

        $ oc edit -f <argocd_filename>.yaml -n <your_namespace>
      • 変更を適用するためにファイルを保存します。
      • ArgoCD CR を適用するには、次のコマンドを実行します。

        $ oc apply -f <argocd_filename>.yaml -n <your_namespace>
      • 次のコマンドを実行して、host 属性が追加されたことを確認します。

        $ oc get route keycloak -n <your_namespace> -o yaml

        出力例

        kind: Route
        metadata:
          name: keycloak 1
          labels:
            application: keycloak
        spec:
          host: sso.test.example.com
        status:
          ingress:
            - host: sso.test.example.com 2

        1
        Pod の名前を指定します。
        2
        ホストキーの名前を指定します。
        注記

        Keycloak インスタンスのインストールおよび実行には、2 - 3 分かかります。

3.3. Keycloak へのログイン

Keycloak コンソールにログインしてアイデンティティーまたはロールを管理し、さまざまなロールに割り当てられた権限を定義します。

前提条件

  • Dex のデフォルト設定は削除されている。
  • Argo CD CR は Keycloak SSO プロバイダーを使用するように設定されている。

手順

  1. ログイン用の 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
  2. 環境変数としてユーザー名とパスワードを保存する Keycloak Pod 名を取得します。

    $ oc -n argocd get pods
    
    NAME                      READY   STATUS           RESTARTS   AGE
    keycloak-1-2sjcl           1/1    Running            0        45m
    1. Keycloak ユーザー名を取得します。

      $ oc -n argocd exec keycloak-1-2sjcl -- "env" | grep SSO_ADMIN_USERNAME
      
      SSO_ADMIN_USERNAME=Cqid54Ih
    2. Keycloak パスワードを取得します。

      $ oc -n argocd exec keycloak-1-2sjcl -- "env" | grep SSO_ADMIN_PASSWORD
      
      SSO_ADMIN_PASSWORD=GVXxHifH
  3. ログインページで、LOG IN VIA KEYCLOAK をクリックします。

    注記

    Keycloak インスタンスの準備ができた後にのみ、LOGIN VIA KEYCLOAK オプションが表示されます。

  4. Login with OpenShift をクリックします。

    注記

    kubeadmin を使用したログインはサポートされていません。

  5. ログインするために OpenShift の認証情報を入力します。
  6. オプション: デフォルトでは、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 で作成した追加の設定はすべて削除されます。

法律上の通知

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.