View a markdown version of this page

文件層級存取控制 - Amazon Bedrock

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

文件層級存取控制

OneDrive 資料來源可選擇性支援文件層級存取控制。啟用時,Bedrock 受管知識庫會在每個網路爬取期間同步 OneDrive 的存取控制清單 (ACLs),並在查詢時驗證每個使用者的許可,因此使用者只會看到他們獲授權在 OneDrive 中存取的文件結果。如需所有連接器的 ACL 意識概觀,請參閱 存取控制清單意識啟用

ACL 意識不是授權

Bedrock 受管知識庫提供 ACL 感知篩選,而不是安全界限。Bedrock 受管知識庫不會驗證最終使用者 — 您的應用程式負責驗證使用者並傳遞已驗證的身分內容。Bedrock 受管知識庫無法驗證您提供的使用者內容的真實性。因此,此功能會根據您提供的身分篩選結果,但不會構成真正的授權。在沒有上游身分驗證的情況下,您不得依賴此功能做為唯一存取控制機制。

運作方式

當使用者查詢使用啟用 ACL 的 OneDrive 資料來源的知識庫時,Bedrock 受管知識庫會分兩個階段強制執行存取控制:

  • 擷取前篩選 — Bedrock 受管知識庫會套用上次網路爬取期間從 OneDrive 同步的存取控制清單,只傳回允許使用者 (或其群組) 存取的候選文件。

  • 即時驗證 — Bedrock 受管知識庫會檢查使用者在 OneDrive 中的目前存取權,以即時驗證候選文件。回應中僅包含使用者目前獲授權存取的文件。

這種兩階段方法提供文件層級的存取控制,即使 OneDrive 許可在同步之間變更,也能保持最新狀態。

爬取的內容

啟用 ACLs時,Bedrock 受管知識庫會從 OneDrive 爬取檔案層級共用許可和安全群組指派。巢狀 (暫時性) 群組成員資格也會獲得解決。

在查詢時,您傳遞使用者的電子郵件地址 (非群組)。Bedrock 受管知識庫會從其編目的資料解析該使用者的群組成員資格,並在篩選結果時套用。如需身分模型的詳細資訊,請參閱 存取控制清單意識啟用

ACL 意識的先決條件

啟用 ACL 的 OneDrive 使用兩種不同的 Microsoft APIs,每個 API 都有自己的應用程式許可設定在您的 Microsoft Entra 應用程式中:爬蟲程式使用 Microsoft Graph API,而即時驗證使用 SharePoint REST API (OneDrive for Business 由 SharePoint 支援)。在啟用 ACL 意識之前,在管理員同意的情況下設定兩個 APIs 的許可。

  • User.Read.All Microsoft Graph GroupMember.Read.All上的 和 (用於身分爬取)。

  • Sites.FullControl.All SharePoint 上的 (用於文件存取驗證)。 Sites.Read.All不足 — 唯讀存取無法執行即時驗證所需的有效許可檢查。

重要

爬蟲程式使用 Microsoft Graph API,而即時驗證使用 SharePoint REST API — 具有不同應用程式許可的不同資源。Microsoft Graph 身分抓取許可是必要的,但還不夠:即時驗證還需要獲得管理員同意的 SharePoint Sites.FullControl.All許可。僅授予 Microsoft Graph 許可是啟用 ACL 的 OneDrive 資料來源即使使用者可以存取也不會傳回任何結果的最常見原因。

如需完整的設定程序,包括憑證,請參閱 設定 OneDrive 的 Microsoft Entra App ID 身分驗證

啟用 ACL 意識

若要啟用 OneDrive 資料來源的 ACL 意識,請在 trueaclEnabled將 設定為 ENTRA_APP_ID connectorParameters,並使用 驗證類型。此身分驗證類型使用應用程式許可,允許 Bedrock 受管知識庫在查詢時間爬取身分資訊並驗證文件存取。

重要

ACL 組態是永久的。您無法在無 ACLs 支援的情況下建立的資料來源上啟用 ACL,而且一旦啟用,就無法停用 ACLs。

為 OneDrive 啟用 ACLs 時,您必須在connectionConfiguration指向 Amazon S3 certificateS3Path中 PKCS#12 (.p12) 憑證檔案的 中包含 。此憑證用於針對 SharePoint REST API 進行即時 ACL 驗證。停用 ACLs時,certificateS3Path不需要 。

"connectorParameters": { "type": "ONEDRIVE", "version": "1", "aclEnabled": true, "connectionConfiguration": { "tenantId": "your-tenant-id", "authType": "ENTRA_APP_ID", "secretArn": "arn:aws:secretsmanager:region:account-id:secret:secret-name", "certificateS3Path": { "s3BucketName": "your-certificate-bucket", "s3KeyName": "certs/certificate.p12" } }, "dataEntityConfiguration": { "crawlPersonalDrives": true } }
注意

