文档

用户管理

更新时间:

本文介绍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

前提条件

操作步骤

创建Local User操作由ACK One Fleet实例管理员在Fleet实例中执行。具体步骤如下。

  1. 执行以下命令,编辑ArgoCD argocd-cm的ConfigMap文件。

    kubectl edit cm argocd-cm -n argocd
  2. argocd-cm的ConfigMap文件中,添加如下所示的Local Userlocaluser1

    data:
      accounts.localuser1: login,apiKey    # 可以UI/CLI登录,并可以生成apiKey Token。
      accounts.localuser1.enabled: "true"  # 创建localuser1。
  3. 执行以下命令,查看Local User。

    argocd account list

    预期输出:

    NAME        ENABLED  CAPABILITIES
    admin       true     login
    localuser1  true     login,apiKey   # 此处为上一步已创建的localuser1。
  4. 执行以下命令,设置密码并生成认证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支持的资源如下:clustersprojectsapplicationsapplicationsetsrepositoriescertificatesaccountsgpgkeyslogsexec, extensions

支持的Actions如下:getcreateupdatedeletesyncoverrideaction/<api-group>/<Kind>/<action-name>

其中syncoverrideaction/<api-group>/<Kind>/<action-name>操作只对applications资源有意义。

为Local User授权

  1. 执行以下命令,编辑ArgoCD argocd-rbac-cm的ConfigMap文件。

    kubectl edit cm argocd-rbac-cm -n argocd
  2. 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实例管理员参考以下步骤配置相应的权限。

    1. 执行以下命令,编辑ArgoCD argocd-rbac-cm的ConfigMap文件。

      kubectl edit cm argocd-rbac-cm -n argocd
    2. 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)
文档反馈