- 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