
# 资源治理
根据Landing Zone的参考架构，设计多账号下的资源治理方案，包含资源共享、资源标签、资源命名规范、资源管理、配额管理、镜像管理等。
#### 资源治理原则
华为云基于大量成功交付的项目，总结提炼了以下资源治理原则：
1. 使用企业项目而不是IAM项目进行资源的分组和管理，企业项目可以跨区域管理资源，支持资源的迁入迁出、资源的成本核算及分析，比IAM项目更灵活，更能满足企业的项目管理需求。
2. 针对每个企业项目，按照职责分别创建不同的用户组，如应用开发组、应用测试组和应用管理组、项目管理组等，并授予相应的权限；为每个项目成员在华为云上创建一个用户，并加入到对应的用户组。
3. 每个账号下创建一个公共项目，或者使用默认企业项目default，用于包含以下公共资源，供其他企业项目共享使用：
   - 成本很难分摊到其他企业项目的公共云资源，如共享带宽、云连接等
   
   - 账号范围内应该统一管理的云资源，如云备份、VPC等
   
   - 大量购买时更加优惠的资源套餐包，建议在账号范围内统一订购，而不是为每个企业项目单独订购
    
4. 部门（对应到华为云上的组织单元和子账号）作为独立核算的单元，不建议部门之间共享使用任何云资源，即使这两个部门是父子关系；但一个部门内的多个IT项目可以共享使用云资源，如共享带宽、云连接等。
5. 针对每个账号提供多种运行环境：生产环境、开发环境、测试环境，各个环境之间需要有一定的安全隔离措施，可以通过VPC建立隔离的运行环境。多个小应用系统可共享一个VPC，大型应用系统可以独占一个VPC。
   表1运行环境 
   | **运行环境名称** | **运行环境描述**                                                                                                                   |
   |:---|:---|
   | 生产环境       | 部署核心生产系统，如ERP、PLM、SCM等，以及数据仓库及大数据系统，大的应用系统（如大型ERP系统）可以独占一个生产环境。核心生产环境的重要性高，可用性和数据安全要求高，需要建立严格的容灾备份机制和数据安全保护体系。               |
   | 开发环境       | 部署开发系统，如Devops流水线、源代码管理系统等，开发环境的可靠性要求不高，对网络安全和数据安全要求也不高，酌情提供一定的数据备份和数据安全保护措施。在中小企业，开发环境可与测试环境合并。                             |
   | 测试环境       | 部署测试系统和准生产系统，测试人员在该环境完成系统上线之前的功能测试、性能测试、安全测试和集成测试等测试工作。测试环境的可靠性要求不高，对网络安全和数据安全要求也不高，酌情提供一定的数据备份和数据安全保护措施。在中小企业，开发环境可与测试环境合并。 |
      
   
6. 规划VPCDMA网络段的时候，需要考虑VPC之间的通信交互，如果两个VPC之间需要进行通信，这两个VPC的网段就不要互相冲突；有频繁交互关系的VPC尽量创建在同一个区域内，否则跨区域的VPC通信需要额外购买带宽包。
7. 定期（月度、季度、年度）统计分析各个组织单元、企业项目的资源利用率，及时发现资源空转、资源利用率低的情况，并及时删除空转资源、进行资源整合。
8. 为防止资源滥用，要限定账号（主账号和各个子账号）在华为云上各服务资源的配额，对该账号下用户所能申请的资源数量和容量做限制。
 
#### 资源共享
基于公共服务账号，梳理可以共享给其他账号的公共资源，比如NTP服务器、AD服务器、自建DNS服务器、OBS桶、IMS私有镜像、SWR容器镜像库、协作办公系统等。
#### 资源管理
在安全审计账号中，可以对整个组织的合规遵从进行统一管理，包括将多账号的资源配置快照归档到统一的桶中，管理员统一配置组织下各子账号的合规规则。
1. **统一合规策略配置**
   - RMS服务提供资源合规特性，帮助您快速创建一组合规规则，用于评估您的资源是否满足合规要求。
   
   - 在组织多账号场景下，当需要配置多个组织账号下的合规规则时，可以将多个子账号的合规规则设置API的访问权限委托给根账号。
   
   - 通过调用API的方式，使用根账号获取IAM token后，逐个调用子账号的API配置合规规则。
    
