实践场景
X公司是华为云企业用户,即将使用软件开发平台进行某产品的开发,企业中有多个项目团队,需要为项目团队购买资源、配置人员、进行项目管理。
本文针对X公司提出的企业需求,给出企业多团队使用软件开发平台的账号划分和使用的最佳实践。
企业需求场景
- 需求一:X公司有两个产品团队,分别负责项目A和项目B的开发。两个团队中的资源相互隔离,各自维护。公司有专门的财务部门,资源的购买与分配由财务部门统一管理。
- 需求二:每个产品团队包括多个小组,分别负责不同的资源管理。例如:资源维护组负责管理项目开发所需的环境资源,包括主机、集群等;研发管理组负责软件开发平台中的人员配置;开发测试组负责使用软件开发平台进行版本的迭代开发等。每个成员只能访问其所在团队的资源,且仅拥有能够完成工作的资源使用最小权限。
- 需求三:项目开发过程中,每种角色(例如开发人员、测试人员)能够有不同的操作权限,例如:开发人员可以修改代码、测试人员只能查看代码等。
解决方案
- 针对需求一:华为云提供的企业管理服务能够实现团队之间的资源隔离。企业管理通过创建企业项目,隔离企业不同项目之间的资源,企业项目中可以包含多个区域的资源。企业项目还可以实现对特定云资源的授权。例如:将一台特定的ECS添加至企业项目,对企业项目进行授权后,可以控制用户仅能管理这台特定的ECS。
- 针对需求二:华为云提供的统一身份认证服务能够对用户进行分组授权。配合使用企业管理服务和统一身份认证服务,在统一身份认证服务中创建用户组、为每个员工创建IAM用户并加入用户组,再将用户组添加至企业项目,并为各企业项目中的用户组授予相应的资源使用权限。图1 人员&资源配置模型
本文中,产品团队使用软件开发平台(DevCloud)进行版本迭代开发,版本包的部署使用弹性云服务器(ECS)。
- 财务组负责购买并分配资源,需要ECS、DevCloud控制台的管理员权限。
- 资源维护组负责环境资源ECS的日常维护,包括开关机、安装/切换操作系统等,需要ECS的普通用户权限。
- 研发管理组负责管理软件开发平台中的人员配置,包括指定哪些成员可以在软件开发平台中创建开发项目、管理项目角色,需要项目管理服务(ProjectMan)的项目设置权限。
- 开发测试组需要将版本包部署到ECS上,赋予只读权限即可。由于IAM用户默认可以访问DevCloud产品页,且在IAM服务中暂无Devcloud访问相关配置,因此无需对开发测试组做DevCloud访问权限的配置。
表1 用户组权限配置模型 用户组
职责
所需权限
描述
财务组
负责购买开通项目开发所使用的云资源。
ECS FullAccess
弹性云服务器(ECS)的管理员权限。
DevCloud Console FullAccess
软件开发平台(DevCloud)控制台管理员权限。
资源维护组
负责维护项目开发所需的环境资源。
ECS CommonOperations
弹性云服务器(ECS)的普通用户权限。
研发管理组
负责管理项目研发团队。
ProjectMan ConfigOperations
软件开发平台项目设置的操作权限。
开发测试组
负责项目的开发测试。
ECS ReadOnlyAccess
弹性云服务器(ECS)的只读权限。
- 针对需求三:软件开发平台中内置了多种项目角色,并提供自定义角色功能。在软件开发平台中,可以为每个IAM用户设置角色,并对角色设置各项任务的操作权限。
本文中,在软件开发平台中的操作主要涉及以下服务。在每个服务中,可以根据实际需要,为各角色设置权限。
表2 项目角色与操作 服务
说明
各角色在服务中的操作(表中未提到的角色默认为不在此服务中进行任何操作)
项目管理(ProjectMan)
管理需求规划、工作项、迭代、报表、仪表盘、文档。
- 项目创建者/项目经理:新建项目、添加项目成员。新建/编辑/删除项目规划、迭代、工作项、报表、仪表盘、文档。
- 开发人员:查看项目规划、迭代、仪表盘,新建工作项、文档,编辑/删除自己名下的工作项、文档。
- 测试人员:查看项目规划、迭代、仪表盘,新建工作项、文档,编辑/删除自己名下的工作项、文档。
- 运维经理:查看项目规划、迭代、工作项、报表、仪表盘,新建/编辑/删除文档。
代码托管(Codehub)
源代码管理与开发。
- 项目创建者/项目经理:新建仓库、添加仓库成员。
- 开发人员:修改/提交代码。
- 测试人员:查看代码。
编译构建(CloudBuild)
将代码编译打包成版本包。
- 开发人员:新建/编辑/执行/删除构建任务。
- 测试人员:执行/查看构建任务。
发布(CloudRelease)
版本包的存储与管理。
- 开发人员:上传/编辑/下载/删除版本包。
- 测试人员:查看/下载版本包。
- 运维经理:查看/下载版本包。
部署(CloudDeploy)
将版本包部署到ECS中。
- 开发人员:新建/编辑/执行/删除部署任务。
- 测试人员:编辑/执行部署任务。
- 运维经理:编辑/执行部署任务。
流水线(CloudPipeline)
集成构建、部署等任务,实现项目的持续交付。
- 开发人员:新建/编辑/执行/删除自己名下的流水线。
- 测试人员:编辑/执行流水线。
- 运维经理:编辑/执行流水线。
