Loading...
作者:徐小雪、坎瓦尔巴瓦、余飞偶,于2024年9月25日发布
在 AWS IAM 身份中心中管理身份源转换是确保用户无缝访问 AWS 资源的关键步骤。本文提供了身份源转换的详细步骤,包括如何备份和恢复用户、组及权限集的分配。在身份源配置改变时,为了减少对用户的影响,必须提前进行规划。通过本文提供的示例代码和技巧,您将能够顺利过渡到新的身份源,确保用户访问的连续性和系统的稳定性。
AWS IAM 身份中心IAM Identity Center负责管理用户对 Amazon Web ServicesAWS资源的访问,包括 AWS 账户和应用程序。您可以使用 IAM 身份中心在身份中心身份存储中创建和管理用户身份,或无缝连接到其他身份源。
组织可能因多种原因而更改其 IAM 身份中心中的身份源配置,包括切换身份提供者IdP、扩大身份覆盖面、采纳新功能等。这些转换可能会干扰用户访问,需要合理的规划来最小化停机时间。
在本文中,我们将指导您如何从一个身份源切换到另一个身份源,并提供可用于协助转换的示例代码。
在 IAM 身份中心中配置的身份源决定了用户和组的创建和管理位置。每个组织在任意时刻只能连接一个身份源。身份中心支持三种主要的身份源选项:
身份中心目录:这是 IAM 身份中心的默认身份存储,您可以直接在身份中心内创建和管理用户及组,而无需依赖外部提供者。活动目录:可以与本地活动目录或使用 AWS 管理的 Microsoft AD 配合使用,借助 AWS 目录服务 实现此集成,允许您使用现有的活动目录身份和组成员资格。外部 IdP:可以继续使用支持 SAML 20 的当前第三方 IdP,例如 Okta Universal Directory 或 Microsoft Entra ID前身为 Azure AD。了解这些身份源选项,能够帮助您根据现有基础设施和身份验证需求选择最适合的来源。
图1展示了通过以下方式访问 AWS 资源的用户和组的流程:
将 权限集 分配给目录中的用户和组,以使其能够访问 AWS 账户。将应用程序分配给目录中的用户和组,从而提供对 AWS 管理应用程序 和 客户管理应用程序 的访问。在更改身份源时,所需的工作量取决于原始和新源的类型。AWS 文档详细说明了这些考虑事项。在影响最小的情境中,分配保持不变,但您需要强制重置密码或验证新源的正确声明。而在较具干扰性的情况下,用户、组及其分配会被删除。在这种情况下,您需要在更改身份源后恢复被删除的条目。
此部署涵盖权限集和应用分配的备份和恢复。这些脚本将分配与唯一的用户属性如 UserName和组属性如 DisplayName相关联。可能在用户和组恢复过程中更改的属性如 UserId 和 GroupId不会被使用。
未覆盖的内容包括用户、组、权限集和应用程序的备份和恢复。
用户和组的备份和恢复未在此涵盖,因为它们严重依赖于源和目标 IdP 的格式。由于我们正在进行身份源切换,权限集将保持不变,应用程序不会被删除。如果您在 AWS 区域中更改 IdP,则 IAM 身份中心实例将被删除,应用程序和权限集将在分配之外被删除。在这种情况下,您必须重新部署这些应用程序。请参阅 如何自动化审核和验证 AWS IAM 身份中心用户和组的权限 了解备份权限集的信息。示例脚本和详细步骤可在 GitHub 上找到。
注意:该解决方案可在 GitHub awssamples 存储库中找到。您可以通过 GitHub Issues 报告错误或提出功能请求。该解决方案的构建者可以协助解决 GitHub 问题。 企业支持 客户可以联系他们的技术账户经理TAM以获取进一步的问题或功能请求。
在本节中,我们将指导您完成在 IAM 身份中心中切换到新身份源的过程。
此步骤对于保护用户信息及其相关访问权限至关重要。
如何备份用户和组:
当将 IAM 身份中心目录用作身份源时,使用 ListUsers、ListGroups 和 ListGroupMembershipsForMember 备份元数据和属性。当使用活动目录或外部 IdP 等源时,您可以使用兼容的工具,例如 Windows PowerShell 的活动目录模块 和第三方脚本来 备份用户 和 备份组。注意:对于一些外部 IdP,存在与活动目录的本机集成,例如 Okta AD 集成 和 Ping One AD 连接。您可以设置本机集成并同步用户和组数据,而无需备份和恢复这些数据。
可以通过运行 GitHub 上的 backuppy 文件来备份分配。将 ltIDCSTOREIDgt 替换为您的身份存储 ID格式为 d1234567890,将 ltIDCARNgt 替换为您的 IAM 身份中心实例的 Amazon 资源名称ARN。
bashpython3 backuppy idcid ltIDCSTOREIDgt idcarn ltIDCARNgt
该脚本使用 IAM 身份中心 API 和 身份存储 API,如图2所示,生成权限集分配备份文件UserAssignmentsjson 和 GroupAssignmentsjson和应用分配备份文件AppAssignmentsjson。
注意:如果您使用 IAM 身份中心的 禁用用户访问 功能,则 ListUsers API 将无法显示禁用状态。您需要手动检查 AWS 管理控制台中的禁用状态。您可以选择:
从备份文件中删除禁用用户。在步骤4中恢复分配之前,重新禁用已检查的用户。目标身份源将成为新的权威身份源。完成后,请验证组成员资格和属性是否已正确转移。
如果目标是 IAM 身份中心目录,使用 CreateUser、CreateGroup 和 CreateGroupMembership API 从先前的备份文件恢复。如果目标是活动目录或外部 IdP,则使用相应的原生导入功能或集成工具进行恢复。更新 IAM 身份中心配置以指向新源。如适用,使用工具如 可配置 AD 同步 或 使用 SCIM 自动配置 来同步已恢复的身份。
警告:在重新建立目录期间,用户将无法通过 IAM 身份中心访问 AWS 账户或应用程序,直到步骤4中的所有分配恢复完成。
用于恢复分配的 API 如图3所示。
可以通过运行 GitHub 上的 restorepy 文件来恢复分配。将 ltNEWIDCSTOREIDgt 替换为您新配置的身份存储 ID格式为 d1234567890,将 ltIDCARNgt 替换为您的 IAM 身份中心实例的 ARN。
bashpython3 restorepy idcid ltNEWIDCSTOREIDgt idcarn ltIDCARNgt
该脚本使用图2所示的 API,并默认从步骤1中拾取备份文件UserAssignmentsjson、GroupAssignmentsjson 和 AppAssignmentsjson。账户权限集分配结果会使用指数退避方式自动检索五次。如果在五次重试后结果不是成功的状态,该主体 ID 将被标记为失败并导出到错误日志中。
极光加速免费注意:对于维持单独身份源的 AWS 管理应用,使用 CreateApplicationAssignments API 恢复应用分配将无法保留用户访问。这些应用通常依赖于原始身份源 ID,或依赖于来自原始身份源的 UserId 和 GroupId。这一依赖关系体现在创建 AWS 管理应用程序时导入 IAM 身份中心的用户或组的过程中。例如,AWS 管理的应用程序包括 Amazon SageMaker Studio 和 Amazon Q Developer。这些应用必须逐个恢复,可能需要重新部署该应用。
确保用户仍可以访问预期的账户和应用程序。
在 IAM 身份中心中转换身份源需要仔细规划和实施。本文概述了管理该转换的步骤。通过遵循这些步骤,您可以简化转换过程,确保用户访问的平稳与高效,最大限度地减少停机时间。要开始,请参阅 GitHub 存储库。有关更多帖子,请访问 AWS 安全博客 渠道并搜索 IAM 身份中心。
如果您对本文有反馈,请在下面的评论部分提交意见。如果您对本文有任何问题,请 联系 AWS 支持。
徐小雪徐小雪是驻多伦多的 AWS 解决方案架构师,主要与金融服务客户合作,帮助他们确保工作负载的安全并设计可扩展的 AWS 云解决方案。
坎瓦尔巴瓦坎瓦尔巴瓦是 AWS 的首席技术账户经理,与客户合作以优化他们对 AWS 服务的使用并实现商业目标。
余飞偶余飞偶是支持独立软件供应商ISV客户的解决方案架构师,位于新加坡,并且是容器 TFC 的一部分。她喜欢帮助客户发展业务,构建自动化、创新和提高效率的解决方案。

标签 AWS IAM 身份中心、合规性、安全博客