秘密中的 certificatePassword 欄位是選用的。如果您省略它,Boodrock 受管知識庫會使用應用程式的用戶端 ID 做為密碼來開啟 PKCS#12 (.p12) 檔案,因此必須使用該密碼建立憑證。我們建議您一律設定明確的高certificatePassword熵,以保護憑證的靜態私有金鑰。

注意

啟用 ACL OAUTH2 的 OneDrive 資料來源不支援身分驗證類型。您必須使用 ENTRA_APP_ID

即時存取驗證

Bedrock 受管知識庫使用應用程式憑證,即時驗證每個候選文件,沒有最終使用者登入或委派的同意。由於商務用 OneDrive 由 SharePoint 提供支援,因此 Bedrock 受管知識庫會針對租戶 OneDrive 主機的 SharePoint REST API 檢查查詢使用者的有效許可。

OneDrive 即時驗證使用雙憑證模型,且需要兩個登入資料:

  • AWS Secrets Manager 秘密中的用戶端 ID 和用戶端秘密,會截取用來解析租戶 OneDrive 主機 (-my.sharepoint.com主機) 的 Microsoft Graph 字符。

  • 來自 的憑證會certificateS3Path刪除用於許可檢查本身的 SharePoint REST 字符。憑證是即時驗證的授權憑證 – 用戶端秘密字符無法單獨執行檢查。

重要

應用程式必須持有具有管理員同意的 SharePoint Sites.FullControl.All許可;Sites.Read.All因為有效許可檢查需要管理/完整控制權限,所以不足。如果沒有正確的許可,即時驗證就無法評估有效許可,也無法關閉,即使使用者可以存取且爬蟲和擷取前篩選成功,也會拒絕每個查詢的每個文件。請參閱 ACL 意識的先決條件

注意

在您授予或同意 SharePoint 應用程式許可後,最多需要一小時的時間,變更才會在變更之前檢查的使用者生效,因為應用程式存取登入資料會快取。若要更快確認變更,請使用尚未查詢的不同使用者進行測試。

驗證您的組態

您可以獨立於擷取請求來驗證您的 Entra 應用程式許可。執行下列各項檢查:

  1. Microsoft 圖形 (爬蟲)

    • 取得範圍為 的應用程式字符https://graph.microsoft.com/.default

    • 解碼字符並確認roles宣告包含必要的 Microsoft Graph 許可 (User.Read.AllGroupMember.Read.AllFiles.Read.All)。

    • 呼叫 GET https://graph.microsoft.com/v1.0/users/{user}/drive/root/children 並確認它列出使用者的磁碟機項目。

  2. SharePoint REST (即時驗證)

    • 使用範圍為 的憑證用戶端聲明來取得權杖https://{tenant}-my.sharepoint.com/.default

    • 確認字符的roles宣告包含 SharePoint Sites.FullControl.All許可。roles: null 值表示缺少許可或管理員同意。

    • 呼叫GET https://{tenant}-my.sharepoint.com/_api/web並確認成功 (HTTP 200)。失敗或未經授權的回應表示缺少 SharePoint 許可或管理員同意,這會導致所有文件被拒絕。

注意

修正許可後,SharePoint 呼叫會立即在權杖層級成功,但已測試使用者的end-to-end擷取仍可延遲即時存取驗證中所述的快取 TTL。請勿根據快取的使用者來結束修正失敗。

疑難排解

注意

ACL 設定錯誤不會在擷取期間產生明確的錯誤。擷取關閉失敗:會無提示地省略受影響的文件,因此查詢會傳回較少或零的結果,而不是錯誤。使用上述驗證檢查來診斷這些問題。

啟用 ACL 的 OneDrive 症狀、原因和修正
徵狀 可能原因 修正
擷取會傳回 0 個結果,但使用者可以在 OneDrive 中存取 。 Microsoft Graph 許可存在,但缺少 SharePoint 應用程式許可或管理員同意,因此 SharePoint REST 呼叫會遭到拒絕,且每個文件都會遭到拒絕。 授予具有管理員同意的 SharePoint Sites.FullControl.All許可。由於這些應用程式登入資料會快取,因此最多需要一小時的時間,變更才會生效,或是與not-yet-queried的使用者進行測試,以便更快確認。
使用者在 OneDrive 中的存取已變更,但新結果不會立即反映。 每個使用者存取結果在資料來源和 Bedrock 受管知識庫 (通常在大約兩分鐘內) 之間最終一致,因此最近的存取變更可能不會立即反映。 在資料來源反映變更之後,請等待約兩分鐘,然後重試。
所有使用者在先前運作後都會遭到拒絕。 憑證已過期,或管理員同意已撤銷。 在 Entra 應用程式註冊和 Amazon S3 中續約憑證,並重新授予管理員同意。
雖然組態看起來正確,網路爬取或同步會失敗。 缺少必要的 Microsoft Graph 應用程式許可。 授予 Files.Read.AllUser.Read.AllSites.Read.AllGroupMember.Read.All
憑證密碼或字符挖掘錯誤。 .p12 密碼不符合 certificatePassword certificatePassword設定為用來建立 .p12 檔案的密碼。