ローカルユーザーまたは RAM ユーザーを作成し、Argo CD RBAC を設定して、アプリケーションレベルのアクセス制御を実現します。
ユーザータイプ
ACK One GitOps は、マルチユーザーでのチームコラボレーションをサポートしています。管理者は、ユーザーを作成または削除し、ユーザーごとに Argo CD RBAC 権限と Argo CD アプリケーション権限を設定できます。次の 2 種類のユーザータイプをサポートしています。
| ユーザータイプ | 説明 | 最適なケース |
|---|---|---|
| ローカルユーザー | Argo CD で作成されます。UI ログインと API キーの生成をサポートしています。 | シングルサインオン (SSO)、ログイン履歴、またはグループベースのアクセスを必要としない小規模なチームや自動化された CI/CD パイプライン。 |
| RAM ユーザーまたは RAM ロール | Alibaba Cloud のアイデンティティです。RAM ユーザーはシングルサインオン (SSO) を通じてログインするため、個別の認証情報は不要です。 | アイデンティティ管理に RAM を使用しているチーム、またはグループベースのアクセス、ログイン履歴、きめ細かい権限を必要とするチーム。 |
ローカルユーザーの作成
前提条件
以下を確認してください。
-
kubectl が ACK One コンソールの kubeconfig を使用してフリートインスタンスに接続されていること。
-
フリートインスタンスで GitOps が有効化されていること。
-
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 と 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 で定義されます。
定義済みのロール
権限を付与するには、まずロールに権限を割り当て、次にシングルサインオン (SSO) グループまたはローカルユーザーをそのロールにマッピングします。カスタムロールがサポートされており、以下の組み込みロールが利用可能です。
| ロール | 権限 |
|---|---|
role:readonly |
getすべての Argo CD リソースへの読み取り専用 () アクセス |
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に割り当てます。-
localuser1をrole:adminにマップして、すべての Argo CD リソースへの完全なアクセス権を付与します。 -
プロジェクトスコープのアクセス用に、
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 ロールへの権限付与
ACK One GitOps は、デフォルトで Argo CD UI と Argo CD CLI を Alibaba Cloud RAM のシングルサインオン (SSO) 認証と統合します。Alibaba Cloud コンソールにログインした後、認証情報を再入力することなく SSO を通じて Argo CD UI または Argo CD CLI にアクセスできます。フリートインスタンスの管理者は、自動的に 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 をロールにマッピングします。この例では、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 アプリケーション権限の付与
各アプリケーションはプロジェクトに属します。プロジェクトを使用して、さまざまな RAM ユーザーまたはロールにアプリケーション権限を割り当てます。
プロジェクトは、以下のアクセス制御をサポートしています。
-
Git リポジトリの制限 — デプロイが許可される Git リポジトリを制限します
-
クラスターと名前空間の制限 — デプロイのターゲットとなるクラスターと名前空間を制限します
-
オブジェクトタイプの制限 — デプロイ可能な Kubernetes リソースタイプ (例:RBAC、CRDs、DaemonSets、NetworkPolicies) を制限します
-
アプリケーションレベルの RBAC — プロジェクトロールを OpenID Connect (OIDC) グループと JSON Web Tokens (JWTs) にバインドすることにより、RAM ユーザーまたはロールにアプリケーションごとの権限を付与します
RAM ユーザーにアプリケーション権限を付与するには:
-
RAM ルートアカウントまたは権限管理者アカウントを使用して RAM コンソールにログインします。[ユーザー] または [ロール] をクリックし、対象のユーザーまたはロールを開き、UID または ロール ID をコピーします。
-
ACK One コンソールにログインします。[フリート] > [マルチクラスター GitOps] を選択し、[GitOps コンソール] をクリックします。
-
[設定] > [プロジェクト] に移動します。[+ 新規プロジェクト] をクリックするか、既存のプロジェクトを開きます。
-
[+ ロールを追加] をクリックして以下を設定し、[作成] をクリックします。
-
[GENERAL] — 基本的なロール設定
-
[POLICY RULES] — アプリケーション権限の設定
-
グループ — ステップ 1 でコピーした [UID] または ロール ID を入力し、[グループの追加] をクリックします
-
この例では、test プロジェクト内のすべてのアプリケーションへの読み取り専用 (get) アクセス権を 27***02 に付与するロール roletest を作成します。ロールを作成した後、[ALIYUN SSO を使用してログイン] をクリックしてログインし、権限を検証します。