赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 分布式云容器平台ACK One
  4. 操作指南
  5. 多集群舰队
  6. GitOps
  7. 用户管理

用户管理

  • GitOps
  • 发布于 2025-04-18
  • 0 次阅读
文档编辑
文档编辑

本文介绍ACK One GitOps支持的用户类型以及如何为用户授权。

用户类型

ACK One GitOps支持多用户团队协作,管理员可以创建或删除用户,并为不同用户设置不同的ArgoCD RBAC权限和不同的ArgoCD Application的权限。目前ACK One GitOps支持以下两种用户类型。

  • Local User

    系统本地用户。管理员可以创建Local User并获取认证Token,由自动化系统使用,调用ArgoCD API自动创建ArgoCD Application、Project等。若您的团队规模较小,可创建不同的Local User分配给团队成员。关于Local User授权方式,请参见为Local User授权。

  • 阿里云RAM User/Role

    阿里云用户或角色。建议使用阿里云用户登录ArgoCD UI或ArgoCD CLI。ACK One GitOps默认支持使用阿里云RAM User/Role SSO ArgoCD UI和ArgoCD CLI。关于阿里云RAM User授权方式,请参见为阿里云RAM User/Role授权。

创建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实例中执行。具体步骤如下。

  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支持的资源如下: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授权

  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/Role授权

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为普通用户,需要舰队管理员为其授予相应的权限。包含两方面的权限管理:

    • 在argocd-rbac-cm中为RAM Uesr/Role授予ArgoCD RBAC权限。

    • 通过ArgoCD Projects管理RAM Uesr/Role对目标集群、仓库、应用(Application)的权限。

为RAM Uesr/Role授予ArgoCD RBAC权限

需要ACK One 舰队管理员参考以下步骤配置相应的权限:

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

    kubectl edit cm argocd-rbac-cm -n argocd
  2. 在argocd-rbac-cm中,参考以下示例为给RAM User授予权限。下图示例为RAM User "27***02"配置了argocd admin权限,注释部分是为RAM User "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 User "27***02"为admin。
    ##  g, "27***02", role:project-admin  # 映射RAM User "27***02"到角色project-admin。
      scopes: '[uid]'                     # 现有配置,请保留。

为RAM Uesr/Role授予ArgoCD应用级别的权限控制

ArgoCD中每个Application都属于一个Project,通过ArgoCD Projects可以为不同阿里云RAM User/Role授予不同的应用级别权限。

在多团队使用Argo CD的场景下,Argo CD Projects提供了Applications逻辑分组能力,并具备以下功能:

  • 限制Git源仓库:控制哪些Git仓库可以用于部署应用程序。

  • 限制目标集群和Namespaces:定义应用程序可以部署到的集群和命名空间,确保部署符合团队的资源划分和安全策略。

  • 限制对象类型:限定可以部署的Kubernetes资源类型,例如RBAC、CRDs、DaemonSets、NetworkPolicy等,以免使用不必要或危险的资源类型。

  • 应用级别RBAC:通过定义project roles,可以为不同阿里云RAM User/Role授予不同的应用级别权限,并绑定到OIDC Groups和 JWT Tokens,从而实现细粒度的权限管理。

ACK One管理员可参考以下步骤对RAM User/Role授予应用级别的权限:

  1. 使用RAM主账号或者权限管理员账号登录阿里云RAM控制台,在左侧导航栏,单击用户或者角色,进入您希望授权的用户或角色的详情页,复制UID或角色ID。

  2. 登录ACK One控制台,在左侧导航栏选择舰队 > GitOps,单击GitOps控制台,登录ArgoCD UI。

  3. 在ArgoCD UI左侧导航栏,单击Settings > Projects,单击+ NEW PROJECT新建Project,或选择并进入已有的Project详情页。(此处省略SUMMARY中仓库、集群和集群资源的权限配置)。

  4. 单击上方+ ADD ROLE,配置以下信息后,再单击上方CREATE创建project role:

    • GENERAL:配置Role的基本信息。

    • POLICY RULES:配置应用权限信息。

    • GROUPS:下方横线处填上1中的UID或角色ID,单击右侧ADD GROUP。

在下图示例中,创建了名为roletest的角色,该角色允许RAM用户27***02对test项目下所有应用程序具有get(只读)权限。被授予权限的RAM用户27***02可以在ACK One控制台点击LOG IN VIA ALIYUN SSO,登录到ArgoCD UI以验证权限是否符合预期。

image

相关文章

仓库管理 2025-04-18 18:11

本文介绍如何在GitOps系统中,通过ArgoCD CLI和ArgoCD控制台方式添加、查看及删除Git源仓库和Helm源仓库。 前提条件 已登录GitOps系统。具体操作,请参见登录GitOps系统

GitOps概述 2025-04-18 18:11

GitOps是将Git仓库作为Kubernetes集群中部署应用的唯一来源,通过自动化配置基础设施实现应用的持续部署。Fleet实例托管了ArgoCD,并集成多集群能力,实现多集群的GitOps持续交付,满足应用的高可用部署、系统组件多集群分发等需求。本文介绍GitOps和ACK One GitOp

登录GitOps系统 2025-04-18 18:11

本文介绍ACK One GitOps用户如何登录GitOps系统。 前提条件

Application管理 2025-04-18 18:11

本文介绍如何使用GitOps系统管理应用,包括创建部署单个应用、更新和回滚应用。 前提条件

GitOps快速入门 2025-04-18 18:11

您可以在ACK One舰队(Fleet)实例中通过GitOps将Git repositories作为应用来源,对多种编排方式(YAML manifests目录、Helm Charts、Kustomize等)的应用实现版本管理、多集群分发和持续部署。GitOps完全兼容社区ArgoCD的使用方式,并提

开通公网访问GitOps 2025-04-18 18:11

在ACK One的集群中需要通过ArgoCD提交或访问应用时,您可以开通GitOps公网访问,从而能更便捷地访问GitOps。本文介绍如何在Fleet实例中开通GitOps公网访问。 前提条件 已开启舰队管理功能

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号