2026-01-27 15:01:49
7
在这篇文章中,您将了解到如何配置 AWS IAM 身份中心以实现亚马逊 Q 业务的可信身份传播。您将学习到可信身份传播的概念及其优势,以及如何利用提供的 AWS CloudFormation 模板自动化配置过程。本文还涵盖如何调用 Amazon Q 业务的身份感知对话 API,实现安全的企业级应用集成。
亚马逊 Q 业务是一款全托管的、具备权限意识的生成式人工智能AI助手,具备企业级的安全和隐私功能。您可以配置亚马逊 Q 业务以回答问题、提供摘要、生成内容以及根据企业数据安全地完成任务。亚马逊 Q 业务提供的本地数据源连接器能够无缝集成并索引来自多个存储库的内容至统一索引。它使用 AWS IAM 身份中心 记录您分配访问权限的员工用户及其属性,例如组关联。IAM 身份中心被许多 AWS 管理应用程序使用,例如 亚马逊 Q。您只需一次性将现有身份源连接到身份中心,然后便可以将用户分配给任意 AWS 服务。由于身份中心作为用户和组的共同引用,这些 AWS 应用程序能为您的用户在浏览 AWS 时提供一致的体验。例如,它使用户能够跨 Amazon Q 产品进行订阅管理,并从多个 AWS 账户整合 Amazon Q 的账单。此外,Q 业务对话 API 通过利用 IAM 身份中心实现的可信身份传播,增加了一层隐私保护。
亚马逊 Q 业务还提供丰富的 API 支持,以执行管理任务或为您的企业构建拥有自定义用户体验的 AI 助手。通过管理 API,您可以自动创建 Q 业务应用程序、设置数据源连接器、构建自定义文档丰富功能,并配置保护措施。使用对话 API,您可以与 Q 业务 AI 助手进行聊天并管理对话。可信身份传播基于用户上下文提供授权,增强了亚马逊 Q 业务的隐私控制。

