by Srikanth Baheti Ashok Dasineni 和 Raji Sivasubramaniam 于 2024 年 3 月 28 日发布在 Amazon QuickSight 商业智能 中级 (200) 永久链接 评论 分享 注意:自 2023 年 8 月起,Amazon QuickSight 现已成为支持 AWS IAM 身份中心的应用程序。此功能允许订阅 QuickSight 的管理员使用 IAM 身份中心,通过 Okta 和其他外部身份提供商启用用户登录。有关更多信息,请参见 通过 Amazon QuickSight 和 IAM 身份中心简化商业智能身份管理AWS 博客文章以及 使用 IAM 身份中心配置 Amazon QuickSight 帐户 的文档。我们建议您使用此新集成。本文仅作为现有帐户配置的参考。 Amazon QuickSight 是一款基于云的无服务器嵌入式商业智能 (BI) 服务,使组织内每个人都能轻松获得洞察。作为一项完全托管的服务,QuickSight 允许您创建并发布互动仪表板,用户可以在任何设备上访问,并嵌入到您的应用程序、门户和网站中。 QuickSight 支持通过安全声明标记语言 20 (SAML 20) 进行身份联合,适用于标准版和企业版。通过联合,您可以使用企业身份提供商 (IdP) 管理用户,并在登录时将其传递到 QuickSight。IdP 包括 Microsoft Active Directory 联合服务、Ping One 联合服务器、Okta 等。 截至目前,QuickSight 支持联合单点登录 (SSO) 和 Active Directory (AD) 集成,作为企业级身份验证机制。后者允许无缝同步 native AD 组进行角色分配和内容授权。然而,在使用 SAML 进行联合 SSO 时,您可以自动配置具有适当角色的用户。目前,这种集成对于 IdP 和 QuickSight 之间的组和用户或组成员资格的自动同步存在滞后。这对于授权和授予适当的访问权限以支持自动配置用户至关重要。 主要面临的三个挑战是: 本文提供了克服这些挑战的步骤和代码示例,以可扩展的方式进行操作。我们以 Okta 为例进行演示,但您也可以使用其他 IdP。这是一种经过验证的解决方案,已被多个 QuickSight 客户使用和实施。 这个解决方案结合 QuickSight 和下列 AWS 服务,自动同步来自 IdP 的用户、组及其成员资格。在这个例子中,IdP 充当单一可信数据源。 以下图示展示了从第三方 IdP 执行用户和组同步的工作流。 您可以通过按需或计划模式实施解决方案。在这两种情况下,该解决方案的第一步是触发 Step Functions 工作流OktaQuickSightSync,该工作流协调一系列 Lambda 函数的运行: 在接下来的部分中,我们将解释使用 AWS CloudFormation 配置解决方案资源的步骤。首先,您需要检索 CloudFormation 堆栈所需的参数: 您应具备以下前置条件: 我们首先来创建一个 API 令牌,以在 CloudFormation 堆栈中作为参数使用。请完成以下步骤: 在导航窗格中,在 安全性 下选择 API。 在 令牌 标签上,选择 创建令牌。 输入令牌名称例如:QuickSight 用户和组同步的 Okta API 令牌,然后选择 创建令牌。 Okta 将生成令牌值。 有关令牌的详情可在 API 页面中找到。详细信息包括令牌创建的时间戳、过期时间和最后使用时间。 API 令牌的有效性因 Okta 帐户配置而异。如果 Lambda 代码因令牌过期而失败,请生成一个新令牌并更新 Lambda 配置。 要 定位您的 Okta 域名,请完成以下步骤: 要 获取您的应用程序 ID,请完成以下步骤: 当去除管理员或作者角色的用户时,我们使用此管理员用户来转移资产所有权。请完成以下步骤: 选择用户资料图标,然后选择 管理 QuickSight。 复制管理员用户名在本文中,我们使用 OktaSSOUser,并将其保留以供后用。 按照 通过 Okta 联合 Amazon QuickSight 访问 博客文章中的步骤设置 IAM 角色。 在此解决方案中,用户注册的 AWS Lambda 代码使用上述 IAM 角色。确保 IAM 角色的命名精确无误。部署后,您可以根据需要更新 IAM 角色。 现在您已经拥有 CloudFormation 模板所需的参数。 选择 启动堆栈 来配置您的资源: 在 创建堆栈 页面中选择 下一步。 输入上一步中捕获的参数并选择 下一步。 确认能力并选择 提交。 CloudFormation 成功部署后,所有资源将在其各自的帐户中部署。 作为已部署资源的一部分,创建了一个 EventBridge 规则。默认情况下,此规则处于禁用状态,以避免脚本意外运行。该规则设置为每天 1200 UTC 触发;您可以根据需要进行修改。 完成以下步骤以启用规则: 在 EventBridge 控制台中,导航到 总线,选择 规则。 在规则列表中,选择 CloudFormation 模板创建的规则OktaQSSyncEventsRule。 若要将现有规则配置从 1200 UTC 编辑为您自己的计划,请在 事件计划 部分选择 编辑。 启用规则后,它将触发 Step Functions 工作流的运行,并开始从 Okta 到 QuickSight 的用户和组的自动同步。 Okta 域名、Okta 应用程序 ID、API 密钥、以及分配给 QuickSight 应用的专用 QuickSight 管理员、用户和组是同步到 QuickSight 的唯一组。并非所有 Okta 中的用户和组都会被同步。 在 QuickSight 中去除或删除用户时,孤立资源的所有权将转移给 QuickSightOktaUserDeprovisioning Lambda 函数环境变量中配置的专用管理员用户。 要进行清理,请删除 CloudFormation 堆栈,以去除其创建的所有资源。这将删除三个 Lambda 函数及其相关角色和策略、Step Functions 流程及其相关角色,以及 EventBridge 规则及其相关角色。 本文提供了在 Okta 和 QuickSight 之间设置自动用户和组同步的说明。此解决方案消除了手动管理 QuickSight 中的组及其成员资格的需求,并消除了当用户从 Okta 中移除时在 QuickSight 中去除用户的必要性。 如果您有任何问题或反馈,请留言。 要获取更多讨论和答疑的帮助,请访问 QuickSight 社区。 Ashok Dasineni 是 Amazon QuickSight 的解决方案架构师将 Okta 用户与组同步到 Amazon QuickSight
关键要点
新功能:自 2023 年 8 月起,Amazon QuickSight 支持与 AWS IAM 身份中心集成,允许通过 Okta 等外部身份提供商登录。解决方案概述:通过 AWS Lambda、Step Functions 和 EventBridge 自动同步 Okta 用户和组信息。最佳实践:为确保高效同步,建议参考当前的 API Token 设置及身份提供者的配置。解决方案概述
OKTAAPITokenOKTADomainOKTAQuickSighAPPIdQuickSightAdminUserNameQuickSightAdminIAMRoleQuickSightAuthorIAMRoleQuickSightReaderIAMRole前置条件
从 IdP 检索 OKTAAPIToken 以进行 Lambda 的 API 调用
检索 IdP 的 OKTADomain
检索 OKTAQuickSighAPPId 以获取在 Okta 中配置的 QuickSight 应用
检索 QuickSightAdminUserName 以将资源转移到管理员用户
创建 QuickSight IAM 角色
使用 AWS CloudFormation 创建资源
启用 EventBridge 规则
注意事项
清理
结论
关于作者