本頁說明如何在 Agent Search 中,為搜尋應用程式強制執行資料來源存取權控管。
在 Agent Search 中控管資料來源的存取權,可限制使用者在搜尋應用程式結果中查看的資料。Google 會使用您的識別資訊提供者,識別執行搜尋的使用者,並判斷他們是否有權存取搜尋結果中傳回的文件。
舉例來說,假設貴公司的員工使用搜尋應用程式搜尋 Confluence 文件,但您必須確保他們無法透過應用程式查看無權存取的內容。如果您已在 Google Cloud 為貴機構的識別資訊提供者設定工作團隊集區,也可以在 Agent Search 中指定該工作團隊集區。現在,如果員工使用您的應用程式,搜尋結果只會顯示他們在 Confluence 中有權存取的文件。
關於資料來源存取控管
開啟存取控管是單次程序。
存取控管功能適用於 Cloud Storage、BigQuery、Google 雲端硬碟和所有第三方資料來源。
如要為 Agent Search 開啟資料來源存取控管功能,必須在 Google Cloud中設定貴機構的識別資訊提供者。系統支援下列驗證架構:
Google Identity:
情況 1:如果您使用 Google Identity,所有使用者身分和使用者群組都會透過 Google Cloud管理。如要進一步瞭解 Google Identity,請參閱 Google Identity 說明文件。
情況 2:您使用第三方識別資訊提供者,並已將身分與 Google 身分同步處理。使用者必須先透過 Google 身分驗證,才能存取 Google 資源或 Google Workspace。
案例 3:您使用第三方識別資訊提供者,並已將身分與 Google 身分同步。不過,您仍使用現有的第三方識別資訊提供者進行驗證。您已透過 Google Identity 設定單一登入 (SSO),讓使用者先透過 Google Identity 登入,然後系統會將他們導向第三方識別資訊提供者。(設定其他 Google Cloud 資源或 Google Workspace 時,您可能已完成這項同步作業)。
第三方識別資訊提供者聯盟:如果您使用外部識別資訊提供者 (例如 Microsoft Entra ID、Okta 或 Ping),但不想將身分同步至 Google Cloud Identity,則必須先在 Google Cloud中設定員工身分聯盟,才能為 Agent Search 啟用資料來源存取控管。
如果您使用第三方連接器,
google.subject屬性必須對應至外部識別資訊提供者中的電子郵件地址欄位。以下是常用身分識別提供者的google.subject和google.groups屬性對應範例:使用 OIDC 通訊協定的 Microsoft Entra ID
google.subject=assertion.email google.groups=assertion.groupsMicrosoft Entra ID (使用 SAML 通訊協定)
google.subject=assertion.attributes['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name'][0] google.groups=assertion.attributes['http://schemas.microsoft.com/ws/2008/06/identity/claims/groups']google.subject=assertion.email google.groups=assertion.groupsgoogle.subject=assertion.subject google.groups=assertion.attributes['groups']
限制
存取控管有下列限制:
- 每份文件最多可設定 3,000 名讀取者。每個主體都計為一名讀取者,主體可以是群組或個別使用者。
- 在支援 Agent Search 的位置中,每個位置只能選取一個識別資訊提供者。
- 如要將資料來源設為存取權受控管,請在建立資料儲存庫時選取這項設定。您無法為現有資料儲存庫開啟或關閉這項設定。
- 控制台的「資料」>「文件」分頁不會顯示存取權受控管的資料來源資料,因為這類資料只能由具有檢視權限的使用者查看。
- 如要預覽使用第三方存取權控管的搜尋應用程式 UI 結果,您必須登入聯合控制台。請參閱「預覽存取權控管應用程式的結果」。
事前準備
本程序假設您已在Google Cloud 專案中設定識別資訊提供者。
- Google 身分:如果您使用 Google 身分,可以繼續進行「連線至識別資訊提供者」程序。
- 第三方識別資訊提供者:請確認您已為第三方識別資訊提供者設定員工身分集區。確認您在設定工作團隊集區時,已指定主體和群組屬性對應。如要瞭解屬性對應,請參閱 IAM 說明文件中的「屬性對應」。如要進一步瞭解工作團隊身分集區,請參閱 IAM 說明文件中的「管理工作團隊身分集區提供者」。
連線至識別資訊提供者
如要為 Agent Search 指定識別資訊提供者,並開啟資料來源存取控管功能,請按照下列步驟操作:
前往 Google Cloud 控制台的「AI Applications」頁面。
前往「Settings」 >「Authentication」頁面。
按一下要更新地點的編輯圖示 。
在「新增識別資訊提供者」對話方塊中選取識別資訊提供者。如果選取第三方識別資訊提供者,請同時選取適用於資料來源的工作團隊集區。
按一下 [儲存變更]。
設定具有存取控管機制的資料來源
如要對資料來源套用存取控管機制,請根據您設定的資料來源類型,按照下列步驟操作:
- 第三方資料來源:建立應用程式時,不需要額外設定。請跳至「預覽使用第三方存取控管設定的應用程式結果」
- Google 雲端硬碟:建立應用程式時,不需要進行其他設定。
- Cloud Storage 中的非結構化資料
- Cloud Storage 中的結構化資料
- BigQuery 的非結構化資料
- BigQuery 的結構化資料
Cloud Storage 中的非結構化資料
從 Cloud Storage 設定非結構化資料的資料儲存庫時,您也需要上傳 ACL 中繼資料,並將資料儲存庫設為存取控管:
準備資料時,請使用
acl_info欄位,將 ACL 資訊納入中繼資料。例如:{ "id": "<your-id>", "jsonData": "<JSON string>", "content": { "mimeType": "<application/pdf or text/html>", "uri": "gs://<your-gcs-bucket>/directory/filename.pdf" }, "acl_info": { "readers": [ { "principals": [ { "group_id": "group_1" }, { "user_id": "user_1" } ] } ] } }如要進一步瞭解含有中繼資料的非結構化資料,請參閱「為資料擷取作業做準備」一文的「非結構化資料」一節。
按照「建立搜尋資料儲存庫」中的步驟建立資料儲存庫時,您可以在控制台或使用 API 執行下列操作,啟用存取權控管:
- 控制台:建立資料儲存庫時,請選取「This data store contains access control information」(這個資料儲存庫含有存取控管資訊)。
- API:建立資料儲存庫時,請在 JSON 酬載中加入
"aclEnabled": "true"旗標。
按照「建立搜尋資料儲存庫」中的步驟匯入資料時,請務必執行下列操作:
- 從與非結構化資料相同的值區上傳中繼資料和存取控制清單資訊
- 如果使用 API,請將
GcsSource.dataSchema設為document
Cloud Storage 中的結構化資料
從 Cloud Storage 設定結構化資料的資料儲存庫時,您也需要上傳 ACL 中繼資料,並將資料儲存庫設為存取權控管:
準備資料時,請使用
acl_info欄位,將 ACL 資訊納入中繼資料。例如:{ "id": "<your-id>", "jsonData": "<JSON string>", "acl_info": { "readers": [ { "principals": [ { "group_id": "group_1" }, { "user_id": "user_1" } ] } ] } }按照「建立搜尋資料儲存庫」中的步驟建立資料儲存庫時,您可以在控制台或使用 API 執行下列操作,啟用存取權控管:
- 控制台:建立資料儲存庫時,請選取「This data store contains access control information」(這個資料儲存庫含有存取控管資訊)。
- API:建立資料儲存庫時,請在 JSON 酬載中加入
"aclEnabled": "true"旗標。
按照「建立搜尋資料儲存庫」中的步驟匯入資料時,請務必執行下列操作:
- 從與非結構化資料相同的值區上傳中繼資料和存取控制清單資訊
- 如果使用 API,請將
GcsSource.dataSchema設為document
BigQuery 的非結構化資料
從 BigQuery 設定非結構化資料的資料儲存庫時,您需要將資料儲存庫設為存取控制,並使用 Agent Search 的預先定義結構定義提供 ACL 中繼資料:
準備資料時,請指定下列結構定義。請勿使用自訂結構定義。
[ { "name": "id", "mode": "REQUIRED", "type": "STRING", "fields": [] }, { "name": "jsonData", "mode": "NULLABLE", "type": "STRING", "fields": [] }, { "name": "content", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "mimeType", "type": "STRING", "mode": "NULLABLE" }, { "name": "uri", "type": "STRING", "mode": "NULLABLE" } ] } { "name": "acl_info", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "readers", "type": "RECORD", "mode": "REPEATED", "fields": [ { "name": "principals", "type": "RECORD", "mode": "REPEATED", "fields": [ { "name": "user_id", "type": "STRING", "mode": "NULLABLE" }, { "name": "group_id", "type": "STRING", "mode": "NULLABLE" } ] } ] } ] } ]在 BigQuery 資料表中加入 ACL 中繼資料做為資料欄。
按照「建立搜尋資料儲存庫」中的步驟操作時,請在控制台中或使用 API 啟用存取控管:
- 控制台:建立資料儲存庫時,請選取「This data store contains access control information」(這個資料儲存庫含有存取控管資訊)。
- API:建立資料儲存庫時,請在 JSON 酬載中加入
"aclEnabled": "true"旗標。
按照「建立搜尋資料儲存庫」中的步驟匯入資料時,如果使用 API,請將
BigQuerySource.dataSchema設為document。
來自 BigQuery 的結構化資料
從 BigQuery 設定結構化資料的資料儲存庫時,您需要將資料儲存庫設為存取控管,並使用 Agent Search 的預先定義結構定義提供 ACL 中繼資料:
準備資料時,請指定下列結構定義。請勿使用自訂結構定義。
[ { "name": "id", "mode": "REQUIRED", "type": "STRING", "fields": [] }, { "name": "jsonData", "mode": "NULLABLE", "type": "STRING", "fields": [] }, { "name": "acl_info", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "readers", "type": "RECORD", "mode": "REPEATED", "fields": [ { "name": "principals", "type": "RECORD", "mode": "REPEATED", "fields": [ { "name": "user_id", "type": "STRING", "mode": "NULLABLE" }, { "name": "group_id", "type": "STRING", "mode": "NULLABLE" } ] } ] } ] } ]在 BigQuery 資料表中加入 ACL 中繼資料做為資料欄。
按照「建立搜尋資料儲存庫」中的步驟操作時,請在控制台中或使用 API 啟用存取控管:
- 控制台:建立資料儲存庫時,請選取「This data store contains access control information」(這個資料儲存庫含有存取控管資訊)。
- API:建立資料儲存庫時,請在 JSON 酬載中加入
"aclEnabled": "true"旗標。
按照「建立搜尋資料儲存庫」中的步驟匯入資料時,請務必執行下列操作:
- 如果使用控制台,請在指定要上傳的資料類型時,選取「含中繼資料且適用於結構化資料的 JSONL 檔案」
- 如果使用 API,請將
BigQuerySource.dataSchema設為document
在員工身分聯盟控制台中預覽結果
如要在Google Cloud 控制台中預覽使用第三方存取控管設定的應用程式結果,請使用貴機構的憑證登入。
如要預覽 UI 結果,請按照下列步驟操作:
前往 Google Cloud 控制台的「AI Applications」頁面。
按一下要預覽結果的搜尋應用程式名稱。
前往「預覽」頁面。
按一下「以聯合身分預覽」,前往員工身分聯盟控制台。
輸入工作團隊集區提供者和貴機構的憑證。
在隨即顯示的「預覽」頁面中,預覽應用程式的結果。
如要進一步瞭解如何預覽搜尋結果,請參閱「取得搜尋結果」。
如要進一步瞭解員工身分聯盟控制台,請參閱「控制台簡介 (已啟用聯盟)」。
將搜尋權限授予使用者
如要讓使用者透過應用程式搜尋受存取權控管的資料,您必須授予網域或工作團隊集區中的使用者存取權。Google 建議您將自訂 IAM 角色授予使用者群組。
- Google Identity:如果您使用 Google Identity,Google 建議您建立 Google 群組,納入所有需要搜尋的員工。如果您是 Google Workspace 管理員,可以按照「將貴機構的所有使用者加入群組」中的步驟,將機構中的所有使用者加入 Google 群組。
- 第三方識別資訊提供者:如果您使用外部識別資訊提供者 (例如 Okta 或 Microsoft Entra ID),請將所有員工加入單一群組。
Google 建議您建立自訂 IAM 角色,並使用下列權限授予使用者群組:
discoveryengine.answers.getdiscoveryengine.servingConfigs.answerdiscoveryengine.servingConfigs.searchdiscoveryengine.sessions.getdiscoveryengine.widgetConfigs.get
如要進一步瞭解如何使用 Identity and Access Management (IAM) 控管 Agent Search 資源的權限,請參閱「使用 IAM 控管存取權」。
如要進一步瞭解自訂角色,請參閱 IAM 說明文件中的「自訂角色」。
授權搜尋小工具
如要為存取權受控應用程式部署搜尋小工具,請按照下列步驟操作:
將 Discovery Engine 檢視者角色授予網域或工作團隊集區中需要發出搜尋 API 呼叫的使用者。
產生授權權杖,傳遞至小工具:
- Google 身分識別:產生 OAuth 2.0 存取權杖。
- 員工身分聯盟:按照「取得員工身分聯盟的短期權杖」一文中的步驟取得權杖。
請按照「新增含有授權權杖的小工具」一文的步驟操作,將權杖傳送給小工具。