亚马逊AWS官方博客
中小企业上云采用多账户策略的初级架构
注:本文是中小企业上云系列博客的第二篇,读者可点击链接阅读上一篇 《中小企业上云采用多账户策略的优势》。
在中小企业上云初期,我们建议先建立一个最小的多账户结构,企业可以根据业务和组织的需求,再逐渐扩展。本文将主要介绍在构建一个初级多账户结构时所需考虑的最小功能模块。
注意:本文所推荐的架构和设计是根据 2023 年 7 月亚马逊云科技中国区的服务情况进行撰写,随着亚马逊云科技中国区服务的更新迭代,您需要根据当时已有的服务功能和自身需求做灵活调整。
使用 Amazon Organizations 构建多账户结构
在建立多账户结构时,推荐使用 Amazon Organizations。通过 Amazon Organizations,不仅可以轻松的、集中式的创建和管理账户,还能借助于 Amazon Organizations 与其他亚马逊云科技服务的集成功能,提供集中式的配置、安全控制、审计和资源共享等能力,例如 Amazon Resource Access Manager (RAM)、标签策略等。
由于 Amazon Organizations 服务只能部署于管理账户(也称为付款账户),若您的账户属于合作伙伴托管的模式,为了能够使用 Amazon Organizations 在多账户管理上的安全性和便捷性,我们推荐由合作伙伴为您的企业创建一个独立的管理账户,并授予相应的权限让您的企业能够访问和管理 Amazon Organizations,您可以点击链接详细了解。
上图展示了一个中小企业上云所推荐的最小多账户结构,其中包含两种类型的账户:一种是“平台级别账户”,其主要用来统一管理云上所有账户的安全、日志、运维以及治理功能;其他类型账户将主要承载具体业务相关的资源。我们建议通过 Organizational Unit(OU)将功能类似或具有同一安全标准的账户进行逻辑分组,以便在 OU 级别针对一组账户施加同一控制策略。上图中的多账户结构主要包括:
- 核心 OU:核心 OU 不应该包含工作负载相关的账户,只含有针对多账户平台的治理、安全等核心功能的账户,核心功能账户应至少包括日志账户和安全账户。
- 日志账户:日志账户是为了集中存放和审计所有账户的日志,建议将日志帐户的访问权限限制为负责合规和调查的团队及其相关的安全或审计工具。
- 安全账户:安全账户应限于安全与合规团队访问,该账户还对其他所有账户拥有只读和管理员的跨账户访问权限。这些角色旨在由安全和合规团队用于查看或执行特定的安全操作,同时该账户还会收集其他所有账户产生的安全事件,安全管理员可订阅相应的 Amazon SNS Topic 接收安全事件通知。
- Sandbox OU:Sandbox OU 中的账户主要提供给初次接触亚马逊云科技的开发运维人员,让其能够自由探索和试用云服务特性以及相关工具,这些账户的网络通常与企业核心网络断开。同时为了控制这些账户的开支,通常会限制创建费用较高的资源,并定期清理账户内资源。
- Workloads OU:Workloads OU 下的账户承载企业的工作负载,企业可以根据自身的业务需求创建不同的工作负载账户。由于不同的软件开发生命周期(SDLC)会有不同的安全控制和标准(例如:开发和生产),我们建议根据软件开发生命周期将这些 Workload 账户进行逻辑划分,分别划分到不同的软件开发生命周期的子 OU,以便施加不同的控制策略。注意:不建议直接按照公司的组织结构来创建相对应的账户(例如:账户 1 定位为组 1 的生产账户,其中包括多个应用),原因是当团队的组织结构调整时,需要将应用从一个账户迁移到另外一个账户往往比较困难,相反如果账户是通过应用进行划分(例如:账户 A 定位为应用 A 的生产账户),通过修改账户的访问权限会容易很多。
建立安全的账户访问机制
在传统的单账户模型中,为了简化管理,企业往往选择直接通过 IAM 用户登录和访问账户内的资源。但是在多账户的环境中,随着账户数量的增加,管理大量的 IAM 用户变得愈发困难,同时由于 IAM 用户的密钥泄漏而导致的安全风险显著增加。在企业级的环境中,我们建议尽可能不要使用 IAM 用户,而采用企业已有的或者第三方的身份提供商(IdP),使用 IAM 联合身份认证的单点登录(SSO)方式安全、方便的访问所有账户。
有关 IAM 联合身份认证的功能您可以访问链接进行了解,对于多账户场景下的 IAM 联合身份认证实现案例可以参考博客进行了解。
建立集中式的安全视角
在多账户环境中,由于云上所有的工作负载分布于不同的账户。从开发视角看,能够在保证了安全的前提下同时给业务带来了敏捷性。但是从云上治理的角度看,我们建议构建一个统一的视角来管理云上核心的资源和安全事件行为。这些云上治理和安全能力至少应包括:
- 集中化的服务日志:集中化的服务日志可以确保企业能够随时满足相关的审计和合规性调查要求,为此我们建议应至少收集所有账户内 CloudTrail 和 Config 这些关于账户内行为和资源相关的日志。这些日志将存储在日志账户的 S3 桶里。
- 集中安全事件通知:我们建议采集所有可能影响到账户安全的事件,并通过部署于安全账户中的 SNS 进行及时的通知。
- IAM Break Glass Role:根据前面所介绍的最佳实践,我们建议采用联合身份认证的方式登陆所有账户,但也需要提供一种机制确保在联合身份认证失效的时候,云管理员也能够临时登陆账户进行操作。
为账户设置安全控制基线
在多账户的模型中,我们将为不同的工作负载创建不同的账户,同时赋予相应开发人员对应的权限。为了确保平台整体的安全性以及可治理能力,我们建议在交付工作负载账户给开发人员之前,针对每一个账户实施必要的安全控制,确保账户内的资源处于可控、可管理的状态。常见的控制包括:
- 删除 default VPC:账户内提供的默认 VPC 将自动拥有互联网访问权限,从网络安全角度出发,建议只针对需要访问或者发布到互联网的应用,才开启相应的互联网访问权限。因此建议删除所有账户内默认 VPC。
- 建立基础的监控指标:针对账户内一些高风险的潜在事件(例如 IAM 用户登陆、CloudTrail/Config 服务的停用),建议通过 CloudWatch 捕捉这样的高危事件,并集中转发到安全账户进行处理和通知。
- 开启基础安全服务:亚马逊云科技提供了一系列安全服务来帮助检测账户的安全风险以及满足合规方面需求,建议开启并采用基础的安全服务:
- SecurityHub:Amazon Security Hub 是一项云安全状况管理服务,可执行安全最佳实践检查,整合警告并支持自动修复。
- GuardDuty:Amazon GuardDuty 是一项威胁检测服务,它持续监控账户和工作负载的恶意活动,并提供详细的安全侦察结果以实现可见性和补救
- 限制生产账户权限:对于部署于生产环境的业务,应严格限制生产账户的访问。我们建议相应业务的开发人员默认只能拥有生产账户的只读权限,所有的生产环境的部署应通过自动化流水线完成。
- SCP(Service Control Policy):SCP 作为 Amazon Organizations 提供的一个重要功能,可以控制亚马逊云科技账户的最大权限。在多账户场景中,通过限制每个账户所拥有的最大权限,可以极大提升云上的安全、治理能力。常见的 SCP 控制策略您可以参考链接。注意:本文撰写之时,SCP 功能还未在亚马逊云科技中国区上线,您可以暂时考虑 SCP 替代方案,后续再迁移至原生 SCP 服务。
建立基于账户的基本成本控制机制
亚马逊云科技绝大多数的服务都提供按实际使用量付费的定价模式,给中小企业带来了很高的灵活度,企业能够根据自身业务情况快速调整从而节省开支。正因为灵活的按需付费的模式,若没有良好的云上成本控制机制,可能产生预期之外的费用导致成本失控。在多账户的环境中,我们建议建立基础的成本控制机制:
- 针对每一个工作负载账户,在交付之前与业务团队评估未来账户内的云用量,将云上成本的职责分摊到对应的业务团队。
- 通过 Amazon Budget 设置预算超额报警通知,定期审核各个账户内产生的云资源费用并采取相应措施。
自动化管理多账户基础设施
在多账户的环境中,云运维团队所管理的基本元素是账户。随着业务的变化,会有新的账户创建或销毁,同时也会要求加固现有账户的安全配置等。为了快速响应业务方的账户相关的需求,我们建议构建一个针对多账户管理的自动化编排工具或框架,避免重复性的手动工作。该多账户管理的自动化编排工具或框架应能够支持:
- 自动化创建新的账户
- 自动化更新现有账户
- 自动化管理账户的安全控制和基线
总结
本文介绍了针对初次上云的中小企业所推荐的初级多账户架构,您可以根据该架构初始化自己的多账户环境,确保在符合安全性和最佳实践的基础上快速开展业务。同时亚马逊云科技专业服务团队依据多年的客户项目实践经验,提炼总结出了基于多账户的 Cloud Foundations 快速启动包服务,可帮助您从本应需要几周来搭建完成的初级多账户环境,减少到几天,如有兴趣可联系您的销售代表。