2. 多**账号的资源配置快照统一存储**
   - RMS服务支持每个账号在开启资源记录器并成功配置对象存储桶（OBS）后，RMS会定期（24小时）对您的资源进行快照并存储。
   
   - 在组织多账号场景下，当需要获取多个组织账号下的资源配置快照数据时，可先针对每个账号开启资源记录器，配置自己的对象存储桶（OBS）。再对每个桶配置根账号只读权限。
   
   - 通过调用API的方式，使用根账号获取IAM token后，逐个访问子账号的OBS桶获取资源快照文件
    
 
#### 资源标签
华为云的标签是由用户定义的键和值组成，标签可以更灵活地帮助用户管理资源，包括识别、搜索筛选等。
1. 在为华为云资源创建标记策略时，华为云有以下建议：
   - 请勿在标签中存储个人身份信息或其他机密或敏感信息
   
   - 对标签使用标准化的区分大小写格式，并跨所有资源类型一致地应用该格式
   
   - 虽然标签有长度规格上限，尽量不要每个标签都达到标签规格上限，标签长度能标明含义即可
   
   - 需要提前考虑规划好支持多种用途的标签准则，如管理资源访问控制、成本跟踪、自动化和组织
    
2. 标签命名限制和要求
   - 每个资源最多可以有 20 个用户创建的标签。注意：以 _sys_开头的系统创建标签将保留供华为云系统使用，并且不计入此限制
   
   - 对于每个资源，每个标签键都必须是唯一的，每个标签键只能有一个值
   
   - 标签键必须包含 1 到 128 个 Unicode 字符，并且以 UTF-8 格式表示
   
   - 标签值必须包含 0 到 255 个 Unicode 字符，并且以 UTF-8 格式表示
   
   - 标签键和值区分大小写。最佳实践是，决定利用标签的策略并在所有资源类型中一致地实施该策略。例如，决定是使用 HuaweiCloud、huaweicloud 还是 Huaweicloud，应保持相同的规则。避免含义模糊的标签出现
    
3. 常见标签策略
   - **资源治理标签**：用户可以配置标签来与资源一起显示，并且可以按标签进行搜索和筛选。使用TMS服务，用户可以按资源类型，标签范围过滤资源，给多个资源批量标记标签
   
   - **成本标签**：华为云的费用中心-\>成本中心可让用户在使用标签标识和管理资源的同时，还可以将标签激活为成本标签来归集成本。成本标签可以应用在成本分析和预算管理中
   
   - **自动化标签**：资源或特定于服务的标签通常用于在自动化任务时做资源过滤筛选。自动化标签用于选择加入或退出自动化任务，或识别要存档、更新或删除的资源的特定版本。例如，用户可以运行自动化脚本，这些脚本可在非工作时间内关闭开发环境以降低成本。在这种场景，可以通过给ECS服务的虚拟机资源标记标签标明是否需要被关闭虚拟机
    
