
# 身份和权限管理
#### 用户和权限管理原则
华为云基于大量成功交付的项目，总结提炼了以下用户和权限管理原则：
1. 建议使用企业自己的身份管理系统（如Azure AD等）与华为云IAM进行联邦身份认证，前者的用户通过SSO（Single Sign-on）登录到华为云控制台进行操作。企业自己的身份管理系统能更好更及时地匹配员工的入职、转岗和离职流程，避免转岗和离职人员继续拥有访问华为云的访问权限。
2. 不要把华为云IAM作为企业自己的用户管理系统，无需与华为云发生交互的企业员工，就不用在华为云IAM上创建相应的用户或用户组。
3. 不要将用户的密码共享给其他人，而是为每个管理或使用华为云资源的人创建一个单独的用户并分配相应的权限，这样每个自然人在华为云的操作都能被追踪审计。
4. 建议按照IT职能来划分用户组，将对应的员工加入与其职责匹配的用户组，以下为推荐的用户组划分方式：
   - 从资源运维和管理角度，需要遵守统一管理和运维的原则以提升效率。在运维监控账号内按照运维职责创建统一管理的用户组，包括计算管理组、存储管理组、网络管理组、数据库管理组等，这些用户组负责运维和管理所有账号的云资源，支撑上层应用系统的安全稳定运行。这些用户组可以通过跨账号委托（请参考跨账号委托授权章节）的方式去运维和管理其他账号下的资源，所以在业务账号下一般不用再创建资源运维和管理的用户组。
   
   - 从安全防护角度，需要遵守统一安全管控的原则。在安全运营账号下创建安全管理组，一方面管理和维护安全运营账号内的安全云服务，另一方面通过跨账号委托去管理和维护部署在其他账号内的安全云服务。
   
   - 从应用开发角度，在DevOps账号中按照不同的应用系统创建独立的应用开发组或应用测试组，这些用户组可以通过跨账号委托访问业务账号下的开发环境或测试环境的云资源。
   
   - 从项目管理角度，每个企业项目都应该在华为云上创建一个项目管理组，其成员是项目经理、系统管理员，可以管理该企业项目内的所有资源，包括生产环境、开发环境和测试环境的全部资源。
   
   - 从财务管控角度，需要遵守统一财务管控原则，在主账号中设置一个财务管理组，负责统一管控该账号下所有组织层级和企业项目在华为云上的消费，并进行成本分析和成本优化。
   
   - 从全局IT治理角度，需要在主账号中设置一个IT治理组，用于创建和管理组织单元和子账号，并为其创建和管理组织策略，限定子账号的权限上限。
   
   - 从合规审计角度，需要遵从统一的企业合规要求，在日志账号下创建设置一个合规审计组，负责监控该账号下的资源、用户、权限和操作等是否满足企业的安全合规要求，并设计优化措施。
   
   - 建议为外来访客或只希望查看云资源的用户设置一个只读用户组。
    
5. 遵守最小授权原则，只授予用户组完成职责所需的最小权限，如果用户组的职责产生变化，应该及时调整用户组的权限。按照最小授权原则，优先在企业项目中对用户组进行授权，如果确实需要针对账号内所有区域或特定区域的所有资源进行统一授权，则可以使用IAM项目进行授权，避免在各个企业项目中逐一授权，简化授权操作。
6. 在企业项目中授权时，建议按照用户组而不是用户进行授权，简化授权操作。
7. IAM账号管理员（与IAM账号同名）的权限很大，建议不要直接使用IAM账号管理员访问华为云，而是创建一个IAM用户，并按照最小授权原则授予相应的权限，以使用该IAM用户代替IAM账号管理员进行日常管理工作，保护IAM账号的安全。
 
