- 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://127.0.0.1:8000/saml)
生成的 Web 体验端点 URL 格式:[您的 URL]/saml(例如:https://abcdefgh.qbusiness.us-east-1.on.aws/saml)
自定义应用端点 URL 格式:[您的 URL]/saml(例如:https://127.0.0.1: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://127.0.0.1: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