本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 AWS 以代码形式管理 AWS IAM 身份中心权限集 CodePipeline
由 Andre Cavalcante (AWS) 和 Claison Amorim (AWS) 创建
代码存储库:aws-iam-identity-center- | 环境:生产 | 技术:安全、身份、合规; DevOps |
AWS 服务:AWS CodeBuild;AWS CodeCommit;AWS CodePipeline;AWS IAM 身份中心 |
Summary
AWS IAM Identity Center (AWS 单点登录的后继平台)可帮助您集中管理对所有 Amazon Web Services account 和应用程序的单点登录(SSO)访问。您可以在 IAM Identity Center 中创建和管理用户身份,也可以连接现有身份源,例如 Microsoft Active Directory 域或外部身份提供者 (IdP)。IAM Identity Center 提供统一的管理体验,使用权限集定义、自定义和分配对 AWS 环境的精细访问权限。权限集适用于您的 AWS IAM Identity Center 身份存储或外部 IdP 中的联合用户和组。
该模式可帮助您在多账户环境中以代码形式管理 IAM Identity Center 权限集,该环境在 AWS Organizations 中作为一个组织进行管理。使用此模式,您可以实现以下目标:
创建、删除和更新权限集
创建、更新或删除针对 Amazon Web Services account 、组织单位 (OU) 或组织根的权限集分配。
为了以代码形式管理 IAM Identity Center 权限和分配,此解决方案部署了使用 AWS、AWS 和 AWS 的持续集成和持续交付 (CI/CD) 管道。 CodeCommit CodeBuild CodePipeline您可以通过存储在 CodeCommit 存储库中的 JSON 模板中管理权限集和分配。当 Amazon EventBridge 规则检测到存储库的更改或检测到目标 OU 中账户的修改时,它会启动 AWS Lambda 函数。Lambda 函数启动 CI/CD 管道,更新 IAM Identity Center 中的权限集和分配。
先决条件和限制
先决条件
在 AWS Organizations 中作为组织管理的多账户环境。有关更多信息,请参阅创建组织。
已启用并配置身份源的 IAM Identity Center。有关更多信息,请参阅 IAM Identity Center 文档中的快速入门。
一个注册为 IAM Identity Center 的委托管理员的成员账户。有关说明,请参阅 IAM Identity Center 文档中的注册成员账户。
在 IAM Identity Center 委托的管理员账户和组织的管理账户中部署 AWS CloudFormation 堆栈的权限。有关更多信息,请参阅 CloudFormation 文档中的控制访问权限。
Identity Center 中的 Amazon Simple Storage Service (Amazon S3) 桶委托管理员上传构件代码。有关说明,请参阅创建桶。
组织管理账户的账户 ID。有关说明,请参阅查找您的 Amazon Web Services account ID。
限制
架构
技术堆栈
AWS CodeBuild
AWS CodeCommit
AWS CodePipeline
Amazon EventBridge
AWS Identity Center
AWS Lambda
AWS Organizations
目标架构
图表显示了以下工作流:
某位用户进行了以下更改之一:
向 CodeCommit 存储库提交一项或多项更改
修改 AWS Organizations 中组织单位(OU)中的账户
如果用户提交了对 CodeCommit 存储库的更改,则该
CodeChange
EventBridge 规则会检测到更改并在 IAM Identity Center 委托的管理员账户中启动 Lambda 函数。该规则不会对存储库中某些文件(如README.md
文件)的更改做出反应。如果用户修改了组织部门中的账户,则该
MoveAccount
EventBridge 规则会检测到更改并在组织的管理账户中启动 Lambda 函数。启动的 Lambda 函数在中启动 CI/CD 管道。 CodePipeline
CodePipeline 启动
CodebuildTemplateValidation
CodeBuild 项目。该
CodebuildTemplateValidation
CodeBuild 项目使用 CodeCommit 存储库中的 Python 脚本来验证权限集模板。 CodeBuild 验证以下内容:权限集名称是唯一的。
赋值语句 ID (
Sid
) 是唯一的。CustomPolicy
参数中的策略定义和有效。(此验证使用 AWS 身份验证和访问管理访问分析器。)托管策略的Amazon 资源名称(ARN)有效。
该
CodebuildPermissionSet
CodeBuild 项目使用适用于 Python 的 AWS 开发工具包 (Boto3) 在 IAM Identity Center 中删除、创建或更新权限集。只有带有SSOPipeline:true
标签的权限集会受到影响。通过此管道管理的所有权限集都有此标签。该
CodebuildAssignments
CodeBuild 项目使用 Terraform 在 IAM 身份中心中删除、创建或更新分配。Terraform 后端状态文件存储在同一账户的 S3 存储桶中。CodeBuild 在组织的管理账户中担任
lookup
IAM 角色。它可调用组织和 identitystoreAPI,以列出授予或撤消权限所需资源。 CodeBuild 更新 IAM 身份中心中的权限集和分配。
自动化和扩缩
由于多账户环境中的所有新账户都会移至 AWS Organizations 中的特定组织单位,因此该解决方案会自动运行,并向您在分配模板中指定的所有账户授予所需权限集。无需进行其他自动化或扩展操作。
在大型环境中,向 IAM Identity Center 发出的 API 请求数量可能会导致此解决方案的运行速度变慢。Terraform 和 Boto3 会自动管理节流,以最大限度地减少任何性能下降。
工具
Amazon Web Services
AWS CloudFormation 可帮助您设置 AWS 资源,快速一致地配置这些资源,并在 AWS 账户和区域的整个生命周期中对其进行管理。
AWS CodeBuild 是一项完全托管的构建服务,可帮助您编译源代码、运行单元测试和生成可随时部署的项目。
AWS CodeCommit 是一项版本控制服务,可帮助您私下存储和管理 Git 存储库,而无需管理自己的源代码控制系统。
AWS CodePipeline 可帮助您快速建模和配置软件发布的不同阶段,并自动执行持续发布软件变更所需的步骤。
Amazon EventBridge 是一项无服务器事件总线服务,可帮助您将应用程序与来自各种来源的实时数据连接起来。例如,AWS Lambda 函数、使用 API 目标的 HTTP 调用端点或其他 Amazon Web Services account 中的事件总线。
AWS IAM Identity Center 可帮助您集中管理对所有 Amazon Web Services account 和云应用程序的单点登录(SSO)访问权限。
AWS Organizations 是一项账户管理服务,使您可以将多个 Amazon Web Services account 整合到您创建组织中并进行集中管理。
适用于 Python 的 Amazon SDK (Boto3)
是一个软件开发工具包,可帮助您将 Python 应用程序、库或脚本与 Amazon Web Services 集成。 Amazon Simple Storage Service (Amazon S3)是一项基于云的对象存储服务,可帮助您存储、保护和检索任意数量的数据。
代码存储库
此模式的代码可在 aws-iam-identity-center-pipelin
最佳实践
操作说明
任务 | 描述 | 所需技能 |
---|---|---|
克隆存储库。 | 在 bash Shell 中输入以下命令:这将从中克隆 aws-iam-identity-center-pipelin
| DevOps 工程师 |
定义权限集。 |
| DevOps 工程师 |
定义分配。 |
| DevOps 工程师 |
任务 | 描述 | 所需技能 |
---|---|---|
将 .zip 文件上传到 S3 存储桶。 |
| DevOps 工程师 |
在 IAM Identity Center 委托管理员账户中部署资源。 |
| DevOps 工程师 |
在 AWS Organization 管理账户中部署资源。 |
| DevOps 工程师 |
任务 | 描述 | 所需技能 |
---|---|---|
更新权限集和分配。 | 当 如果您想修改已部署的权限集和分配,请更新 JSON 文件,然后将其提交到 IAM Identity Center 委托管理员账户中的 CodeCommit 存储库。有关说明,请参阅 CodeCommit 文档中的创建提交。 使用 CI/CD 管道管理先前部署的权限集和关联时,请注意以下事项:
| DevOps 工程师 |
故障排除
相关资源
权限集(IAM Identity Center 文档)