概述
在微软Azure云上运行业务应用程序时,确保环境的安全性至关重要。为了满足客户的需求,将帮助他们建立第一个版本的Azure Landing Zones,为后续的构建工作奠定基础,并在交付后提供指导。
Azure Landing Zones是一种基于最佳实践和安全性原则的Azure基础架构模式。它提供了一个可重复使用的模板,用于创建和管理安全且规范化的Azure环境。
什么是Landing Zones
微软将着陆区描述为多订阅Azure环境的输出,该环境考虑了规模、安全性、治理、网络和身份。
但我更愿意将其描述为在企业规模上安全采用微软云的一种方式,使用terrraform HCL文件作为蓝图,通过CI/ CD管道(GitOps)部署。这意味着您的云环境是完全版本化和可审计的。(你的安全团队会喜欢的。) 每个工作负载都包含在自己的Azure订阅中,每个订阅都在一个管理组下运行:
然后,使用这些管理组,可以分配策略来强制执行护栏,以在组织级别上控制成本和安全性。这些策略的示例可以是:不允许在没有配置安全组的情况下存在虚拟网络,或者不允许在特定实例大小下启动虚拟机,等等。
为什么使用Landing Zones
通常,当组织开始使用云计算时,他们的资源和工作负载通过web门户手动部署。随着时间的推移,越来越多的服务被分离出来,对于应该部署什么和应该部署什么,没有单一的真实来源,导致不必要的成本增加,从安全和计费的角度来看都是不透明的,并且潜在的更广泛的网络攻击面。
开始Landing Zones
作为起点,Github上有一个blueprint on Github ,提供了指导和最佳实践。然后,这个配置仍然需要适应您组织的需求。我还发现微软特别有用的是Cloud Adoption Framework(CAF)。它提供了在为Azure云环境制作蓝图时要考虑的设计区域。
工作流
当有人想要向Landing Zone添加新内容时,例如在VM上运行的新应用程序,他们可以简单地从master中分离出来,并在单独的文件夹中添加Azure配置。然后可以在他们选择的沙盒或开发订阅上对该文件夹进行测试,当部署到生产环境中时,将创建一个拉取请求,该请求将启动Azure Pipeline。然后使用terraform计划验证更改,当检查成功时,将更改合并回主分支。此时,Azure DevOps管道再次启动,并且使用terraform apply部署更改。
Infrastructure-As-Code层级
为了保持着陆点的快速开发和Terraform代码库的可维护性,着陆点被划分为不同的级别:
为了限制配置错误的影响并实现清晰的职责分离,可以将"云代码"划分为不同的级别。在这种划分下,0级将包含所有级别的.tfstate
文件的部署存储,并创建代表着陆区(Azure Landing Zone)的Azure Active Directory (AAD) 应用程序的服务主体/托管身份,以及启动所需的最低限度的服务。在此基础上,Azure DevOps代理虚拟机可以被配置为在每个级别上运行着陆区管道,并使用相关的托管身份。通过在1级Terraform文件中定义最小所需的角色,可以确保最小特权原则。
注意事项
尽管Microsoft提供了一个成熟的Landing Zone模板,但对于企业来说,Landing Zone并不是一个一揽子解决方案。实施Landing Zone需要企业考虑和记录每个关键设计领域在云采用中的具体需求,并需要具备高级Terraform技能的架构师来根据需求调整Microsoft的蓝图。此外,依赖于Microsoft的Terraform模块也会增加额外的开销,并不能保证所有Azure云资源从发布之时就立即可用。
对于优化以上内容,我建议考虑以下几点:
- 定制化:根据企业的具体需求,对Landing Zone进行定制化的设计和实施,以满足特定的业务需求和架构要求。
- 技术能力:确保企业拥有具备高级Terraform技能的架构师或团队,能够灵活地调整和扩展Microsoft的蓝图,以适应不断变化的需求。
- 持续优化:持续跟踪和优化Landing Zone的性能和可用性,确保云资源能够在需要时可靠地提供服务。
- 自动化和自动修复:利用自动化工具和流程,实现对Landing Zone的自动化管理和自动修复,以降低故障风险并提高响应速度。
- 安全性和合规性:将安全性和合规性考虑纳入Landing Zone的设计和实施中,确保云资源的安全性和符合法规要求。
通过以上优化措施,企业可以更好地定制和管理自己的Landing Zone,提高云采用的效率和可靠性。