亚马逊AWS官方博客

Cloud Foundations 演示视频集之一:从安装部署到日常运维

Cloud Foundations 解决方案经过两年多的发展完善,功能日益丰富,涵盖从基础着陆区的安全基线配置到跨区域共享网络、云资源自动化管理、多维度安全治理等,涉及云上环境基础设施运维管理各个角落。涉及面广是一方面,某些功能项(如共享网络联通)对相关云服务和资源的技术适配也较深入和复杂。诚然,自动化及简便化一直是本方案最重要的核心原则和设计思想之一。所以本文特别归纳并演示 Cloud Foundations 生命周期和运维管理的数个重要过程和关键步骤,以便读者对其有更直观了解和更详实认识。将来会视情况推出续集。

以下为演示视频列表,视频以时间为序进行批注,粗体字标示主要功能点:

  1. 安装和自动化部署 Cloud Foundations;
  2. 自动化部署状态机和部署流水线
  3. Cloud Foundations 用户界面控制台;
  4. 账户工厂批量新建亚马逊云科技账户;
  5. 定义跨账户共享网络联通并部署;
  6. 新增 VPC 并通过中转网关与现有网络架构联通;
  7. 产品工厂新建账户蓝图:策略角色权限集和目录组;
  8. 为所有账户变更即有备份计划并新建备份计划;
  9. 产品工厂新建服务控制策略并附加至组织部门;
  10. 关闭账户加载基线配置,以保留默认 VPC 为例;
  11. 产品工厂为所有账户新建托管配置规则
  12. 产品工厂新建托管组织配置规则

1. 安装和自动化部署 Cloud Foundations

此视频演示登记并触发 Cloud Foundations 安装部署至客户云上环境的主要过程。该过程由亚马逊云科技顾问根据项目情况的调研结果即《Cloud Foundations 实施规划表》进行实施。演示视频:

演示视频文件链接

