- Amazon Q 教程
- Amazon Q - 首页
- Amazon Q - 简介
- Amazon Q 企业版用户指南
- Amazon Q 企业版 - 工作流程
- Amazon Q 企业版 - 关键概念
- Amazon Q 企业版 - 订阅层级和索引类型
- Amazon Q 企业版 - 服务配额
- Amazon Q 企业版 - 文档属性
- Amazon Q 企业版 - 设置
- Amazon Q 企业版 - Identity Center 目录
- Amazon Q 企业版 - Identity Center 集成应用
- Amazon Q 企业版 - 身份联合应用
- Amazon Q 企业版 - 数据源连接器
- Amazon Q 企业版 - 增强应用
- Amazon Q 企业版 - 功能
- Amazon Q 企业版 - 安全性
- Amazon Q 企业版 - 监控
- Amazon Q 企业版 API 参考
- Amazon Q 企业版 - API 概述
- Amazon Q 企业版 - API 参考
- Amazon Q 企业版 - 支持的操作
- Amazon Q 企业版 - 支持的数据类型
- Amazon Q 企业版 - 通用参数
- Amazon Q 企业版 - 通用错误
Amazon Q 企业版 - 身份联合应用
Amazon Q 企业版通过 AWS Identity and Access Management 与您公司的身份系统连接,用于用户管理和身份验证。本章将简要介绍如何使用 IAM 联合身份访问管理最终用户访问权限来创建和配置 Amazon Q 企业版应用。
Okta IAM 联合身份
以下步骤展示如何将 Amazon Q 企业版与 Okta 集成。
先决条件
在开始将 Amazon Q 企业版与 Okta 集成之前,请确保您已:
- 创建 Okta 帐户并添加至少一个具有有效电子邮件地址的用户。
- 创建包含使用 IAM 联合身份访问的 Amazon Q 企业版 Web 体验中 IAM 角色中概述的权限的 IAM 策略。
步骤 1:设置 Okta 应用
要创建 Okta 实例,请按照以下步骤操作:
- 登录 Okta 并进入管理控制台。
- 在左侧导航窗格中,选择“应用程序”,然后选择“创建应用程序集成”。
- 在“创建新的应用程序集成”页面上,选择 SAML 2.0,然后选择“下一步”。
- 在“创建 SAML 集成”页面上的“常规设置”中,为“应用程序名称”输入应用程序的名称,然后选择“下一步”。
- 在“配置 SAML”中,执行以下操作:
- 对于“单点登录 URL”,请输入您的 Web 应用程序端点。
- 取消选中“将其用于接收者 URL”和“目标 URL”复选框。
- 然后,对于“接收者 URL 字段”,请输入以下 AWS 端点:https://signin.aws.amazon.com/saml。
- 对于“目标 URL”,请输入您的 Web 应用程序端点。
- 对于“受众 URI”(SP 标识 ID),请输入以下 AWS 端点:https://signin.aws.amazon.com/saml。
- 对于“名称 ID 格式”,设置为“持久”。
- 然后,向下滚动到页面底部,然后选择“下一步”。
- 在“创建 SAML 集成”页面上选择最佳选项,然后单击“完成”。您将被重定向到应用程序摘要页面。
- 在应用程序摘要页面上,从顶部导航菜单中选择“分配”,然后选择“分配”。
- 接下来,您下载 SAML 负载并复制您的“登录 URL”。
自定义应用端点 URL 格式:[您的 URL]/saml(例如:https://:8000/saml)
生成的 Web 体验端点 URL 格式:[您的 URL]/saml(例如:https://abcdefgh.qbusiness.us-east-1.on.aws/saml)
自定义应用端点 URL 格式:[您的 URL]/saml(例如:https://:8000/saml)
生成的 Web 体验端点 URL 格式:[您的 URL]/saml(例如:https://abcdefgh.qbusiness.us-east-1.on.aws/saml)
生成的 Web 体验端点 URL 格式:目前输入占位符 URL(例如:http://sampleurl.com),并在 Amazon Q 企业版应用程序创建过程结束时更新。
步骤 2:添加 IAM 身份提供商
要将 Okta 连接到 AWS Identity and Access Management,请按照以下步骤操作:
- 登录 AWS Identity and Access Management 控制台。
- 在左侧导航菜单中,从“访问管理”中选择“身份提供商”。
- 从“身份提供商”中选择“添加提供商”。
- 在“添加身份提供商”中,对于“配置提供商”,请执行以下操作:
- 对于“提供商类型”,选择“SAML”。
- 对于“提供商名称”,添加一个名称来标识您的身份提供商。
- 对于“元数据文档”,上传您在步骤 1 中从 Okta 下载并保存的 .xml 文件。
- 选择“添加提供商”。
- 在“身份提供商”摘要页面上,从“提供商”中选择您刚刚添加的提供商,然后执行以下操作:
- 从摘要页面复制并保存 ARN。您需要它来创建信任策略和 Okta 设置。ARN 格式:arn:aws:iam::aws-account-id:saml-provider/assigned-iam-idp-name。
- 然后,选择“分配角色”以使用身份提供商所需的权限创建 IAM 角色。
- 在“分配角色”中,对于“角色选项”,选择“创建新角色”。
- 然后,在“选定的信任实体页面”上,执行以下操作:
- 对于“受信任实体类型”,选择 SAML 2.0 联合身份。
- 在 SAML 2.0 联合身份中,从 SAML 2.0 基于提供商的下拉列表中,选择您添加的身份提供商。
- 对于“允许访问”,选择“仅允许编程访问”。
- 对于“属性”,选择 SAML:aud。
- 对于“值”,输入以下内容:https://signin.aws.amazon.com/saml。
- 选择“下一步”。
- 在“添加权限”页面上选择具有所需权限的 IAM 策略,然后单击“下一步”。
- 在“名称、审核和创建”页面上输入角色名称、可选说明和标签。然后,单击“创建角色”。
- 在“角色”页面上,选择您刚刚创建的 IAM 角色。然后,在角色摘要页面上,执行以下操作:
- 复制并保存角色 ARN(例如,arn:aws:iam::111122223333:role/sample-role),用于将您的 AWS IAM 身份提供商实例连接到 Okta。
- 通过添加新的语句来编辑信任策略,将“account_id”替换为您的 AWS 帐户 ID,将“saml_provider”替换为您的 IAM 身份提供商 ARN 中的 assigned-iam-idp-name。
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::{{account_id}}:saml-provider/[[saml_provider]]"
},
"Action": "sts:AssumeRoleWithSAML",
"Condition": {
"StringEquals": {
"SAML:aud": "https://signin.aws.amazon.com/saml"
}
}
},
{
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::{{account_id}}:saml-provider/[[saml_provider]]"
},
"Action": "sts:TagSession",
"Condition": {
"StringLike": {
"aws:RequestTag/Email": "*"
}
}
}
]
步骤 3:将 IAM 连接到 Okta
在此步骤中,我们正在配置 AWS IAM 和 Okta 之间的信任关系。
- 登录 Okta 并进入管理控制台。
- 在左侧导航窗格中,选择“应用程序”,然后选择您创建的 Okta 应用程序。
- 在“常规”中,从“SAML 设置”中选择“编辑”。
- 在“编辑 SAML”中,对于“常规设置”,选择“下一步”。
- 在“配置 SAML”中,向下滚动到“属性语句”部分,然后添加属性。
步骤 4:创建 Q 企业版应用
要使用控制台创建应用程序,请按照以下步骤操作:
- 登录 AWS 管理控制台并打开 Amazon Q 企业版控制台。
- 从“工作原理”菜单中,选择“试用快速应用程序”。
- 在“创建应用程序”页面上的“应用程序设置”中,输入您的 Amazon Q 企业版应用程序的应用程序名称。
- 在“服务访问”中,从选项(例如“创建并使用新的服务链接角色 (SLR)”、“创建并使用新的服务角色 (SR)”、“使用现有的服务角色 (SR)/服务链接角色 (SLR)”和“服务角色名称”)中选择授权 Amazon Q 企业版的方法。
- 要自定义您的加密设置,请选择“自定义加密设置(高级)”。
- 对于“访问管理方法”,选择“IAM Identity Center”。
- 要在 Amazon Q 企业版中为 IAM Identity Center 集成启用跨区域调用,请先创建一个 IAM Identity Center 实例,然后激活“启用跨区域调用”。
- 然后将 Amazon Q 企业版连接到 IAM Identity Center。
- 要开始创建应用程序,请选择“创建”。
步骤 5:设置 Q 企业版检索器
要使用控制台创建 Amazon Q 企业版检索器,请按照以下步骤操作:
- 登录 AWS 管理控制台并打开 Amazon Q 企业版控制台。
- 完成创建 Amazon Q 企业版应用程序的步骤。
- 然后,对于“选择检索器”,选择“使用本机检索器”。
- 在“索引配置”中,根据您的用例在“入门”和“企业”索引类型之间进行选择,并选择您需要的单元数量。
- 对于“标签”,选择是否要添加索引标签。
- 要创建检索器和索引,请选择“创建”。
要使用控制台创建 Amazon Kendra 检索器,请按照以下步骤操作:
- 登录 AWS 管理控制台并打开 Amazon Q 企业版控制台。
- 完成创建 Amazon Q 企业版应用程序的步骤。
- 在“选择检索器”中,选择“使用现有检索器”。
- 在“标签”中,选择是否要添加检索器标签。
- 要将您的应用程序环境连接到您的数据源,请选择“下一步”。
步骤 6:链接 Q 企业版数据源
为您的 Amazon Q 企业版应用程序选择一个检索器,然后将其连接到数据源。可用的数据源取决于您选择的检索器。
如果您使用 Amazon Q 企业版检索器,您可以从以下选项中选择:
- 通过使用 CreateDataSource API 操作连接到任何 Amazon Q 企业版支持的数据源连接器。
- 通过使用 BatchPutDocument API 操作直接上传文档。
步骤 7:管理访问权限
要管理用户访问权限,请按照以下步骤操作:
- 登录 AWS 管理控制台并打开 Amazon Q 企业版控制台。
- 完成创建 Amazon Q 企业版应用程序的步骤。
- 将默认订阅层级设置为 Q 企业版专业版或 Q 企业版精简版。这将成为所有登录到您的 Web 体验的用户默认设置。
- 选择“创建应用程序”。
自定义 Web 体验
要自定义 Amazon Q 企业版 Web 体验,您需要按照以下步骤操作:
- 登录AWS 管理控制台并打开Amazon Q 企业版控制台。
- 完成创建 Amazon Q 企业版应用程序的步骤。
- 然后,在Amazon Q 企业版应用程序环境页面上,选择您的应用程序,然后选择“自定义 Web 体验”。
- 在“自定义 Web 体验”中,从右侧导航窗格中选择“自定义 Web 体验”。
- 在“自定义 Web 体验”中,输入标题、欢迎消息、显示示例提示。
- 然后选择“保存”。
将应用连接到单个 IdP
您可以将多个 Amazon Q 企业版自定义应用程序连接到单个基于 SAML 2.0 或 OIDC 的身份提供商 (IdP) 应用程序。
使用 SAML
要使用 SAML 将多个 Amazon Q 企业版自定义应用程序连接到 Okta,请按照以下步骤操作:
- 登录 Okta 并进入管理控制台。
- 在左侧导航窗格中,选择“应用程序”,然后选择您现有的 SAML 2.0 应用程序。
- 从“常规”中,选择“SAML 设置”。
- 保持您的“常规设置”不变,然后选择“下一步”。
- 编辑 SAML 集成:在“SAML 设置”中的“常规”下,为您的第一个 SAML 应用程序输入“单点登录 URL”和“受众 URI”。
- 然后,从“常规”中,选择“显示高级设置”。
- 向下滚动到“其他可请求的 SSO URL”,然后选择“添加其他”。
- 添加其他 SAML 应用程序的“单点登录 URL”,包括每个应用程序的索引值。使用格式:https://:8000/saml。
- 然后,向下滚动并选择“下一步”。
- 在“反馈”页面上,选择“完成”。
使用 OIDC
要使用 OIDC 将多个 Amazon Q 企业版自定义应用程序连接到 Okta,请按照以下步骤操作:
- 登录 Okta 并进入管理控制台。
- 从“常规”中,向下滚动到“常规设置”,然后选择“编辑”。
- 从“登录”中,对于“登录重定向 URI”,然后选择“编辑”。
- 在“登录重定向 URI”中,选择“添加 URI”以添加多个 URI。然后,选择“保存”。
创建 IAM API 应用
请按照以下步骤完成创建使用 API 的 IAM 联合身份应用程序。
先决条件
在开始设置进行 Sig V4 身份验证的 API 调用之前,请确保您已完成以下操作:
- 创建 Amazon Q 企业版应用程序。
- 创建 Okta IdP 实例并设置用户和组。这些步骤也适用于连接到您的 IAM 实例的其他身份提供商。
- 为您的 Amazon Q Business 应用程序创建了一个 IAM 实例,并连接了 Okta 作为您的身份源。
- 配置对 AWS CLI 的访问。
一次性设置
以下部分概述了设置 Amazon Q Business 控制平面的步骤。您只需要执行这些步骤一次。
- 在 Okta 中创建 OIDC 应用程序集成。
- 使用以下命令创建 IAM 身份提供商
aws iam \
create-open-id-connect-provider \
--url issuer-url
- 创建一个名为 policies 的目录。
- 在该目录中,创建一个名为 trustpolicyforfederation.json 的文件并保存,其中包含以下 JSON 代码
{
"Version": "2012-10-17",
"Statement": {
"Sid": "RoleForOkta",
"Effect": "Allow",
"Principal": {
"Federated": "OpenIdConnectProviderArn"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"issuer-url:aud": "client-id"
}
}
}
}
接下来,为您的 Web 体验创建 IAM 策略。为此,请执行以下步骤
在 policies 目录中,创建一个名为 permspolicyforfederation.json 的文件并保存,其中包含以下 JSON 代码
"Version": "2012-10-17",
"Statement": [{
"Sid": "QBusinessConversationPermissions",
"Effect": "Allow",
"Action": [
"qbusiness:Chat",
"qbusiness:ChatSync",
"qbusiness:ListMessages",
"qbusiness:ListConversations",
"qbusiness:PutFeedback",
"qbusiness:DeleteConversation",
"qbusiness:GetWebExperience",
"qbusiness:GetApplication",
"qbusiness:ListPlugins",
"qbusiness:GetChatControlsConfiguration",
"qbusiness:ListRetrievers"
],
"Resource": "arn:aws:qbusiness:{{region}}:{{source_account}}:application/{{application_id}}"
},
{
"Sid": "QBusinessRetrieverPermission",
"Effect": "Allow",
"Action": [
"qbusiness:GetRetriever"
],
"Resource": [
"arn:aws:qbusiness:{{region}}:{{source_account}}:application/{{application_id}}",
"arn:aws:qbusiness:{{region}}:{{source_account}}:application/{{application_id}}/retriever/*"
]
},
{
"Sid": "QBusinessAutoSubscriptionPermission",
"Effect": "Allow",
"Action": [
"user-subscriptions:CreateClaim"
],
"Condition": {
"Bool": {
"user-subscriptions:CreateForSelf": "true"
},
"StringEquals": {
"aws:CalledViaLast": "qbusiness.amazonaws.com"
}
},
"Resource": [
"*"
]
},
{
"Sid": "QBusinessKMSDecryptPermissions",
"Effect": "Allow",
"Action": [
"kms:Decrypt"
],
"Resource": [
"arn:aws:kms:{{region}}:{{account_id}}:key/[[key_id]]"
],
"Condition": {
"StringLike": {
"kms:ViaService": [
"qbusiness.{{region}}.amazonaws.com",
"qapps.{{region}}.amazonaws.com"
]
}
}
},
{
"Sid": "QAppsResourceAgnosticPermissions",
"Effect": "Allow",
"Action": [
"qapps:CreateQApp",
"qapps:PredictQApp",
"qapps:PredictProblemStatementFromConversation",
"qapps:PredictQAppFromProblemStatement",
"qapps:ListQApps",
"qapps:ListLibraryItems",
"qapps:CreateSubscriptionToken"
],
"Resource": "arn:aws:qbusiness:{{region}}:{{source_account}}:application/{{application_id}}"
},
{
"Sid": "QAppsAppUniversalPermissions",
"Effect": "Allow",
"Action": [
"qapps:DisassociateQAppFromUser"
],
"Resource": "arn:aws:qapps:{{region}}:{{source_account}}:application/{{application_id}}/qapp/*"
},
{
"Sid": "QAppsAppOwnerPermissions",
"Effect": "Allow",
"Action": [
"qapps:GetQApp",
"qapps:CopyQApp",
"qapps:UpdateQApp",
"qapps:DeleteQApp",
"qapps:ImportDocument",
"qapps:ImportDocumentToQApp",
"qapps:CreateLibraryItem",
"qapps:UpdateLibraryItem",
"qapps:StartQAppSession"
],
"Resource": "arn:aws:qapps:{{region}}:{{source_account}}:application/{{application_id}}/qapp/*",
"Condition": {
"StringEqualsIgnoreCase": {
"qapps:UserIsAppOwner": "true"
}
}
},
{
"Sid": "QAppsPublishedAppPermissions",
"Effect": "Allow",
"Action": [
"qapps:GetQApp",
"qapps:CopyQApp",
"qapps:AssociateQAppWithUser",
"qapps:GetLibraryItem",
"qapps:CreateLibraryItemReview",
"qapps:AssociateLibraryItemReview",
"qapps:DisassociateLibraryItemReview",
"qapps:StartQAppSession"
],
"Resource": "arn:aws:qapps:{{region}}:{{source_account}}:application/{{application_id}}/qapp/*",
"Condition": {
"StringEqualsIgnoreCase": {
"qapps:AppIsPublished": "true"
}
}
},
{
"Sid": "QAppsAppSessionModeratorPermissions",
"Effect": "Allow",
"Action": [
"qapps:ImportDocument",
"qapps:ImportDocumentToQAppSession",
"qapps:GetQAppSession",
"qapps:GetQAppSessionMetadata",
"qapps:UpdateQAppSession",
"qapps:UpdateQAppSessionMetadata",
"qapps:StopQAppSession"
],
"Resource": "arn:aws:qapps:{{region}}:{{source_account}}:application/{{application_id}}/qapp/*/session/*",
"Condition": {
"StringEqualsIgnoreCase": {
"qapps:UserIsSessionModerator": "true"
}
}
},
{
"Sid": "QAppsSharedAppSessionPermissions",
"Effect": "Allow",
"Action": [
"qapps:ImportDocument",
"qapps:ImportDocumentToQAppSession",
"qapps:GetQAppSession",
"qapps:GetQAppSessionMetadata",
"qapps:UpdateQAppSession"
],
"Resource": "arn:aws:qapps:{{region}}:{{source_account}}:application/{{application_id}}/qapp/*/session/*",
"Condition": {
"StringEqualsIgnoreCase": {
"qapps:SessionIsShared": "true"
}
}
}
aws iam \
create-role \
--role-name
--assume-role-policy-document file://policies/trustpolicyforfederation.json \
--policy-document file://policies/permspolicyforfederation.json
API 调用会话工作流程
首先,使用来自 Okta 的 IdToken 调用 AssumeRoleWithWebIdentity API 以获取 AWS 凭证。为此,请使用以下命令
aws sts assume-role-with-web-identity --role-arn role arn --role-session-name session-name --web-identity-token id-token-from-okta
然后,使用您从 AssumeRoleWithWebIdentity API 调用收到的凭证,在您的命令行环境中设置以下环境变量。
AWS_ACCESS_KEY_ID="identity-aware-sigv4-access-key" AWS_SECRET_ACCESS_KEY="identity-aware-sigv4-secret-key" AWS_SESSION_TOKEN="identity-aware-sigv4-session-token"
然后,使用以下命令进行 Amazon Q Business API 调用
aws qbusiness \ chat-sync \ --application-id application-id --user-message sample-chat-request