4. 通过标签分析成本
   - 登录"成本中心"。
   
   - 选择"成本标签"。
   
   - 选中标签，进行激活或取消激活操作。
     图1标签分析成本   
     ![](https://support.huaweicloud.com/landingzone-sag/zh-cn_image_0000001912956089.png) 
   
   
   
   - 登录华为云控制台，进入成本中心。
   
   - 选择"成本分析"。
   
   - 通过成本标签进行成本数据筛选。
     图2通过成本标签维度进行成本数据汇总   
     ![](https://support.huaweicloud.com/landingzone-sag/zh-cn_image_0000001913035761.png)
     图3通过成本标签进行成本数据过滤   
     ![](https://support.huaweicloud.com/landingzone-sag/zh-cn_image_0000001866916514.png) 
    
 
#### 镜像管理
1. 虚拟机镜像管理 企业可以通过镜像导入或者公共镜像创建自己的私有镜像，然后将私有镜像共享给其他应用账号使用。
   
2. 公共镜像 企业可以通过公共镜像作为应用的基础镜像。通过公共镜像在创建出虚拟机后，用户可以根据安全和业务要求，在镜像里进行基础的业务配置或者安全配置。配置完成后，可以通过虚拟机创建私有镜像。
   - 华为云公共镜像中提供了多种类型开源版公共镜像：
   
   
   表2多种类型开源版公共镜像 
   |                 **CentOS**                 | 64bit：CentOS 6：6.10/6.9/6.8/6.5/ |
   |                 **CentOS**                 |
   |                 **CentOS**                 |
   |---|---|
   | 64bit：CentOS 7：7.9/7.8/7.7/7.6/7.4/7.3/7.2 |
   | 64bit：CentOS 8：8.2/8.1/8.0                 |
   | ****Ubuntu****                             | 64bit：Ubuntu 20.04/18.04/16.04   |
   | ****Debian****                             | 64bit：Debian 8：8.8.0             |
   | ****Debian****                             | 64bit：Debian 9：9.0.0             |
   | ****Debian****                             | 64bit：Debian 10：10.0.0           |
   | ****Debian****                             | 64bit：openSUSE Leap 15： 15.0     |
   | ****CoreOS****                             | 64bit：CoreOS 2079.4.0            |
   | ****FreeBSD****                            | 64bit：FreeBSD 11.0               |
   | ****openEuler****                          | 64bit：openEuler 20.03            |
      
   - 在市场镜像中，可以选择商用版linux和windows镜像：
   
   
   表3商用版linux和windows镜像 
   |                **windows**                 | Windows Server 2012 Standard/Datacenter |
   |                **windows**                 |
   |                **windows**                 |
   |                **windows**                 |
   |---|---|
   | Windows Server 2012 R2 Standard/Datacenter |
   | Windows Server 2016 Standard/Datacenter    |
   | Windows Server 2019 Standard/Datacenter    |
   | ****suse****                               | 64bit：SLES 12：12 SP5                    |
   | ****suse****                               | 64bit：SLES 15：15 SP1                    |
      
   
3. 镜像导入
   如果客户使用的镜像超出华为公共镜像范围，可以使用IMS服务，进行镜像导入，目前IMS支持系统盘、数据盘和ISO镜像导入能力；支持vhd、zvhd、vmdk、qcow2、raw、zvhd2、vhdx、qcow、vdi或qed格式镜像文件创建私有镜像
   图4镜像导入   
   ![](https://support.huaweicloud.com/landingzone-sag/zh-cn_image_0000001867076358.png) 
4. 镜像创建
   - 可以通过IMS服务创建系统盘、数据盘、整机镜像，创建完成后，镜像可用于复制、共享可以直接登录IMS Console操作。
   
   - 为便于用户定制化操作，可以Packer创建私有镜像：
     图5Packer创建私有镜像   
     ![](https://support.huaweicloud.com/landingzone-sag/zh-cn_image_0000001912956093.png) 
   
   
   
   - 使用Packer创建镜像，需要一个json格式的模板文件。在模板文件中，您需要指定构建器、配置器，还可以指定后处理器。在配置器中，您可以指定对源镜像的任何操作，可以指定安装软件也可以对相关配置做修改。
   
   
   ```
   {
   "builders": [{
   "type": "openstack",
   "identity_endpoint": "https://iam.xxx.com/v3",
   "tenant_name": "xxx",
   "domain_name": "domain_name",
   "username": "username",
   "password": "password",
   "ssh_username": "root",
   "region": "xxx",
   "image_name": "Ubuntu-image-updating-powered-by-Packer",
   "instance_name": "Ubuntu-image-updating-powered-by-Packer",
   "source_image": "f1dd2272-7041-479e-9663-646632b6ac00",
   "availability_zone": "xxx"，
   "flavor": "s3.medium.2",
   "use_blockstorage_volume": true,
   "networks": ["11d661c4-e41f-487f-a6f6-9b88d623dd5d"],
   "floating_ip": "8f686f9a-3408-4fdd-be75-ea768065800c"
   }],
   "provisioners": [{
   "inline": [
   "apt-get update -y"
   ],
   "inline_shebang": "/bin/sh -x",
   "type": "shell",
   "skip_clean": true
   }],
   "post-processors": [{
   "strip_path": true,
   "output": "packer-template-ubuntu-updating-result.log",
   "type": "manifest"
   }]
   }
   ```
   - 其中：tenant_name、region、availability_zone、flavor、networks、floating_ip均为创建私有镜像时使用的云服务器的属性信息
    
5. 镜像共享 用户A获取用户B的项目ID之后，可以将指定的私有镜像共享给用户B。共享镜像可以分为批量镜像共享和单个镜像共享两种方式，用户可以按照需要进行选择。注意：共享镜像前，请确认私有镜像已清除敏感数据和文件。
   图6共享镜像   
   ![](https://support.huaweicloud.com/landingzone-sag/zh-cn_image_0000001913035765.png) 
 
#### 资源命名规范
本章节提供了关于云上资源统一命名的参考。命名约定的使用，对客户在高效管理云上资源上非常重要。制定标准和一致的命名规范，能使客户在云上资源的成本分析、自动化、安全控制等方面的管理更加清晰和便捷。
1. **命名原则：**
   - 命名规则是可扩展的
   
   - 确保在一定范围内的命名是唯一的
   
   - 通过资源命名便于分类，譬如为监控、安全控制等提供可见性
     表4计算资源命名规范 
     | 华为云资源       | 资源名规范                               | Example                                                           | Comment                                                          |
     |:---|:---|:---|:---|
     | ECS         | ecs-{appname}-{apptype}-{env}       | ecs-adv-app-dev ecs-adv-cache-prod | 名称的长度为1～64位字符；支持中文字符、英文字母、数字及"_"、"-"、"."。                        |
     | Image       | Img-{appname}-{apptype}-{env}       | ims-adv-app-dev                                                   | 名称的长度为1～128位字符；支持中文字符，英文字母，数字，特殊字符包含"_"、"-"、"."、空格。名称的首尾字母不能为空格。 |
     | EVS         | disk-{appname}-{env}                | ims-adv-dev                                                       | 名称的长度为1～255位字符；支持中文字符，英文字母，数字，特殊字符包含"_"、"-"、"."、空格。              |
     | Snapshot    | ss-{appname}- {env}-{datagenerated} | ss-adv-dev-20220101                                               | 名称的长度为1～255位字符；支持中文字符，英文字母，数字，特殊字符包含"_"、"-"、"."、空格。              |
     | AutoScaling | as-{appname}-{env}                  | as-adv-dev                                                        | 名称的长度为1～64位字符，只能包含中文、字母、数字、"_"、"-"。                              |
        
     表5网络资源命名规范 
     | 华为云资源  | 资源名规范                           | Example        | Comment                                                                                                                                                                                                                                       |
     |:---|:---|:---|:---|
     | VPC    | vpc-{appname}-{env}             | vpc-adv-dev    | 名称的长度为1～64位字符，只能包含中文、字母、数字、"_"、"-"、"."。                                                                                                                                                                                                       |
     | Subnet | sn-{appname}-{env}-{SubnetType} | sn-adv-dev--db | - 1、子网类型：、app、elb、db、cache、web  - 2、名称的长度为1～64位字符，只能包含中文、字母、数字、"_"、"-"、"."。   |
     | ELB    | elb-{appname}-{env}             | elb-adv-dev    | 名称的长度为1～255位字符，只能包含中文、字母、数字、"_"、"-"、"."。                                                                                                                                                                                                      |
     | EIP    | eip-{appname}-{env}             | eip-adv-dev    | 名称的长度为1～64位字符，只能包含中文、字母、数字、"_"、"-"、"."。                                                                                                                                                                                                       |
     | NAT    | nat-{appname}-{env}             | nat-adv-dev    | 名称的长度为1～64位字符，只能包含中文、字母、数字、"_"、"-"、"."。                                                                                                                                                                                                       |
        
     表6存储资源命名规范 
     | 华为云资源 | 资源名规范                | Example      | Comment                                                                                                                                                                                                                                                        |
     |:---|:---|:---|:---|
     | OBS   | obs-{ appname}-{env} | obs-logs-dev | 1、名称的长度为1～64位字符，只能包含中文、小写字母、数字、"-"、"." 2、禁止两个英文句号（.）相邻，禁止英文句号（.）和中划线（-）相邻，禁止以英文句号（.）和中划线（-）开头或结尾 3、禁止使用IP地址 4、如果名称中包含英文句号（.），使用虚拟主机方式HTTPS访问OBS，会导致证书校验失败 |
        
     
    
 
