ACK One GitOps は、マルチユーザーでの共同作業をサポートしています。管理者は、ユーザーを作成し、Argo CD のロールベースのアクセス制御 (RBAC) 権限を割り当て、Argo CD プロジェクトを通じてアプリケーションレベルのアクセスを管理できます。
ユーザータイプ
ACK One GitOps は、次の 2 種類のユーザータイプをサポートしています。
| ユーザータイプ | 説明 | 最適なケース |
|---|---|---|
| ローカルユーザー | Argo CD で直接作成されます。UI ログインと、自動化のための API キー生成をサポートします。 | SSO、ログイン履歴、またはグループベースのアクセスを必要としない小規模なチームや、自動化された CI/CD パイプライン。 |
| RAM ユーザーまたは RAM ロール | Alibaba Cloud ID です。ACK One GitOps はデフォルトでシングルサインオン (SSO) をサポートしているため、RAM ユーザーは別のユーザー名とパスワードを入力することなく、Argo CD UI または Argo CD CLI にログインできます。 | すでに ID 管理に RAM を使用しているチーム、またはグループベースのアクセス、ログイン履歴、詳細な権限コントロールが必要な場合。 |
ローカルユーザーの作成
前提条件
開始する前に、以下が準備されていることを確認してください。
-
フリートインスタンスの kubeconfig ファイルがあり、kubectl がフリートインスタンスに接続されていること。ファイルは ACK One コンソールから取得します。
-
ご利用の ACK One フリートインスタンスで GitOps が有効になっていること。詳細については、「フリートインスタンスでの GitOps の有効化」をご参照ください。
-
Argo CD CLI にログインするための Argo CD 管理者パスワード。詳細については、「Argo CD CLI を使用した Argo CD へのアクセス」をご参照ください。
ローカルユーザーの追加
-
argocd-cmConfigMap を編集します。kubectl edit cm argocd-cm -n argocd -
dataフィールドにローカルユーザーを追加します。次の例では、localuser1という名前のユーザーを追加します。data: accounts.localuser1: login,apiKey # UI ログインと API キーの生成を許可 accounts.localuser1.enabled: "true" # ユーザーを有効化各アカウントは、次の 2 つの機能をサポートしています。
-
login— ユーザーが Argo CD UI および Argo CD CLI にログインすることを許可します。 -
apiKey— ユーザーが API アクセス用の認証トークンを生成することを許可します。
-
-
ユーザーが作成されたことを確認します。
argocd account list想定される出力:
NAME ENABLED CAPABILITIES admin true login localuser1 true login,apiKey -
ユーザーのパスワードを設定し、トークンを生成します。
# パスワードの設定 argocd account update-password \ --account localuser1 \ --current-password <admin-password> \ --new-password <localuser1-password> # API キートークンの生成 argocd account generate-token --account localuser1 eyJhb......
Argo CD RBAC 権限の設定
Argo CD RBAC を使用すると、特定のリソースにアクセスできるユーザーとグループを制御できます。この設定は argocd-rbac-cm ConfigMap に保存され、ポリシーベースの構文に従います。
事前定義されたロール
Argo CD には、次の 2 つの組み込みロールが含まれています。
| ロール | 権限 |
|---|---|
role:readonly |
すべての Argo CD リソースへの読み取り専用 (get) アクセス |
role:admin |
すべての Argo CD リソースへのフルアクセス |
詳細な権限を持つカスタムロールもサポートされています。
ポリシー構文
すべてのポリシーは、argocd-rbac-cm の .data.policy.csv フィールドで定義されます。
権限の割り当て (`p` ルール):
p, <role/user/group>, <resource>, <action>, <object>
プロジェクト内のリソースの場合:
p, <role/user/group>, <resource>, <action>, <appproject>/<object>
以下に示すとおり:
-
<role/user/group>— 権限を受け取るエンティティ (ロール名、ローカルユーザー名、または SSO グループ/UID) -
<resource>— Argo CD のリソースタイプ -
<action>— 許可する操作 -
<object>— 特定のリソースインスタンス、またはすべてを対象とする場合は*
ユーザーまたはグループのロールへのマッピング (`g` ルール):
g, <user/group>, <role>
サポートされているリソースとアクション
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リソースに対してのみ有効です。
ローカルユーザーへの権限付与
-
argocd-rbac-cmConfigMap を編集します。kubectl edit cm argocd-rbac-cm -n argocd -
gルールを追加して、ローカルユーザーをロールにマッピングします。次の例では、localuser1を組み込みのrole:adminにマッピングします。-
すべての Argo CD リソースへのフルアクセス権を付与するために、
localuser1をrole:adminにマッピングします。 -
特定のプロジェクトとアプリケーションに限定されたアクセス権を付与するために、
localuser1をカスタムロールproject-admin(コメントアウト) にマッピングします。
重要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 を role:admin にマッピング ## g, localuser1, role:project-admin # 代替案:カスタムロールにマッピング scopes: '[uid]' # 現在の設定を保持この例は、2 つのシナリオをサポートしています。
-
RAM ユーザーまたは RAM ロールへの権限付与
デフォルトでは、フリートインスタンスの管理者である RAM ユーザーは、SSO を通じて Argo CD の管理者権限を自動的に受け取ります。通常の RAM ユーザーには、明示的な権限付与が必要です。
通常の RAM ユーザーには、次の両方を付与します。
-
argocd-rbac-cmでの Argo CD RBAC 権限 -
Argo CD プロジェクトを通じたアプリケーションレベルの権限
Argo CD RBAC 権限の付与
-
argocd-rbac-cmConfigMap を編集します。kubectl edit cm argocd-rbac-cm -n argocd -
gルールを追加して、RAM ユーザーの UID をロールにマッピングします。次の例では、RAM ユーザー27***02にrole: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 に role:admin を付与 ## g, "27***02", role:project-admin # 代替案:カスタムロールにマッピング scopes: '[uid]' # 現在の設定を保持
Argo CD アプリケーション権限の付与
各 Argo CD アプリケーションはプロジェクトに属します。Argo CD プロジェクトを使用して、異なる RAM ユーザーまたは RAM ロールに異なるアプリケーション権限を割り当てます。
Argo CD プロジェクトは、次のアクセス制御をサポートしています。
-
Git リポジトリの制限 — アプリケーションのデプロイに使用できる Git リポジトリを制御します。
-
クラスターと名前空間の制限 — アプリケーションをデプロイできるクラスターと名前空間を定義します。
-
オブジェクトタイプの制限 — デプロイできる Kubernetes リソースタイプ (例:RBAC、カスタムリソース定義 (CRD)、DaemonSet、NetworkPolicy) を制限します。
-
アプリケーションレベルの RBAC — プロジェクトロールを OpenID Connect (OIDC) グループと JSON Web トークン (JWT) にバインドすることにより、特定の RAM ユーザーまたは RAM ロールにアプリケーションごとの権限を付与します。
RAM ユーザーにアプリケーション権限を付与するには、次の手順を実行します。
-
ご利用の Alibaba Cloud アカウントまたは管理者アカウントを使用して RAM コンソールにログインします。左側のナビゲーションウィンドウで、[ユーザー] または [ロール] をクリックします。対象のユーザーまたはロールの詳細ページで、UID またはロール ID をコピーします。
-
ACK One コンソールにログインします。左側のナビゲーションウィンドウで、[フリート] > [マルチクラスター GitOps] を選択し、[GitOps コンソール] をクリックして Argo CD UI を開きます。
-
Argo CD コンソールの左側のナビゲーションウィンドウで、[設定] > [プロジェクト] に移動します。[+ 新規プロジェクト] をクリックしてプロジェクトを作成するか、既存のプロジェクトを開きます。
-
[+ ロールの追加] をクリックし、次のフィールドを入力して、[作成] をクリックします。
-
[全般] — 基本的なロール情報を設定します。
-
[ポリシールール] — アプリケーションの権限を設定します。
-
グループ — ステップ 1 でコピーした[UID]または[ロール ID]を入力し、[グループを追加]をクリックします。
-
次の例では、roletest という名前のロールが、RAM ユーザー 27***02 に test プロジェクト内のすべてのアプリケーションへの読み取り専用 (get) アクセス権を付与します。 ロールが作成されると、RAM ユーザーは ACK One コンソールで [LOG IN VIA ALIYUN SSO] をクリックして Argo CD UI にログインし、権限が有効であることを確認できます。