本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 CodePipeline A IAM ccess Analyzer 和AWS CloudFormation 宏自动验证和部署AWS账户中的IAM策略和角色
由 Helton Ribeiro (AWS) 和 Guilherme Simoes () 创作 AWS
摘要
注意:AWS CodeCommit 不再向新客户开放。AWS CodeCommit 的现有客户可以继续正常使用该服务。了解更多
此模式描述了创建部署管道的步骤并提供了代码,该管道允许您的开发团队在您的 Amazon Web Services (IAM) 账户中创建 Ident AWS ity and Access Management (AWS) 策略和角色。此方法可帮助您的组织减少运营团队开销并加快部署进程。它还可以帮助您的开发人员创建与您的现有治理和安全控制兼容的IAM角色和策略。
此模式的方法使用 Ident AWSity and Access Management Access Analyzer 来验证要附加AWS CloudFormation 到IAM角色并用于部署IAM角色的IAM策略。但是,您的开发团队不会直接编辑AWS CloudFormation 模板文件,而是创建JSON格式化的IAM策略和角色。在开始部署之前,AWS CloudFormation 宏会将这些JSON格式的策略文件转换为AWS CloudFormation IAM资源类型。
部署管道 (RolesPipeline
) 分为源、验证和部署阶段。在源代码阶段,您的开发团队会将包含IAM角色和策略定义JSON的文件推送到AWS CodeCommit 存储库。 AWS CodeBuild 然后运行脚本来验证这些文件并将它们复制到亚马逊简单存储服务 (Amazon S3) 存储桶。由于您的开发团队无法直接访问存储在单独的 S3 存储桶中的AWS CloudFormation 模板文件,因此他们必须遵循JSON文件创建和验证流程。
最后,在部署阶段,AWS CodeDeploy 使用AWS CloudFormation 堆栈更新或删除账户中的IAM策略和角色。
重要
此模式的工作流程是概念验证 (POC),我们建议您仅在测试环境中使用它。如果您想在生产环境中使用此模式的方法,请参阅IAM文档IAM中的安全最佳实践,并对您的IAM角色和AWS服务进行必要的更改。
先决条件和限制
先决条件
一个活动的 AWS 账户。
用于
RolesPipeline
管道的新或现有 S3 存储桶。确保正在使用的访问凭证有权将对象上传至此存储桶。AWS命令行界面 (AWSCLI),已安装和配置。有关这方面的更多信息,请参阅AWSCLI文档AWSCLI中的安装、更新和卸载。
AWS已安装并配置无服务器应用程序模型 (AWSSAM) CLI。有关这方面的更多信息,请参阅AWSSAM文档AWSSAMCLI中的安装。
Python 3,已安装于本地计算机。有关这方面的更多信息,请参阅 Python 文档
。 Git 客户端,已安装并配置。
GitHub
IAM roles pipeline
存储库,克隆到您的本地计算机。现有JSON格式的IAM策略和角色。有关这方面的更多信息,请参阅 Github
IAM roles pipeline
存储库中的ReadMe文件。 您的开发团队不得拥有编辑此解决方案的AWS CodePipeline CodeBuild、和 CodeDeploy 资源的权限。
限制
此模式的工作流程是概念验证 (POC),我们建议您仅在测试环境中使用它。如果您想在生产环境中使用此模式的方法,请参阅IAM文档IAM中的安全最佳实践,并对您的IAM角色和AWS服务进行必要的更改。
架构
下图显示了如何使用 A IAM cces AWS CloudFormation s Analyzer 和宏自动验证IAM角色和策略并将其部署到账户。 CodePipeline

图表显示了以下工作流:
开发人员编写包含IAM策略和角色定义的JSON文件。开发人员将代码推送到 CodeCommit 存储库 CodePipeline ,然后启动
RolesPipeline
管道。CodeBuild 使用IAM访问分析器验证JSON文件。如果存在任何与安全或错误相关的调查发现,则部署进程将停止。
如果没有发现与安全或错误相关的结果,则会将JSON文件发送到
RolesBucket
S3 存储桶。然后,作为 AWS Lambda 函数实现的AWS CloudFormation 宏从
RolesBucket
存储桶中读取JSON文件并将其转换为AWS CloudFormation IAM资源类型。预定义AWS CloudFormation 堆栈安装、更新或删除账户中的IAM策略和角色。
自动化和扩缩
AWS CloudFormation GitHub IAM角色管道
工具
AWSCommand Line Interface (AWSCLI) 是一个开源工具,可帮助您通过命令行外壳中的命令与AWS服务进行交互。
AWSIdentity and Access Management (IAM) 通过控制谁经过身份验证并有权使用AWS资源,从而帮助您安全地管理对资源的访问权限。
IAMA@@ ccess Analyzer 可帮助您识别组织和账户中与外部实体共享的资源,例如 S3 存储桶或IAM角色。这可以帮助您识别对资源和数据的意外访问。
AWS无服务器应用程序模型 (AWSSAM) 是一个开源框架,可帮助您在云中构建无服务器应用程序。AWS
代码
此模式的源代码和模板可在 GitHub IAM角色管道
操作说明
任务 | 描述 | 所需技能 |
---|---|---|
克隆示例存储库。 | 将 GitHub IAM角色管道 | 应用程序开发者,一般 AWS |
任务 | 描述 | 所需技能 |
---|---|---|
部署管道。 |
| 应用程序开发者,一般 AWS |
克隆管道存储库。 |
| 应用程序开发者,一般 AWS |
任务 | 描述 | 所需技能 |
---|---|---|
使用有效的IAM策略和角色测试 RolesPipeline 管道。 |
| 应用程序开发者,一般 AWS |
使用无效的IAM策略和角色测试 RolesPipeline 管道。 |
| 应用程序开发者,一般 AWS |
任务 | 描述 | 所需技能 |
---|---|---|
准备清理。 | 清空 S3 存储桶,然后运行 | 应用程序开发者,一般 AWS |
删除 RolesStack 堆栈。 |
| 应用程序开发者,一般 AWS |
删除 RolesPipeline 堆栈。 | 要删除 | 应用程序开发者,一般 AWS |
相关资源
IAM访问分析器-策略验证
(AWS新闻博客) 使用AWS CloudFormation 宏对模板执行自定义处理(AWS CloudFormation 文档)
使用 Python 构建 Lambda 函数(Lambda 文档)AWS