在本文中,您将了解可信身份传播的含义及其使用原因,如何使用提供的 AWS CloudFormation 模板自动化配置可信令牌发布者,并了解从您的应用程序中调用 Amazon Q 业务身份感知对话 API 的方法。
可信身份传播 提供了一种机制,使得在 AWS 外部进行身份验证的应用程序能够代表其用户发起请求,使用可信令牌发布者。考虑一个使用外部身份提供商IdP的客户端服务器应用程序,实现用户身份验证以访问属于用户的 AWS 资源。例如,您的 Web 应用可能使用 Okta 作为外部 IdP,来验证用户查看其来自 Q 业务的私密对话。在此场景中,Q 业务无法直接使用第三方提供者生成的身份令牌来提供对用户私有数据的直接访问,因为没有可信任第三方颁发的身份令牌的机制。
为了解决这个问题,您可以利用 IAM 身份中心将来自外部 IdP 的用户身份引入 AWS 身份与访问管理 (IAM) 角色会话,从而根据用户、其属性和组成员资格授权请求,而不是在 IAM 策略中设置精细的权限。您可以将外部 IdP 颁发的令牌与来自身份中心的令牌进行交换。身份中心生成的令牌引用相应的身份中心用户。Web 应用现在可以使用新令牌向 Q 业务发起请求以获取私人聊天对话。该令牌引用身份中心中的相应用户,Q 业务可以基于身份中心中表示的用户或其组成员资格来授权对私密对话的访问。
使用可信身份传播的一些好处包括:
优势说明防止用户冒充保护用户私有数据不被滥用,避免身份欺骗造成的未经授权访问。促进审计性提高资源使用的责任感,Q 业务会自动记录 API 调用到 AWS CloudTrail,并附带用户标识符。提升软件设计准则深根于用户隐私的原则。下图展示了可信身份传播的客户端服务器架构模型。
要了解您的应用如何与 IAM 身份中心集成以实现可信身份传播,请考虑前面的图中展示的模型客户端服务器 Web 应用。在此模型架构中,Web 浏览器代表了您的应用的用户界面。这可以是一个在 Web 浏览器中呈现的网页、Slack、Microsoft Teams 或其他应用。应用服务器可能是运行在 Amazon 弹性容器服务 (Amazon ECS) 上的 Web 服务器,或是使用 AWS Lambda 实现的 Slack 或 Microsoft Teams 网关。身份中心本身可能部署在 被委派的管理账户或身份中心前图中的身份账户,也可能与应用服务器和亚马逊 Q 业务一起部署在同一 AWS 账户前图中的应用账户中。最后,您还需要一个 OAuth 20 OpenID Connect (OIDC) 外部 IdP,比如 Okta、Ping One、Microsoft Entra ID 或 Amazon Cognito,用于进行身份验证和授权。
可信身份传播的部署涉及五个步骤。作为最佳实践,我们建议 安全负责人 管理 IAM 身份中心的更新,而 应用负责人 负责管理应用的更新,从而确保职责的明确分离。安全负责人负责管理组织或账户的身份中心。应用负责人负责在 AWS 上创建应用。
安全负责人将外部 OIDC IdP 的颁发者 URL 添加到 IAM 身份中心实例的 可信令牌发布者。重要的是,颁发者 URL 必须与 IdP 在用户身份验证后生成的 JSON Web 令牌 (JWT) 身份令牌中存在的 iss 声明属性匹配。此配置只需针对给定的颁发者 URL 设置一次。
安全负责人在 IAM 身份中心中创建一个 客户管理的身份提供者应用程序,并明确配置特定的受众,授权该受众使用身份中心进行令牌交换。由于外部 IdP 可能为多个应用程序或受众验证用户,明确指定受众可以防止未经授权的应用程序使用令牌交换过程。重要的是,受众 ID 必须与 IdP 在用户身份验证后生成的 JWT 身份令牌中存在的 aud 声明属性匹配。
安全负责人编辑在上一步中创建的 客户管理的身份提供者应用程序 的应用策略,以添加或更新应用服务器或 AWS Lambda 使用的 IAM 执行角色。这有助于防止任何未经批准的用户或应用程序调用身份中心中的 CreateTokenWithIAM API 以初始化令牌交换。
应用负责人创建并将 IAM 策略添加到应用执行角色,允许该应用调用身份中心的 CreateTokenWithIAM API 进行令牌交换并使用 AWS 安全令牌服务 (AWS STS) 创建临时凭证。
应用负责人创建具有访问 Q 业务对话 API 的权限的 IAM 角色,以便使用 STS 创建一个临时凭证以调用 Q 业务 API。
您可以使用 AWS CloudFormation 模板,后文将讨论,以自动化上述部署步骤。有关设置可信身份传播的详细逐步说明,请参阅 IAM 身份中心文档。您还可以使用 AWS 命令行界面 (AWS CLI) 设置过程,在 使用 IAM 身份中心进行经过身份验证的亚马逊 Q 业务 API 调用 中找到相关信息。
重要提示:选择添加可信令牌发布者是一项安全决策,需要谨慎考虑。仅选择您信任的可信令牌发布者,以执行以下任务:
识别令牌中指定的用户进行身份验证。控制受众声明,声明您配置为用户标识符。生成 IAM 身份中心可交换的令牌和身份中心创建的令牌。控制身份中心客户管理应用的策略,以仅添加可以执行交换的 IAM 用户、角色和执行角色。对于典型的 Web 应用,可信身份传播的过程将涉及五个步骤,如下图所示。
登录并从 IdP 获取授权码。使用授权码和客户端密钥从 IdP 检索 ID 令牌。使用 IdP 生成的 JWT ID 令牌与 IAM 身份中心令牌交换,其中包含 AWS STS 上下文身份。使用 STS 上下文身份从 AWS STS 获取临时访问凭证。使用临时访问凭证访问 Q 业务 API。身份传播的端到端实现可在 AWS 示例 mainpy 的 ltprojecthomegt/webapp/mainpy 中找到。
在前面的授权流程中,关键步骤之一是步骤 3,其中 OAuth IdP 生成的 JWT ID 令牌与 IAM 身份中心交换以获取 AWS 身份感知的 JWT 令牌。接下来将探讨各自 JWT 令牌的关键属性。理解令牌将有助于排查授权流程中的错误。
以下是一个由 OIDC OAuth IdP 生成的 JWT ID 令牌示例。OIDC 的 ID 令牌采用 JWT 的形式,它是一个经过颁发者私钥签名的 JSON 有效负载,应用可以解析和验证。与访问令牌不同,ID 令牌旨在被 OAuth 客户端理解,并包含一组定义的属性名,为应用提供信息。重要属性包括 aud、email、iss 和 jti,它们用于由 IAM 身份中心验证 token 颁发者、匹配用户目录并签发新的身份中心令牌。以下代码示例展示了由 OIDC 外部 IDP例如 Okta颁发的 JWT 身份令牌。
json{ amr [pwd] athash 3fMsKeFGoem aud 0oae4epmqqa authtime 1715792363 email johndoe@com exp 1715795964 iat 1715792364 idp 00oe36vc7kj7 iss https//oktacom/oauth2/default jti ID7l6jFX3KO9M7 name John Doe nonce SampleNonce preferredusername johndoe@com sub 00ue36ou4gCv ver 1}
以下显示了通过 CreateTokenWithIAM 生成的 JWT 令牌示例。此令牌包含一个名为 stsidentitycontext 的属性,它允许您使用 AWS STS AssumeRole API 创建一个 身份增强的 IAM 角色会话。增强的 STS 会话允许接收 AWS 服务授权 IAM 身份中心用户执行某项操作,并将用户身份记录到 CloudTrail 进行审计。
json{ act { sub arnawsssotrustedTokenIssuer/ssoins/7477dfd9 } aud BTHYc9Ed3V authtime 20240515T165927Z awsapplicationarn arnawsssoapplication/ssoins/apl awscredentialid AAAAAGZE98YZj awsidentitystorearn arnawsidentitystoreidentitystore/d awsidentitystoreid d awsinstanceaccount awsinstancearn arnawsssoinstance/ssoins exp 1715795967 iat 1715792367 iss https//identitycenteramazonawscom/ssoins stsauditcontext AQoJb3JpBg== stsidentitycontext AQoJb3JpgY= sub 34d7be2}
与 IAM 身份中心和您的企业 IdP 集成的应用程序具有广泛的可能性。所有集成项目都需要配置身份中心以使用可信令牌发布者。本文讨论的示例 CloudFormation 模板旨在帮助您自动化核心可信令牌发布者的设置。如果您是 Amazon Q 业务的新用户,并且没有所有部署 CloudFormation 模板所需的输入,前提知识部分包含了一些资源的链接,可以帮助您入门。您还可以参阅随附的 AWS 示例库中的 使用 Okta 配置示例 Web 应用的教程。
注意:使用 AWS CloudFormation 模板和示例 Web 应用的完整源代码可在 AWS 示例库 中获取。
有关设置用户和组的教程,请参阅身份中心的 入门教程。这些教程包括从 Okta、Microsoft Entra ID、Google WorkSpace、Ping Identity、OneLogin、JumpCloud 和 CyberArk 同步用户和组。
Amazon Q 业务应用程序集成了身份中心。
有关配置起始应用程序的信息,请参见 创建示例 Amazon Q 业务应用程序。
加速器官网推荐需要访问 Q 业务 API 的 Web 应用程序。
在 AWS 示例 Webapp 中提供了一个示例 Web 应用程序。在 ltprojecthomegt/webapp 文件夹中查看 READmd 文件以获取有关设置该示例的附加说明。
部署了外部 OIDC IdP。
有关设置 Okta OIDC 应用程序的说明,请参见 在 Okta 管理控制台中创建 OIDC Web 应用。有关设置 Microsoft Entra ID OIDC 应用程序的说明,请参见 使用 Microsoft 身份平台注册应用程序。对于平台类型,选择 Web 应用,然后选择 Web。有关设置 Amazon Cognito 用户池的说明,请参见 创建新的用户池。安全负责人可以使用此 CloudFormation 模板自动配置 IAM 身份中心中的可信令牌发布者。在您的身份中心实例所在的 AWS 账户中部署此堆栈。这可能与您应用部署在同一 AWS 账户中,也可以作为单独的账户实例或作为 AWS 组织中的委派管理账户来进行管理。
要启动