管理 DevSecOps 工具链访问云资源的 IAM 访问权限
IBM Cloud® Identity and Access Management (IAM) 使管理员能够为用户和服务身份分配特定角色,如查看器、编辑器、操作员和管理员。 这定义了他们对 Continuous Delivery, Secrets Manager, Container Registry, Cloud Object Storage 等资源以及 Kubernetes 集群和 Code Engine 等部署目标的访问级别。
在 IBM Cloud DevSecOps 管道中,根据参与者的角色需要不同的 IAM 权限集。 IBM Cloud DevSecOps 管道中的角色大致可分为两大类:
-
管道管理员 这些角色负责管理和配置 DevSecOps 管道、工具链和相关资源。 管道管理员需要配置、管理和故障排除管道的广泛权限,包括工具链、Continuous Delivery、Container Registry 和 Secrets Manager 等资源的编辑器或管理员角色。 这使他们能够配置管道、配置工具链集成、集成云服务和集成安全工具。
-
管道运行人员 这些角色负责执行 DevSecOps 管道、工具链和相关资源。 管道运行程序用于执行管道,需要有限的权限,主要用于运行构建、部署应用程序和访问必要的资源。 该角色提供有限的权限,如操作员、写入员或阅读器,允许他们与必要的服务(如 Kubernetes, Code Engine, Cloud Object Storage )进行交互,而无需修改关键配置。
访问 DevSecOps 管道和资源主要有两种方式。
- 以小组为基础的访问方式
- 基于服务标识的方法
这两种方法均支持在 IBM Cloud 中实现安全访问管理:API密钥与访问组的映射适用于集中化角色管理,而服务ID API密钥则为自动化 DevSecOps 工作流的身份验证提供了更灵活且安全的方式。
以小组为基础的访问方式
这种方法涉及将用户分配到访问组,即具有预定义角色和权限的服务。 通过使用访问组,管理员可以集中管理权限,确保多个用户之间的一致性和可扩展性。 这种方法简化了访问管理,因为对访问组的任何更改都会自动应用于所有用户。 访问组内用户创建的 API 密钥会自动继承分配的权限。
下面的表格概述了管道管理员角色所需的不同权限:
| 资源/服务 | IAM 权限 | 注释 |
|---|---|---|
| IAM Identity Service | 用户 API 密钥创建者、服务 ID 创建者、操作员 | |
| 用户管理 | 编辑者 | |
| IAM 访问组服务 | 编辑者 | |
| 资源组 | 查看者 | |
| IBM Cloud 工具链 | 编辑者 | |
| Continuous Delivery | 编辑者 | |
| Secrets Manager | 经理、管理员 | 创建新的 Secret Manager 实例和创建授权需要管理员角色。 在秘密管理器实例中创建秘密组需要使用管理器角色。 |
| Cloud Object Storage | 作家、编辑 | |
| Container Registry | 管理者 | 在 Container Registry 中创建命名空间需要管理员角色 |
下面的表格概述了管道运行程序角色所需的不同权限:
| 资源/服务 | IAM 权限 | 注释 |
|---|---|---|
| 资源组 | 查看者 | |
| IBM Cloud 工具链 | 管道工,操作员 | 需要操作员来启动副管道 |
| Secrets Manager | 读取者 | 查看机密元数据需要读者角色 |
| Cloud Object Storage | 物品作家、读者 | |
| Container Registry | 读者、作家 | 在 Container Registry 中创建命名空间时,如果尚未存在命名空间,则需要管理员角色 |
根据部署目标是 IBM Cloud Kubernetes Service (IKS) 还是 IBM Cloud Code Engine,管道管理员和管道运行人员需要不同的 IAM 权限。
下面的表格概述了管道管理员角色所需的不同权限:
| 资源/服务 | IAM 权限 | 注释 |
|---|---|---|
| IBM Kubernetes Service | 经理、编辑 | |
| Code Engine | 经理、编辑 |
下面的表格概述了管道运行程序角色所需的不同权限:
| 资源/服务 | IAM 权限 | 注释 |
|---|---|---|
| IBM Kubernetes Service | 作家、操作员 | |
| Code Engine | 作家、操作员 |
基于服务标识的方法
服务 ID 是用于验证和授权自动流程(如 DevSecOps 管道)的非人类身份。 服务 ID API 密钥可授予管道或服务特定权限,而无需将其与单个用户账户绑定。 这种方法可确保管道仅在获得所需权限的情况下运行,降低未经授权访问的风险,同时实现与 IBM Cloud 服务的无缝集成,从而增强安全性。
下面的表格概述了管道管理员角色所需的不同权限:
| 资源/服务 | IAM 权限 | 注释 |
|---|---|---|
| IAM Identity Service | 用户 API 密钥创建者、服务 ID 创建者、操作员 | |
| 用户管理 | 编辑者 | |
| IAM 访问组服务 | 编辑者 | |
| 资源组 | 管理员 | |
| IBM Cloud 工具链 | 管理员 | |
| Continuous Delivery | 编辑者 | |
| Secrets Manager | 经理、管理员 | 创建新的 Secret Manager 实例和创建授权需要管理员角色。 在秘密管理器实例中创建秘密组需要使用管理器角色。 |
| Cloud Object Storage | 作家、管理员 | |
| Container Registry | 管理者 | 在 Container Registry 中创建命名空间需要管理员角色 |
下面的表格概述了管道运行程序角色所需的不同权限:
| 资源/服务 | IAM 权限 | 注释 |
|---|---|---|
| 资源组 | 查看者 | |
| IBM Cloud 工具链 | PipelineRunner, 操作员 | 需要操作员来启动副管道 |
| Secrets Manager | 读取者 | 查看机密元数据需要读者角色 |
| Cloud Object Storage | 物品作家、读者 | |
| Container Registry | 读者、作家 | 在 Container Registry 中创建命名空间时,如果尚未存在命名空间,则需要管理员角色 |
下面的表格概述了管道管理员和管道运行人员所需的不同 IAM 权限,具体取决于部署目标是 IBM Cloud Kubernetes Service (IKS) 还是 IBM Cloud Code Engine:
下面的表格概述了管道管理员角色所需的不同权限:
| 资源/服务 | IAM 权限 | 注释 |
|---|---|---|
| IBM Kubernetes Service | 经理、管理员 | |
| Code Engine | 经理、管理员 |
下面的表格概述了管道运行程序角色所需的不同权限:
| 资源/服务 | IAM 权限 | 注释 |
|---|---|---|
| IBM Kubernetes Service | 作家、操作员 | |
| Code Engine | 作家、操作员 |