このトピックでは、Distributed Cloud Container Platform for Kubernetes (ACK One) GitOps でサポートされているユーザーの種類と、ユーザーに権限を付与する方法について説明します。
ユーザーの種類
ACK One GitOps は、マルチユーザーコラボレーションをサポートしています。管理者は、ユーザーの作成、ユーザーの削除、Argo CD のロールベースアクセスコントロール (RBAC) 権限と Argo CD アプリケーション権限をユーザーに付与できます。ACK One GitOps は、次の種類のユーザーをサポートしています:
ローカルユーザー
ローカルユーザー。管理者はローカルユーザーを作成し、システムが Argo CD API を呼び出して Argo CD アプリケーションとプロジェクトを作成するために自動的に使用される認証トークンを生成できます。チームのメンバー数が限られている場合は、ローカルユーザーを作成できます。ローカルユーザーに権限を付与する方法の詳細については、「ローカルユーザーに権限を付与する」をご参照ください。
Alibaba Cloud アカウント内の RAM ユーザーまたは RAM ロール
RAM ユーザーまたは RAM ロール。Argo CD UI または Argo CD CLI にログインするには、RAM ユーザーを使用することをお勧めします。デフォルトでは、ACK One GitOps は、RAM ユーザーまたは RAM ロールを使用して Argo CD UI または Argo CD CLI にログインする際のシングルサインオン (SSO) をサポートしています。RAM ユーザーに権限を付与する方法の詳細については、「Alibaba Cloud アカウントの RAM ユーザーまたは RAM ロールに権限を付与する」をご参照ください。
ローカルユーザーの作成
前提条件
ACK One コンソール からフリートインスタンスの KubeConfig ファイルを取得し、kubectl を使用してフリートインスタンスに接続していること。
ACK One フリートインスタンスで GitOps が有効になっていること。詳細については、「フリートインスタンスで GitOps を有効にする」をご参照ください。
Argo CD 管理者のパスワードを取得し、それを使用して Argo CD CLI にログインしていること。詳細については、「Argo CD CLI を使用して Argo CD にアクセスする」をご参照ください。
手順
管理者アカウントを使用して、フリートインスタンス上にローカルユーザーを作成します。ローカルユーザーを作成するには、次の手順を実行します:
次のコマンドを実行して、Argo CD の
argocd-cmConfigMap を編集します。kubectl edit cm argocd-cm -n argocdargocd-cmConfigMap で、次のコードに示すようにlocaluser1という名前のローカルユーザーを追加します。data: accounts.localuser1: login,apiKey # ローカルユーザーが Argo CD UI と Argo CD CLI にログインし、apiKey トークンを生成できるようにします。 accounts.localuser1.enabled: "true" # ローカルユーザー localuser1 を作成します。次のコマンドを実行して、ローカルユーザーをクエリします:
argocd account list期待される出力:
NAME ENABLED CAPABILITIES admin true login localuser1 true login,apiKey # ローカルユーザー localuser1。次のコマンドを実行してパスワードを設定し、トークンを生成します:
# パスワードを設定します。 argocd account update-password \ --account localuser1 \ --current-password <admin password> \ --new-password <localuser1-password> # localuser1 のトークンを生成します。 argocd account generate-token --account localuser1 eyJhb......
Argo CD RBAC 権限の設定
Argo CD では、ロールベースアクセスコントロール (RBAC) を設定して、SSO グループまたはローカルユーザーが Argo CD リソースにアクセスするのを制限できます。これを行うには、RBAC ロールを定義し、SSO グループまたはローカルユーザーをそのロールにマッピングします。
ロールの紹介
SSO グループまたはローカルユーザーに権限を付与するには、まずロールを作成し、SSO グループまたはローカルユーザーをそのロールにマッピングする必要があります。
カスタムロールを作成するか、Argo CD で次の事前定義されたロールを使用できます:
role:readonly: このロールは、すべての Argo CD リソースに対する読み取り専用 (get) 権限を付与します。role:admin: このロールは、すべての Argo CD リソースに対する完全な権限を付与します。
ロールに権限を付与するには、argocd-rbac-cm ConfigMap の .data.policy.csv フィールドを次の形式で設定する必要があります:
プロジェクトにないリソースの場合:
p, <role/user/group>, <resource>, <action>, <object>プロジェクト内のリソースの場合:
p, <role/user/group>, <resource>, <action>, <appproject>/<object>
Argo CD は、次のリソースをサポートしています: clusters、projects、applications、applicationsets、repositories、certificates、accounts、gpgkeys、logs、exec、および extensions。
次の操作がサポートされています: get、create、update、delete、sync、override、および action/<api-group>/<Kind>/<action-name>。
sync、override、および action/<api-group>/<Kind>/<action-name> 操作は、applications リソースに対してのみ有効です。
ローカルユーザーに権限を付与する
次のコマンドを実行して、Argo CD の
argocd-rbac-cmConfigMap を編集します。kubectl edit cm argocd-rbac-cm -n argocdargocd-rbac-cmConfigMap で、要件に基づいてローカルユーザーに権限を付与します。次のサンプルコードに例を示します。重要ConfigMap 内の他の設定は変更しないでください。
data: policy.csv: | ## p, role:project-admin, applications, *, */*, allow ## p, role:project-admin, projects, *, *, allow g, "14***01", role:admin # 現在の設定を維持します。 g, localuser1, role:admin # localuser1 を admin ロールにマッピングします。 ## g, localuser1, role:project-admin # localuser1 を project-admin ロールにマッピングします。 scopes: '[uid]' # 現在の設定を維持します。このサンプル ConfigMap を使用すると、次のシナリオで権限を付与できます:
localuser1 を事前定義された admin ロールにマッピングします。これにより、localuser1 はすべての Argo CD リソースに対する完全な権限を持ちます。
localuser1 をカスタムロール project-admin にマッピングします。これにより、project-admin はプロジェクトとアプリケーションに対する完全な権限を持ちます。この設定は、サンプル ConfigMap で注釈が付けられています。
Alibaba Cloud アカウント内の RAM ユーザーまたは RAM ロールに権限を付与する
デフォルトでは、ACK One GitOps は、RAM ユーザーを使用して Argo CD UI または Argo CD CLI にログインする際の SSO をサポートしています。RAM ユーザーを使用して ACK One コンソールにログインした後、ユーザー名とパスワードを再入力することなく、SSO を使用して Argo CD UI または Argo CD CLI にログインできます。
RAM ユーザーが ACK One フリートインスタンスの管理者である場合、ACK One GitOps は自動的にその RAM ユーザーに Argo CD UI または Argo CD CLI の管理者権限を付与します。
RAM ユーザーが一般ユーザーである場合、フリートインスタンスの管理者はその RAM ユーザーに権限を付与する必要があります。次の権限が含まれます:
argocd-rbac-cmで RAM ユーザーまたは RAM ロールに Argo CD RBAC 権限を付与します。Argo CD プロジェクトを使用して、クラスター、リポジトリ、およびアプリケーションに対する RAM ユーザーまたは RAM ロールの権限を管理します。
RAM ユーザーまたは RAM ロールに Argo CD RBAC 権限を付与する
ACK One フリートインスタンスの管理者は、次の手順を実行して権限を設定できます:
フリートの kubeconfig を使用して次のコマンドを実行し、Argo CD の
argocd-rbac-cmConfigMap を編集します。kubectl edit cm argocd-rbac-cm -n argocdargocd-rbac-cmで、RAM ユーザーに権限を付与します。次の例は、RAM ユーザー「27***02」に argocd の admin 権限を付与する方法を示しています。コメントアウトされたセクションは、RAM ユーザー「27***02」に project-admin 権限を付与する方法を示しています。data: policy.csv: | ## p, role:project-admin, applications, *, */*, allow ## p, role:project-admin, projects, *, *, allow g, "14***01", role:admin # 現在の設定を維持します。 g, "27***02", role:admin # RAM ユーザー「27***02」のロールを admin に設定します。 ## g, "27***02", role:project-admin # RAM ユーザー「27***02」を project-admin ロールにマッピングします。 scopes: '[uid]' # 現在の設定を維持します。
RAM ユーザーまたは RAM ロールに Argo CD アプリケーション権限を付与する
各 Argo CD アプリケーションはプロジェクトに属します。Argo CD プロジェクトを使用して、異なる RAM ユーザーまたは RAM ロールに異なるアプリケーション権限を付ಯできます。
複数のチームが Argo CD を使用する場合、アプリケーションを異なる Argo CD プロジェクトに追加できます。Argo CD プロジェクトは、次の特徴も提供します:
Git リポジトリの制限: アプリケーションのデプロイに使用できる Git リポジトリを制御します。
クラスターと名前空間の制限: アプリケーションをデプロイできるクラスターと名前空間を定義し、デプロイメントがチームのリソース割り当てとセキュリティポリシーに準拠していることを保証します。
オブジェクトタイプの制限: RBAC、CRD、DaemonSet、NetworkPolicy など、デプロイできる Kubernetes リソースのタイプを制限し、不要または高リスクなリソースの使用を回避します。
アプリケーションレベルの RBAC: プロジェクトロールを定義することにより、異なる RAM ユーザーまたは RAM ロールに異なるアプリケーション権限を付与し、それらを OIDC グループと JWT トークンにバインドします。これにより、詳細な方法で権限を管理できます。
ACK One の管理者は、次の操作を実行して、RAM ユーザーまたは RAM ロールに Argo CD アプリケーション権限を付与できます:
Alibaba Cloud アカウントまたは管理者アカウントを使用して RAM コンソール にログインします。左側のナビゲーションウィンドウで、[ユーザー] または [ロール] をクリックします。管理したいユーザーまたはロールの詳細ページで、[UID] または [ロール ID] をコピーします。
ACK One コンソール にログインします。左側のナビゲーションウィンドウで、 を選択します。[GitOps コンソール] をクリックして Argo CD UI にログインします。
Argo CD コンソールの左側のナビゲーションウィンドウで、 をクリックします。[+ NEW PROJECT] をクリックしてプロジェクトを作成するか、既存のプロジェクトを選択して詳細ページに移動します。前述のリポジトリ、クラスター、およびクラスターリソースの権限設定は省略されています。
[+ ADD ROLE] をクリックし、次の情報を指定してから [CREATE] をクリックしてプロジェクトロールを作成します。
GENERAL: ロールの基本情報を設定します。POLICY RULES: アプリケーションの権限を設定します。GROUPS: テキストボックスに、ステップ 1 でコピーした [UID] または [ロール ID] を入力し、[ADD GROUP] をクリックします。
次の例では、roletest という名前のロールが作成されます。このロールは、RAM ユーザー 27***02 に test プロジェクト内のすべてのアプリケーションに対する get (読み取り専用) 権限を付与します。承認された RAM ユーザー 27***02 は、ACK One コンソールに移動し、[LOG IN VIA ALIYUN SSO] をクリックして Argo CD UI にログインし、権限が期待どおりに機能することを確認できます。