主要步骤:

  1. [00'00"]  打开登记自动化文档,点击执行自动化
  2. [00'10"] 填写部署主区域北京和其他管治区域宁夏;
  3. [00'35"] 填写管理、基础、日志、安全等四核心账户
  4. [01'05"] 填写密码策略如过期天数和最小长度;
  5. [01'15"] 填写存储桶日志组生命周期管理;
  6. [01'30"] 选择各安全基线配置开启或关闭状态;
  7. [01'50"] 点击执行开始安装部署 Cloud Foundations。

2. 自动化部署状态机和部署流水线

此视频演示承担 Cloud Foundations 自动化部署任务的状态机及其主要流水线。该过程由顾问协助客户,或者客户授权顾问监视部署状态。演示视频:

演示视频文件链接

主要步骤:

  1. [00'00"] 打开联合身份登陆页,以流水线管理角色登陆基础账户
  2. [00'20"] 打开 Amazon Step Functions 控制台内的部署状态机
  3. [00'30"] 打开最近一次成功执行,耗时17分15秒;
  4. [00'50"] 部署状态机协调 7 条流水线有序执行;
  5. [01'00"] 展示初始化流水线及其构建项目;
  6. [01'35"] 展示安装流水线及其构建项目;
  7. [02'05"] 展示额外流水线及其构建项目;
  8. [02'40"] 展示权限边界管理流水线及其构建项目;
  9. [03'05"] 展示非托管规则流水线及其构建项目;
  10. [03'35"] 展示其他区域管治流水线及其构建项目;

3. Cloud Foundations 用户界面控制台

此视频演示 Cloud Foundations 自带用户界面控制台。目前该控制台以信息展示为主,暂不支持变更操作,变更主要依赖亚马逊云科技提供的控制台进行。详见《Cloud Foundations 用户使用手册》第十四节。演示视频:

演示视频文件链接

主要步骤:

  1. [00'00"] 打开用户界面 Amazon CloudFront 分发地址,以 cf-viewer 用户登陆;
  2. [00'20"] 展示仪表盘页信息概览,包括主要资源计数、部署区域、组件版本等;
  3. [00'40"] 展示已安装部署的流水线产品
  4. [01'00"] 展示所有管控账户含核心账户;
  5. [01'15"] 展示配置规则检测及修正列表;
  6. [01'35"] 展示组织树形结构,特别有助于虚拟组织;
  7. [01'50"] 展示预置管控角色列表;
  8. [02'10"] 展示备份计划列表;
  9. [02'20"] 展示账户加载基线配置列表;

4. 账户工厂批量新建亚马逊云科技账户

此视频演示利用Cloud Foundations 账户工厂批量新建亚马逊云科技账户的主要步骤,该步骤需要基于 Amazon Organizations 原生组织部署之上。详见《Cloud Foundations 用户使用手册》第十节。演示视频:

演示视频文件链接

主要步骤:

  1. [00'00"] 打开联合身份登陆页,以目录管理角色登陆基础账户
  2. [00'15"] 打开 Amazon Service Catalog 控制台内的产品目录
  3. [00'30"] 选择账户工厂产品,点击启动产品
  4. [00'40"] 输入预置产品名称 department-account-240626,该名称唯一且与此次任务相关;
  5. [00'50"] 输入账户名称电子邮件地址,一次最多新建 5 个账户;
  6. [01'20"] 输入即有组织部门名称或者标识,新账户会置于该部门之下;
  7. [01'25"] 输入环境变量,账户工厂可为新账户附加标签;
  8. [01'45"] 点击启动产品

视频所用账户环境变量:

{ "tags": { "DEPARTMENT": "clinic" } }

5. 定义跨账户共享网络联通并部署

此视频演示利用 Cloud Foundations 共享网络联通定义网络并一键部署。网络定义包含 1 个中转网关和 2 个 VPC(一轴一辐)部署于 1 个区域。读者可以根据实际情况定义更贴合更复杂的网络架构,详见《Cloud Foundations 用户使用手册》第十二节。演示视频:

演示视频文件链接

主要步骤:

  1. [00'00"] 打开联合身份登陆页,以产品管理角色登陆基础账户
  2. [00'15"] 打开 Amazon AppConfig 控制台内的 Cloud Foundations应用程序
  3. [00'35"] 点击创建配置,选择自由格式配置,输入配置文件名称 network-vpc,点击下一步
  4. [00'55"] 选择 JSON 格式,输入网络定义内容,点击下一步,之后点击保存并稍后部署
  5. [02'00"] 打开 Amazon Service Catalog 控制台内的产品目录
  6. [02'15"] 选择流水线工厂产品,点击启动产品
  7. [02'30"] 输入预置产品名称,该名称唯一且与此次任务相关;
  8. [02'40"] 输入流水线产品路径 network/vpc;
  9. [02'50"] 选择单账户模式,输入部署账户为网络账户,点击启动产品
  10. [03'30"] 打开控制台预置产品列表,查看 cf-network-vpc 产品状态为可用
  11. [03'55"] 打开 Amazon CodePipeline 控制台,打开网络部署流水线;
  12. [04'20"] 点击手动批准构建的审阅,选择批准,点击提交
  13. [04'55"]VPC 只读角色登陆网络账户
  14. [05'10"] 打开 Amazon VPC 控制台查看新建的 VPC 及其流日志
  15. [06'15"] 查看新建的各子网
  16. [06'30"] 查看新建的中转网关,中转网关挂载,中转网关路由表

视频所用网络定义(有微调):

{
  "vpcs": {
    "nat": {
      "cidr": "192.168.0.0/16", "enable_igw": true, "enable_nat": true,
      "subnets": [[[12, 0], [12, 1]], [[8, 1],  [8, 2]]]
    },
    "sandbox": {
      "cidr": "10.0.0.0/16", "accounts": ["123456789012"],
      "subnets": [[[12, 0], [12, 1]], [], [[8, 3],  [8, 4]]]
    }
  },
  "tgw": {
    "enabled": true,
    "cidr": "10.0.0.0/8",
    "route_tables": {
      "pre": { "associations": ["sandbox"], "routes": { "*": "nat", "tgw": "blackhole" }},
      "post": { "associations": ["nat"], "propagations": ["sandbox"] }
    }
  }
}

6. 新增 VPC 并通过中转网关与现有网络架构联通

此视频演示在即有网络内新增 VPC 并通过中转网关与第五节网络架构联通的主要步骤。该新 VPC 会创建在网络账户,其子网会共享给日志账户。详见《Cloud Foundations 用户使用手册》第十二节。演示视频:

演示视频文件链接

主要步骤:

  1. [00'00"] 打开联合身份登陆页,以产品管理角色登陆基础账户
  2. [00'15"] 打开 Amazon AppConfig 控制台内的 Cloud Foundations 应用程序
  3. [00'30"] 打开 network-vpc 自由格式配置配置文件
  4. [00'40"] 编辑网络定义,加入新 VPC 内容并更改中转网关检查前后路由表关联与传播;
  5. [01'30"] 点击 network-vpc 配置文件的创建,输入新的网络定义,点击创建托管的配置版本
  6. [02'10"] 打开 Amazon CodePipeline 控制台,打开网络部署流水线;
  7. [02'30"] 点击手动批准构建的审阅,选择批准,点击提交
  8. [03'15"]只看角色登陆日志账户
  9. [03'30"] 打开 Amazon VPC 控制台查看新建并分享过来的 VPC 及其子网
  10. [04'15"] 查看新建并分享过来的各路由表

视频所用网络定义(有微调):

{
  "vpcs": {
    "nat": {
      "cidr": "192.168.0.0/16", "enable_igw": true, "enable_nat": true,
      "subnets": [[[12, 0], [12, 1]], [[8, 1],  [8, 2]]]
    },
    "sandbox": {
      "cidr": "10.0.0.0/16",
      "accounts": ["123456789012"],
      "subnets": [[[12, 0], [12, 1]], [], [[8, 3],  [8, 4]]]
    },
    "logs": {
      "cidr": "10.1.0.0/16",
      "accounts": ["123456789013"],
      "subnets": [[[12, 0], [12, 1]], [], [[8, 3],  [8, 4]]]
    }
  },
  "tgw": {
    "enabled": true,
    "cidr": "10.0.0.0/8",
    "route_tables": {
      "pre": { "associations": ["sandbox", "logs"], "routes": { "*": "nat", "tgw": "blackhole" } },
      "post": { "associations": ["nat"], "propagations": ["sandbox", "logs"] }
    }
  }
}

7. 产品工厂新建账户蓝图:策略角色权限集和目录组

此视频演示利用 Cloud Foundations 产品工厂定义新账户蓝图,以创建和业务相关的策略、角色、权限集和目录组。读者可举一反三定义其他产品模板,即可构建贴合业务实际的其他新账户蓝图,亦可定义更复杂的工作负载整体架构,实现云资源的自动化部署和全周期管理。详见《Cloud Foundations 用户使用手册》第十一节。演示视频:

演示视频文件链接

主要步骤:

  1. [00'00"] 打开联合身份登陆页,以产品管理角色登陆基础账户
  2. [00'15"] 打开 Amazon AppConfig 控制台内的产品应用程序
  3. [00'35"] 点击创建配置,选择自由格式配置,输入配置文件名称 product-blueprint-s3access,点击下一步
  4. [01'00"] 选择 JSON 格式,输入产品定义内容,点击下一步,之后点击保存并稍后部署
  5. [02'10"] 打开 Amazon Service Catalog 控制台内的产品目录
  6. [02'20"] 选择产品工厂产品,点击启动产品
  7. [02'35"] 输入预置产品名称 product-blueprint-s3access-sandbox,该名称唯一且与此次任务相关;
  8. [02'50"] 输入应用程序配置文件名称 product-blueprint-s3access;
  9. [02'55"] 输入环境变量即部门信息,阶段为沙盒账号,点击启动产品
  10. [03'20"] 打开控制台预置产品列表,查看 product-blueprint-s3access-sandbox 产品状态为可用
  11. [03'40"] 打开 Amazon CodePipeline 控制台,打开蓝图产品部署流水线;
  12. [03'55"] 点击手动批准构建的审阅,选择批准,点击提交
  13. [04'35"]身份中心管理角色登陆安全账户
  14. [04'50"] 打开 Amazon IAM Identity Center 控制台内的权限集
  15. [05'05"] 查看新建的权限集
  16. [05'30"]只看角色登陆沙盒账户
  17. [05'40"] 打开 Amazon IAM 控制台内的角色
  18. [05'55"] 查看新建的 IAM 和 SSO 角色

视频所用产品定义:

[
  [{
    "accounts": ["${STAGE}"],
    "service": "iam",
    "policies": {
      "s3-${DEPARTMENT}": {
        "inline": [{
            "actions": ["s3:ListBucket*", "s3:GetBucket*"],
            "resources": ["arn:${PARTITION}:s3:::my-${DEPARTMENT}-data-${STAGE}"]
          }, {
            "actions": ["s3:GetObject*"],
            "resources": ["arn:${PARTITION}:s3:::my-${DEPARTMENT}-data-${STAGE}/*"]
        }]
      }
    },
    "roles": {
      "ec2-${DEPARTMENT}": {
        "trusts":  ["ec2"],            "customer": ["s3-${DEPARTMENT}"],
        "managed": ["ViewOnlyAccess"], "services": ["lambda"]
      },
      "lambda-${DEPARTMENT}": {"trusts": ["lambda"], "customer": ["s3-${DEPARTMENT}"]}
    }
  }],
  [{
    "service": "sso",
    "permissions": {
      "s3-${DEPARTMENT}": {
        "customer": ["$.s3-${DEPARTMENT}"], "managed": ["ViewOnlyAccess"]
      }
    },
    "groups": {"s3-${DEPARTMENT}": {"s3-${DEPARTMENT}": ["${STAGE}"]}}
  }]
]

视频所用环境变量:

{ "DEPARTMENT": "clinic" }

8. 为所有账户变更即有备份计划并新建备份计划

此视频演示通过额外流水线为所有账户变更即有备份日计划,并新建季度备份计划。详见《Cloud Foundations 用户使用手册》第十七节。读者即可通过备份保管库和计划流水线产品为所有账户配置备份计划,亦可通过产品工厂的备份计划资源为指定账户和区域单独部署备份计划。演示视频:

演示视频文件链接

主要步骤:

  1. [00'00"] 打开联合身份登陆页,以参数管理角色登陆基础账户
  2. [00'15"] 打开 Amazon Systems Manager 控制台内的参数库
  3. [00'40"] 搜索 backup 并打开备份计划参数;
  4. [00'50"] 点击编辑,修改即有备份计划,并新增备份计划,点击保存更改
  5. [02'10"]流水线管理角色登陆基础账户
  6. [02'30"] 打开 Amazon CodePipeline 控制台,打开额外流水线
  7. [02'55"] 点击发布更改,之后点击发布,等待执行完备份构建;
  8. [03'35"]只看角色登陆日志账户
  9. [03'50"] 打开 Amazon Backup 控制台内的备份计划
  10. [04'20"] 查看日计划启动分钟已改为 9
  11. [04'00"] 查看新建的季度计划

视频所用季度备份计划定义:

{
  "Quarterly": {
    "cron": "cron(0 0 1 */3 ? *)",
    "lifecycle": { "cold_days": 180, "delete_days": 365 }
  }
}

9. 产品工厂新建服务控制策略并附加至组织部门

此视频演示利用 Cloud Foundations 产品工厂定义服务控制策略并附加到组织部门。读者可按适当粒度将不同服务控制策略定义在一个或多个产品中,充分利用阶段和环境变量,集中高效对不同组织部门的策略附加进行集中管理。演示视频:

演示视频文件链接

主要步骤:

  1. [00'00"] 打开联合身份登陆页,以产品管理角色登陆基础账户
  2. [00'15"] 打开 Amazon AppConfig 控制台内的产品应用程序
  3. [00'30"] 点击创建配置,选择自由格式配置,输入配置文件名称 product-scp,点击下一步
  4. [00'50"] 选择 JSON 格式,输入产品定义内容,点击下一步,之后点击保存并稍后部署
  5. [02'00"] 打开 Amazon Service Catalog 控制台内的产品目录
  6. [02'15"] 选择产品工厂产品,点击启动产品
  7. [02'25"] 输入预置产品名称 product-scp,该名称唯一且与此次任务相关;
  8. [02'35"] 输入应用程序配置文件名称 product-scp,点击启动产品
  9. [02'50"] 打开控制台预置产品列表,查看 product-scp 产品状态为可用
  10. [03'05"] 打开 Amazon CodePipeline 控制台,打开服务控制策略产品部署流水线;
  11. [03'25"] 点击手动批准构建的审阅,选择批准,点击提交
  12. [04'20"]只读角色登陆基础账户
  13. [04'35"] 打开 Amazon Organizations 控制台内的策略管理亚马逊云科技账户
  14. [04'50"] 点击产品定义中指定附加策略的组织部门
  15. [05'00"] 点击策略卡,之后点击新建并附加的服务控制策略,查看其内容;

视频所用产品定义(有微调):

{
  "service": "organizations",
  "policies": {
    "ec2-deny-run-instances": {
      "inline": [{ "effect": "Deny", "actions": ["ec2:*"] }],
      "attaches": ["${DepartmentClinic}"]
    }
  }
}

对应的环境变量:

{ "DepartmentClinic": "ou-1234-12345678" }

10. 关闭账户加载基线配置,以保留默认 VPC 为例

此视频演示通过安装流水线关闭某个账户加载基线配置以达到对某账户某配置的精细化管理。Cloud Foundations 每条基线配置均可按需开关,以最贴切状态适应客户云上环境部署构建需求,并将对即有账户或环境的影响降至最低。详见《Cloud Foundations 用户使用手册》第四节。演示视频:

演示视频文件链接

主要步骤:

  1. [00'00"] 打开联合身份登陆页,以参数管理角色登陆基础账户
  2. [00'15"] 打开 Amazon Systems Manager 控制台内的参数库
  3. [00'25"] 搜索 baseline 并打开账户加载基线配置参数;
  4. [00'45"] 点击编辑,修改参数略过删除基础账户默认 VPC,点击保存更改
  5. [01'20"] 查看修改后的账户加载基线配置参数
  6. [01'30"]流水线管理角色登陆基础账户
  7. [01'40"] 打开 Amazon CodePipeline 控制台,打开安装流水线
  8. [02'00"] 点击发布更改,之后点击发布,等待执行完基线构建;
  9. [02'20"] 查看基础账户的基线构建确已略过删除默认 VPC;

视频所用基线配置开关定义:

{ "default_vpc": ["123456789012"] }

11. 产品工厂为所有账户新建托管配置规则

此视频演示利用 Cloud Foundations 产品工厂定义托管配置规则并部署于所有账户。此处利用通配符星号将一个定义适用于所有活跃账户,通过环境变量灵活设置最大天数而非硬编码于定义中。结合本文第七、九节以及博客[1, 2]不难看出,灵活利用产品工厂功能可以在不同场景和特定领域内对云资源进行有意运用和高效管理。演示视频:

演示视频文件链接

主要步骤:

  1. [00'00"] 打开联合身份登陆页,以产品管理角色登陆基础账户
  2. [00'15"] 打开 Amazon AppConfig 控制台内的产品应用程序
  3. [00'35"] 点击创建配置,选择自由格式配置,输入配置文件名称 product-config-rules,点击下一步
  4. [00'50"] 选择 JSON 格式,输入产品定义内容,点击下一步,之后点击保存并稍后部署
  5. [01'45"] 打开 Amazon Service Catalog 控制台内的产品目录
  6. [02'00"] 选择产品工厂产品,点击启动产品
  7. [02'10"] 输入预置产品名称 product-config-rules,该名称唯一且与此次任务相关;
  8. [02'20"] 输入应用程序配置文件名称 product-config-rules;
  9. [02'30"] 输入环境变量即最大天数,点击启动产品
  10. [02'50"] 打开控制台预置产品列表,查看 product-config-rules 产品状态为可用
  11. [03'10"] 打开 Amazon CodePipeline 控制台,打开托管配置规则产品部署流水线;
  12. [03'35"] 点击手动批准构建的审阅,选择批准,点击提交
  13. [04'10"]只读角色登陆基础账户
  14. [04'25"] 打开 Amazon Config 控制台内的规则
  15. [04'35"] 查看新建的托管配置规则,其中名称和天数来自环境变量;
  16. [05'05"]只读角色登陆沙盒账户
  17. [05'15"] 打开 Amazon Config 控制台内的规则
  18. [05'35"] 查看新建的托管配置规则,其中名称和天数来自环境变量;

视频所用产品定义:

{
  "service": "config",
  "accounts": ["*"],
  "rules": {
    "ec2-stopped-${AllowedDays}d": {
      "rule": "EC2_STOPPED_INSTANCE",
      "types": ["AWS::EC2::Instance"],
      "parameters": { "AllowedDays": "${AllowedDays}" }
    }
  }
}

视频所用环境变量:

{ "AllowedDays": 14 }

12. 产品工厂新建托管组织配置规则

此视频演示利用 Cloud Foundations 产品工厂定义托管组织规则并部署于安全账户,即配置规则的多账户委派管理员。Amazon Config 会自动将组织规则部署于组织内所有非排出账户。本节内容和上一节达到相似目的,但使用产品工厂的不同资源,读者可根据实际情况做出具体选择。演示视频:

演示视频文件链接

主要步骤:

  1. [00'00"] 打开联合身份登陆页,以产品管理角色登陆基础账户
  2. [00'15"] 打开 Amazon AppConfig 控制台内的产品应用程序
  3. [00'25"] 点击创建配置,选择自由格式配置,输入配置文件名称 product-config-orgrules,点击下一步
  4. [00'45"] 选择 JSON 格式,输入产品定义内容,点击下一步,之后点击保存并稍后部署
  5. [01'25"] 打开 Amazon Service Catalog 控制台内的产品目录
  6. [01'35"] 选择产品工厂产品,点击启动产品
  7. [01'45"] 输入预置产品名称 product-config-orgrules,该名称唯一且与此次任务相关;
  8. [02'00"] 输入应用程序配置文件名称 product-config-orgrules;
  9. [02'05"] 输入环境变量即最大天数,点击启动产品
  10. [02'20"] 打开控制台预置产品列表,查看 product-config-rules 产品状态为可用
  11. [02'35"] 打开 Amazon CodePipeline 控制台,打开托管组织配置规则产品部署流水线;
  12. [03'00"] 点击手动批准构建的审阅,选择批准,点击提交
  13. [03'30"]配置管理角色登陆基础账户
  14. [03'45"] 打开 Amazon Config 控制台内的规则
  15. [04'00"] 查看新建的托管组织配置规则,其中名称和天数来自环境变量;
  16. [04'25"]配置管理角色登陆日志账户
  17. [04'40"] 打开 Amazon Config 控制台内的规则
  18. [04'50"] 查看新建的托管组织配置规则,其中名称和天数来自环境变量;

视频所用产品定义:

{
  "service": "config",
  "org-rules": {
    "ec2-stopped-${AllowedDays}d": {
      "rule": "EC2_STOPPED_INSTANCE",
      "types": ["AWS::EC2::Instance"],
      "parameters": { "AllowedDays": "${AllowedDays}" }
    }
  }
}

视频所用环境变量:

{ "AllowedDays": 14 }

总结

本文通过 12 个视频演示了 Cloud Foundations 从安装部署到日常运维的数个重要方面。从这些视频中读者可以具体了解本方案的主体概括和重要功能。特别是产品工厂模块,如果灵活运用可以转化成更丰富、实用和专业的云上环境管控利器,例如账户启动蓝图、服务控制策略和托管配置规则管理等。限于篇幅,本方案还有许多实用功能和深度运用未能一一呈现。未来会根据读者反馈和项目总结有针对性的推出续集,敬请期待。

参考资料

  1. 博客:借助 Cloud Foundations 一键部署弹性堡垒机安全合规地实现会话管理及端口转发,2023-09
  2. 博客:借助 Cloud Foundations 产品工厂规划设计并一键部署云上多账户访问控制及权限策略等基础设施资源,2024-03

本篇作者

Clement Yuan

亚马逊云科技专业服务部顾问。曾在亚马逊美国西雅图总部工作多年,就职于 Amazon Relational Database Service (RDS) 关系型数据库服务开发团队。拥有丰富的软件开发及云上运维经验。现负责业务持续性及可扩展性运行、企业应用及数据库上云和迁移、云上灾难恢复管理、云上良好架构框架等架构咨询、方案设计及项目实施工作。

刘育新

亚马逊云科技 ProServe 团队高级顾问,长期从事企业客户入云解决方案的制定和项目的实施工作。