本文介绍ACK One GitOps支持的用户类型以及如何为用户授权。
用户类型
ACK One GitOps支持多用户团队协作,管理员可以创建或删除用户,并为不同用户设置不同的权限。目前ACK One GitOps支持以下两种用户类型。
Local User
系统本地用户。管理员可以创建Local User并获取认证Token,由自动化系统使用,调用ArgoCD API自动创建ArgoCD Application、Project等。若您的团队规模较小,可创建不同的Local User分配给团队成员。关于Local User授权方式,请参见为Local User授权。
阿里云RAM User
阿里云用户。通过SSO方式登录ArgoCD UI或ArgoCD CLI。建议使用阿里云用户登录ArgoCD UI或ArgoCD CLI。ACK One GitOps默认打通ArgoCD UI和ArgoCD CLI向阿里云RAM的SSO认证。关于阿里云RAM User授权方式,请参见为阿里云RAM User授权。
创建Local User
前提条件
已从ACK One控制台获取Fleet实例的KubeConfig,并通过kubectl连接至Fleet实例。
已在ACK One Fleet实例中开启GitOps。具体操作,请参见在ACK One Fleet实例中开启GitOps。
已获取ArgoCD管理员密码,并登录ArgoCD CLI。具体操作,请参见通过ArgoCD CLI方式访问ArgoCD。
操作步骤
创建Local User操作由ACK One Fleet实例管理员在Fleet实例中执行。具体步骤如下。
执行以下命令,编辑ArgoCD
argocd-cm
的ConfigMap文件。kubectl edit cm argocd-cm -n argocd
在
argocd-cm
的ConfigMap文件中,添加如下所示的Local Userlocaluser1
。data: accounts.localuser1: login,apiKey # 可以UI/CLI登录,并可以生成apiKey Token。 accounts.localuser1.enabled: "true" # 创建localuser1。
执行以下命令,查看Local User。
argocd account list
预期输出:
NAME ENABLED CAPABILITIES admin true login localuser1 true login,apiKey # 此处为上一步已创建的localuser1。
执行以下命令,设置密码并生成认证Token。
# 设置密码。 argocd account update-password \ --account localuser1 \ --current-password <admin password> \ --new-password <localuser1-password> # 获取localuser1认证Token。 argocd account generate-token --account localuser1 eyJhb......
为用户配置ArgoCD RBAC
ArgoCD支持为SSO或Local User配置RBAC,以限制用户对ArgoCD资源的访问。其通过定义RBAC角色,再将SSO Group或Local User映射到角色来实现访问控制。
角色授权说明
进行授权操作时,您需要先为角色授权,再将SSO Group或Local User映射到角色,完成用户授权。
您可以自定义角色,也可以使用Argo CD提供的如下预置角色:
role:readonly
:对所有Argo CD资源具有只读权限。(get)role:admin
:对所有Argo CD资源具有所有权限。
为角色授权需要在argocd-rbac-cm ConfigMap中的.data.policy.csv
字段中配置,格式如下:
不属于Project的:
p, <role/user/group>, <resource>, <action>, <object>
属于Project的:
p, <role/user/group>, <resource>, <action>, <appproject>/<object>
ArgoCD支持的资源如下:clusters
、projects
、applications
、applicationsets
、repositories
、certificates
、accounts
、gpgkeys
、logs
、exec
, extensions
。
支持的Actions如下:get
、create
、update
、delete
、sync
、override
、action/<api-group>/<Kind>/<action-name>
。
其中sync
、override
、action/<api-group>/<Kind>/<action-name>
操作只对applications
资源有意义。
为Local User授权
执行以下命令,编辑ArgoCD
argocd-rbac-cm
的ConfigMap文件。kubectl edit cm argocd-rbac-cm -n argocd
在
argocd-rbac-cm
的ConfigMap文件中,参考以下示例根据实际需求为Local User进行授权。重要请勿修改此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]' # 现有配置,请保留。
示例代码中提供的两个授权场景分别如下:
映射localuser1到预置角色admin,使localuser1具有ArgoCD资源的所有权限。
屏蔽的配置为:映射localuser1到自定义角色project-admin,并为角色project-admin授予projects和applications资源的所有权限。
为阿里云RAM User授权
ACK One GitOps默认打通ArgoCD UI和ArgoCD CLI向阿里云RAM的SSO认证。当您登录阿里云控制台后,可以通过SSO登录ArgoCD UI或ArgoCD CLI,无需再次输入用户名密码。
若RAM User为ACK One Fleet实例管理员,ACK One GitOps会自动同步权限设置,授权其ArgoCD UI或ArgoCD CLI管理员权限。
若RAM User为普通用户,需要ACK One Fleet实例管理员参考以下步骤配置相应的权限。
执行以下命令,编辑ArgoCD
argocd-rbac-cm
的ConfigMap文件。kubectl edit cm argocd-rbac-cm -n argocd
在
argocd-rbac-cm
的ConfigMap文件中,参考为Local User授权中的示例配置您所需的权限,以下示例为给RAM User授予admin权限。data: policy.csv: | g, "14***01", role:admin # 现有配置,请保留。 g, "27***02", role:admin # 新增配置,设置RAM User "27***02"为admin。 scopes: '[uid]' # 现有配置,请保留。
- 本页导读 (1)