#### 用户组规划
1. 基于上述原则，针对Landing Zone的各类账号规划以下用户组，按照最小授权原则在华为云上为这些用户组配置对应的云服务访问权限。企业自己的身份管理系统的用户组逐一映射到华为云上的这些用户组，即可拥有对应的云服务访问权限。
   图1Landing Zone用户组规划   
   ![](https://support.huaweicloud.com/landingzone-sag/zh-cn_image_0000001872703052.png) 
2. 上述各个用户组的职责范围和权限配置建议如下表所示：
   表1IT职能账号的用户组划分 
   | **用户组** | **账号**                                       | **职责和资源管理范围**                                                                        | **推荐的权限**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
   |:---|:---|:---|:---|
   | admin   | 每个账号                                         | 该用户组是默认生成的，拥有所有操作权限。该用户组不需要创建，也不能被删除。通常将账号所关联的组织单元的负责人加入到该组                          | 该用户组默认具备了所有操作权限，无需手动设置该用户组的权限                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   | 计算管理组   | 运维监控账号                                       | 该组成员负责统一管理和运维所有的计算资源，包括云主机、物理机、K8S容器引擎、虚拟机镜像、函数工作流等，可以设置自动弹性伸缩策略                     | ECS FullAccess BMS FullAccess AutoScaling FullAccess IMS FullAccess CCE FullAccess CCI FullAccess FunctionGraph Administrator Agent Operator Ticket Administrator                                                                                                                                                                                                     |
   | 存储管理组   | 运维监控账号                                       | 该组成员负责统一管理和运维所有的存储资源，包括云硬盘、对象存储、弹性文件系统等；同时负责管理备份容灾资源，如云备份、存储容灾服务等                    | EVS FullAccess OBS Administrator SFS FullAccess SDRS Administrator CBR FullAccess DSS FullAccess Agent Operator Ticket Administrator                                                                                                                                                                                                                                                                |
   | 网络管理组   | 网络运维账号， 运维监控账号 | 该组成员负责统一管理和运维所有的网络资源，包括ER、VPC、弹性负载均衡、VPN、云专线、DNS、NAT等                                | VPC FullAccess ELB FullAccess NAT FullAccess VPN Administrator DNS FullAccess VPCEndpoint Administrator Direct Connect Administrator CDN Administrator Agent Operator Ticket Administrator                                                                                                                                              |
   | 安全管理组   | 安全管理账号， 运维监控账号 | 负责统一管理和运维所有安全云服务和资源，如应用防火墙、DDoS高仿、主机安全、数据库安全、数据加密、容器安全、云审计等                          | Anti-DDoS Administrator CAD Administrator VSS Administrator HSS FullAccess DBSS Security Administrator KMS Administrator WAF FullAccess SCM FullAccess CGS FullAccess SA FullAccess CBH FullAccess Agent Operator Ticket Administrator        |
   | 数据库管理组  | 运维监控账号                                       | 该组成员负责统一管理和运维所有的数据库相关的云资源和服务，包括RDS、文档数据库、数据复制服务、数据管理服务、分布式数据库中间件等                    | RDS FullAccess DDS FullAccess DRS Administrator DAS Administrator DDM FullAccess Agent Operator Ticket Administrator                                                                                                                                                                                                                                                                                                              |
   | 中间件管理组  | 运维监控账号                                       | 该组成员负责统一管理和运维所有的中间件相关的云资源和服务，包括微服务引擎、分布式缓存、分布式消息、API网关、ServiceStage、区块链等             | ServiceStage FullAccess CSE FullAccess DCS FullAccess DMS Administrator SMN Administrator APIG FullAccess BCS Administrator Agent Operator Ticket Administrator                                                                                                                                                                                                       |
   | 数据处理组   | 数据平台账号                                       | 该组成员负责统一管理和运维所有的大数据及AI云资源及服务，包括MapReduce、数据仓库、数据湖、实时流计算、图引擎、推荐系统、ElasticSearch、表格存储等 | ModelArts FullAccess MRS FullAccess DWS FullAccess DLI Service Admin DGC Administrator GES FullAccess Elasticsearch Administrator DIS Administrator CS FullAccess CloudTable Administrator DLF FullAccess RES FullAccess Ticket Administrator |
   | 合规审计组   | 日志账号                                         | 该组成员负责云审计日志的管理、资源合规信息的管理以及所有云服务的安全配置信息的查阅等                                           | CTS Administrator LTS FullAccess RMS FullAccess Agent Operator Ticket Administrator                                                                                                                                                                                                                                                                                                                                                                                                           |
   | 日志分析组   | 日志账号                                         | 该组成员负责统一搜索、查看和分析各种日志数据                                                               | LTS FullAccess OBS Administrator Ticket Administrator                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   | 财务管理组   | 主账号                                          | 该组成员负责账号内的统一财务管理，包括管理发票、管理订单、管理合同、管理续费、查看账单等权限。不能购买和操作云资源。                           | BSS Finance Ticket Administrator                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   | IT治理组   | 主账号                                          | 该组成员负责统一创建和管理组织单元和子账号，并为其创建和管理组织策略                                                   | BSS Administrator Ticket Administrator                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   | 只读用户组   | 每个账号                                         | 该组成员只能访问指定的单个或多个企业项目的资源，如外来访客或者外部审计人员可以加入到该组                                         | Tenant Guest IAMReadOnlyAccess                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   | 公共服务管理组 | 公共服务账号                                       | 该组成员负责管理所有的公共服务和资源                                                                   | 部署了哪些公共服务，就授予对应云服务的FullAccess权限。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   | 项目管理组   | 业务账号                                         | 该组成员全权管理项目下的所有资源，包括对企业项目本身进行管理                                                       | 建议设置所参与企业项目内所有云服务的FullAccess权限                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   | 应用开发组   | DevOps账号                                     | 该组成员负责管理所参与开发的应用系统在开发环境的云资源                                                          | 建议设置所参与应用系统在开发环境的所有云服务的FullAccess权限                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   | 应用测试组   | DevOps账号                                     | 该组成员负责管理所参与测试的应用系统在测试环境的云资源                                                          | 建议设置所参与应用系统在测试环境的所有云服务的FullAccess权限                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
      
   
 
#### 联邦认证
1. 华为云建议使用企业自己的身份管理系统（如Azure AD等）作为IdP（Identity Provider）与华为云IAM进行联邦身份认证，前者的用户通过SSO（Single Sign-on）登录到华为云控制台进行操作。联邦认证的最佳实践如下：
   - 所有需要进行日常云上运维操作的用户均建议通过集中的联邦认证系统认证后，方允许访问云控制台。
   
   - 每个用户的密码必须受到强有力的安全措施的充分保护，建议在联邦认证系统上实施包括密码长度、密码复杂度、密码重置策略和增强的身份验证方法（多因素身份验证），访问IP白名单等安全策略。
   
   - 用户在云上的操作权限通过云用户组进行定义，并通过身份转换规则映射到联邦认证系统上的用户相关属性（例如组、角色或职责等）。
   
   - 建议使用用户在联邦认证系统中唯一且不变的属性作为映射字段，避免变更后对云上资源使用和审计的影响。
    
2. 华为云IAM服务的"身份提供商"提供对SAMLv2协议（包括IDP-initial和SP-initial两种模式）的支持，且采用一种称为"虚拟用户SSO"的实现机制：
   - 将经过联邦认证系统认证后的用户映射到华为云的一个虚拟用户上，该虚拟用户仅在本次登录会话中按需创建，会话退出后即被销毁。
   
   - IAM提供身份转换规则机制，由客户的安全管理员编写规则，将每个联邦用户的属性映射到虚拟用户会话中的显示用户名和IAM用户组。
   
   - IAM基于虚拟用户会话的显示用户名+租户ID来生成唯一的user id，用于支持用户审计。
     图2联邦认证流程   
     ![](https://support.huaweicloud.com/landingzone-sag/zh-cn_image_0000001912941309.jpg) 
    
3. 身份转换规则的典型例子：
   - 在IdP侧和华为云侧分别创建同名的用户组，在IdP侧将用户归集到对应的用户组，在华为云IAM为用户组设置相应的权限。
   
   - 使用联邦用户的First Name和Last Name属性值作为虚拟用户的显示用户名，且格式为{LastName} {FirstName}。
   
   - 使用联邦用户的Group属性值映射到IAM的已创建的同名用户组，例如果Group属性值为admin，则该联邦用户访问云控制台后，即对应华为云IAM的admin用户组的权限。
   
   
   图3身份转换规则的典型例子   
   ![](https://support.huaweicloud.com/landingzone-sag/zh-cn_image_0000001867061518.png) 
4. 关于如何使用Azure AD建立与华为云的联邦认证，请参考 <https://bbs.huaweicloud.com/blogs/212731>
 
#### 跨账号委托授权
在Landing Zone的多账号运行环境中，通常会涉及不同账号间的资源互访诉求，特别是针对安全运营、运维监控等账号下的用户需要跨账号访问其他子账号下的资源。在华为云上使用跨账号委托的机制来满足该诉求。委托时的最佳实践如下：
- 委托是基于账号间的信任。被委托方建议通过权限管控，授权云用户去使用委托，而不是允许所有云用户都可以使用委托方创建的委托。
- 建议对委托实施最小授权原则。

- 委托的配置过程如下：
  1. 账号 A 在其IAM中创建一个委托将资源访问权限委托给账号B
     图4委托的配置1   
     ![](https://support.huaweicloud.com/landingzone-sag/zh-cn_image_0000001867205536.png) 
  
  2. 账号B再将被委托的资源访问权限授予本账号的IAM用户，由后者管理账号A中的资源。
     图5委托的配置2   
     ![](https://support.huaweicloud.com/landingzone-sag/zh-cn_image_0000001913164793.png)
     图6权限授予的例子如下   
     ![](https://support.huaweicloud.com/landingzone-sag/zh-cn_image_0000001913245145.png)
     ![](https://support.huaweicloud.com/landingzone-sag/public_sys-resources/caution_3.0-zh-cn.png)
     用你获得的委托IP替代上面的字符串"b36b1258b5dc41a4aa8255508xxx..." ，其他的地方不要修改。
     
  
  3. 账号 B 或者被授权的用户切换角色到账号A，即可访问和管理账号A的资源。
     图7委托的配置4   
     ![](https://support.huaweicloud.com/landingzone-sag/zh-cn_image_0000001867365392.png) 
  
  
  
  
 
#### 典型场景
1. 在Landing Zone参考架构中，专门设计了一个安全运营账号，用于统一管理企业范围内多个账号的安全资源和服务，这就需要跨账号访问部署在其他业务账号下的安全服务，比如SA、HSS等，通过以下联邦认证和跨账号委托的方式可以实现该目标。首先安全管理员通过SSO登录到安全运营账号的控制台，再通过切换角色到业务账号，然后访问和管理业务账号的安全云服务。
   图8安全运营账号统一管理多个业务账号的安全云服务   
   ![](https://support.huaweicloud.com/landingzone-sag/zh-cn_image_0000001913249629.png) 
2. 另一个类似的场景是运维监控账号需要统一监控和运维企业范围内多个账号的资源，这也要求运维监控账号能够跨账号其他访问账号下的资源，通过以下联邦认证和跨账号委托的方式可以实现该目标。
   图9运维监控账号统一管理各业务账号的云资源   
   ![](https://support.huaweicloud.com/landingzone-sag/zh-cn_image_0000001913251469.png) 
 
