## 视频
<video src="https://dev-media.amazoncloud.cn/30-LibaiGenerate/31-LiBaiRebrandingVideo/DOP209-Governance_and_security_with_infrastructure_as_code-LBrebrandingWCaptionCN.mp4" class="bytemdVideo" controls="controls"></video>
## 导读
在本讲座中,您将学习如何使用 Amazon CloudFormation 和 Amazon CDK 在受监管的环境中部署云应用程序,同时执行安全控制。了解如何使用 cdk-nag 尽早发现问题,使用 cfn-guard 验证管道,以及使用 Amazon CloudFormation hooks 保护您的帐户免受意外更改的影响。
## 演讲精华
<font color = "grey">以下是小编为您整理的本次演讲的精华,共1400字,阅读时间大约是7分钟。如果您想进一步了解演讲内容或者观看演讲全文,请观看演讲完整视频或者下面的演讲原文。</font>
埃里克·比尔德在演讲开始时阐述了公司在迁移至亚马逊云科技过程中所追求的目标。他指出,大多数企业都渴望能够快速构建有价值的产品和服务,以便在为客户创造价值的同时脱颖而出。然而,尽管公司希望迅速采取行动,但他们同样需要确保在亚马逊云上的安全性和合规性。比尔德强调,自动化是实现快速创新与亚马逊云上稳健治理和安全的关键。
接下来,比尔德介绍了基础设施即代码的概念,阐释了这一概念如何使开发人员在版本控制的文本文件中指定他们所需的基础设施的所有方面,例如服务器、网络和数据库。这使得开发人员能够将代码审查、测试和持续集成/持续部署等软件开发最佳实践应用于基础设施的配置。这样一来,基础设施部署变得更加一致、可重复且更安全。基础设施即代码使得在实际分配资源之前,可以扫描基础设施模板以检查合规性问题,从而将安全性提前纳入考虑。
比尔德表示,亚马逊云科技的 CloudFormation 服务支持在亚马逊云上实现基础设施即代码。CloudFormation 负责处理调配模板中所描述资源的全部复杂细节。这为团队提供了运营稳定性和可预测性,即使在基础设施扩展的情况下也能保持稳定。
亚马逊云科技的 CDK(云计算开发套件)是一个开源的开发框架,允许开发人员使用 Python、Java、TypeScript 等高阶编程语言而非 YAML/JSON 模板来定义他们的基础设施。CDK 应用程序会在底层生成 CloudFormation 模板,因此开发人员可以在基础设施即代码的灵活性下享受到 CloudFormation 强大的资源调配引擎带来的好处。
比尔德解释了 CDK 背后的设计理念。过去,应用通常由独立的基础设施、开发和运营团队分别负责构建。这导致在应用代码之外进行更改时出现了一些问题。CDK 旨在将所有与应用相关的方面(如基础设施、配置、管道等)统一到一个代码库中。这样确保了所有更改都能安全地通过相同的软件开发生命周期关卡流动。
Beard随后详细介绍了许多团队为基础设施变更所采用的持续交付流程。在开发过程中,开发者会在本地对代码进行修改。CDK Nag和CloudFormation Guard等工具能够提前发现潜在的安全问题和配置错误。CDK Nag提供了一系列精选的规则包,而CloudFormation Guard则允许用户创建可在不同基础设施代码工具中应用的自定义规则,通过对生成的模板进行扫描。CFN Lint是另一个用于CloudFormation模板的开源linter。
当代码被提交到版本控制系统后,自动化管道便会启动运行。构建系统如亚马逊云科技CodeBuild会在构建过程中运行各种静态扫描,以便捕捉任何可能被当地代码遗漏的问题。CodeBuild的buildspecs还可以包含基础设施更新的部署命令。此外,亚马逊ECR图像扫描还会检查容器图像是否存在漏洞。
在部署阶段,实际上就是在亚马逊云科技账户中创建或更新资源的过程。CloudFormation钩子是一个强大的功能,允许团队在CloudFormation执行操作之前验证资源。钩子可以访问所有来自模板的解析值,因此它们可以强制实施依赖于多个资源的复杂治理规则。如果钩子失败,部署将被阻止,并且会触发CloudFormation栈的回滚。
部署完成后,CloudFormation栈偏离检测会将当前资源状态与模板进行比较,并检测任何随时间推移发生的配置偏离或差异。尽管偏离检测不会自动修复问题,但它提供了有价值的可见性。接下来,团队需要决定是否要对基础设施进行更新以符合预期模板的状态。
Kevin de Jong详细阐述了软件交付生命周期(开发、构建、部署和后部署)中可包含的各种具体工具。
During the development process, CDK Nag is designed specifically to validate CDK applications by scanning them prior to integrating with CloudFormation. The Nag package offers a curated set of rules that can be customized as needed. CloudFormation Guard, which uses a DSL called Guard to write validation rules that can scan any YAML/JSON, including those for CDK applications, CloudFormation templates, and Terraform plans, does not include predefined rules. The registry of CloudFormation Guard contains shared rule packages that can be used. CFN Lint focuses on CloudFormation templates, utilizing resource specifications and Amazon Web Services data to implement a comprehensive set of best practice checks.
In the building phase, Amazon Web Services CodeBuild supports running security scans as part of the build process to catch issues early. CodeBuild buildspecs support static scanning and commands for deployment operations. The [Amazon Elastic Container Registry ](https://aws.amazon.com/cn/ecr/?trk=cndc-detail)(ECR) image scanning feature can automate scans of Docker container images pushed to ECR repositories to check for operating system and application vulnerabilities.
During the deployment process, CloudFormation hooks are executed before creating or updating resources to validate properties and prevent incompatible deployments. Hooks have access to all resolved values from the template for complex governance checks. A failed hook can be configured to issue a warning or fail the deployment.
After deployment, CloudFormation stack drift detection identifies configuration drift or deviations from the expected template state over time. While drift detection does not automatically fix issues, it provides useful visibility for teams to decide whether to update the stack to the desired state.
De Jong's emphasis is on providing feedback about issues as early as possible in the development process to prevent them from entering production. Tools like CloudFormation Guard support reusable governance rule sets that provide consistency throughout the software delivery lifecycle.
GoDaddy's Damien Serle subsequently demonstrated a real-world example of how they utilize CloudFormation hooks and CDK to build a centralized governance system called Stack Safeguard.
Serle向我们介绍了GoDaddy作为全球最大域名注册商的背景,其使命是助力企业家在网上建立成功事业。GoDaddy拥有数千名开发者,专注于各类产品和服务组合。得益于亚马逊云科技的支持,GoDaddy能够实现规模化和速度的提升。
在迁移至亚马逊云科技的过程中,GoDaddy的关键目标包括降低风险和成本,同时给予开发者快速创新的能力。他们的初始治理解决方案包括使用亚马逊云科技服务目录进行审批,但这种方法随着时间的推移被证明是有限的。
在使用服务目录的方法时,GoDaddy面临的一些挑战包括经验丰富的工程师习惯直接使用CloudFormation,这会导致操作上的困难;集中式目录的更改需要更新;以及随着组织的发展,线性扩展问题。
为了在保持强大安全性和合规性的同时消除开发人员的摩擦,GoDaddy正在开发新一代的栈保护系统。该系统旨在实现安全性、可靠性和开发者速度的结合。
通过要求所有部署都必须通过限制性IAM角色进行CloudFormation,栈保护实现了更高的安全性。一个CloudFormation钩子会检查每个部署,并调用一个Lambda函数来验证模板是否违反了集中式规则桶(S3)中的治理政策。违规部署将被阻止,并提供详细的错误消息和补救措施文档链接。
这种集中式规则方法在保持一致性的同时,允许团队在工具上具有灵活性。GoDaddy还构建了一个名为GdStack的CDK库,简化了开发过程。这个库包含了着陆区信息和自动修复常见问题的“规范器”,例如日志配置。
由于与亚马逊云科技的紧密合作,GoDaddy成功地实施了创新的云计算治理解决方案,使用了诸如CloudFormation钩子等先进技术。自动化和基础设施即代码使他们能够在不牺牲开发者速度的情况下维持安全和合规性。
总的来说,展示通过各个阶段将安全性提前并集中实施策略的过程。例如GoDaddy这样的实际案例表明了这些技术在不影响开发者生产力的前提下如何实现基础设施的安全自动化配置。将基础设施视为代码以及利用强大的管理工具是大规模推进亚马逊云科技的创新的关键驱动力。
**下面是一些演讲现场的精彩瞬间:**
亚马逊云科技通过基础设施代码自动化交付管道,助力企业快速响应、保障安全并降低成本。
![](https://d1trpeugzwbig5.cloudfront.net/DOP209-Governance_and_security_with_infrastructure_as_code/images/rebranded/DOP209-Governance_and_security_with_infrastructure_as_code_0.png)
将基础设施视为代码,确保统一且一致的部署策略,这无疑是其一大优势。
![](https://d1trpeugzwbig5.cloudfront.net/DOP209-Governance_and_security_with_infrastructure_as_code/images/rebranded/DOP209-Governance_and_security_with_infrastructure_as_code_1.png)
团队拥有了更多的自主权,但同时也需要更加关注系统规则和限制。
![](https://d1trpeugzwbig5.cloudfront.net/DOP209-Governance_and_security_with_infrastructure_as_code/images/rebranded/DOP209-Governance_and_security_with_infrastructure_as_code_2.png)
亚马逊云科技团队利用CDK技术预先解决部署问题。
![](https://d1trpeugzwbig5.cloudfront.net/DOP209-Governance_and_security_with_infrastructure_as_code/images/rebranded/DOP209-Governance_and_security_with_infrastructure_as_code_3.png)
通过制定合规规则,要求所有S3存储桶将日志发送到特定存储桶以进行安全监控。
![](https://d1trpeugzwbig5.cloudfront.net/DOP209-Governance_and_security_with_infrastructure_as_code/images/rebranded/DOP209-Governance_and_security_with_infrastructure_as_code_4.png)
亚马逊云科技计划将GD栈拓展为一个功能丰富的构建生态系统,并壮大开发者社群以推动开源贡献。
![](https://d1trpeugzwbig5.cloudfront.net/DOP209-Governance_and_security_with_infrastructure_as_code/images/rebranded/DOP209-Governance_and_security_with_infrastructure_as_code_5.png)
得益于与亚马逊云科技的紧密合作关系,我们已经能够打造尖端解决方案并为产品开发提供宝贵意见。
![](https://d1trpeugzwbig5.cloudfront.net/DOP209-Governance_and_security_with_infrastructure_as_code/images/rebranded/DOP209-Governance_and_security_with_infrastructure_as_code_6.png)
## 总结
该视频探讨了如何使用诸如亚马逊云科技CloudFormation之类的基础设施即代码工具来实现治理和安全最佳实践。强调了将安全纳入开发过程以及自动化的部署方法。首先,如CDK Nag和CloudFormation Guard之类的工具可以在开发过程中根据自定义规则验证基础设施模板,从而在部署前发现并纠正配置错误。接着,构建阶段可检查诸如容器镜像一类的潜在漏洞。最后,CloudFormation会在部署期间验证资源的内部函数,以确保它们符合既定标准。视频中还重点介绍了一个案例研究,即GoDaddy开发的"Stack Safeguard"用于管理部署。它利用CloudFormation的钩子和一个定制的CDK库,以提高开发人员的效率并维持合规性。如今,开发人员只需通过CloudFormation进行部署,即可使用各种工具。总的来说,将基础设施即代码与强大的自动化和验证相结合使得组织能够在不损害可靠性和安全性的情况下更快速地进行发布。
## 演讲原文
## 想了解更多精彩完整内容吗?立即访问re:Invent 官网中文网站!
[2023亚马逊云科技re:Invent全球大会 - 官方网站](https://webinar.amazoncloud.cn/reInvent2023/?s=8739&smid=19458 "2023亚马逊云科技re:Invent全球大会 - 官方网站")
[点击此处](https://aws.amazon.com/cn/new/?trk=6dd7cc20-6afa-4abf-9359-2d6976ff9600&trk=cndc-detail "点击此处"),一键获取亚马逊云科技全球最新产品/服务资讯!
[点击此处](https://www.amazonaws.cn/new/?trk=2ab098aa-0793-48b1-85e6-a9d261bd8cd4&trk=cndc-detail "点击此处"),一键获取亚马逊云科技中国区最新产品/服务资讯!
## 即刻注册亚马逊云科技账户,开启云端之旅!
[【免费】亚马逊云科技“100 余种核心云服务产品免费试用”](https://aws.amazon.com/cn/campaigns/freecenter/?trk=f079813d-3a13-4a50-b67b-e31d930f36a4&sc_channel=el&trk=cndc-detail "【免费】亚马逊云科技“100 余种核心云服务产品免费试用“")
[【免费】亚马逊云科技中国区“40 余种核心云服务产品免费试用”](https://www.amazonaws.cn/campaign/CloudService/?trk=2cdb6245-f491-42bc-b931-c1693fe92be1&sc_channel=el&trk=cndc-detail "【免费】亚马逊云科技中国区“40 余种核心云服务产品免费试用“")