本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
文件層級存取控制
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.AllMicrosoft GraphGroupMember.Read.All上的 和 (用於身分爬取)。 -
Sites.FullControl.AllSharePoint 上的 (用於文件存取驗證)。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 意識,請在 true中aclEnabled將 設定為 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 應用程式許可。執行下列各項檢查:
-
Microsoft 圖形 (爬蟲):
取得範圍為 的應用程式字符
https://graph.microsoft.com/.default。解碼字符並確認
roles宣告包含必要的 Microsoft Graph 許可 (User.Read.All、GroupMember.Read.All和Files.Read.All)。呼叫
GET https://graph.microsoft.com/v1.0/users/{user}/drive/root/children並確認它列出使用者的磁碟機項目。
-
SharePoint REST (即時驗證):
使用範圍為 的憑證用戶端聲明來取得權杖
https://{tenant}-my.sharepoint.com/.default。確認字符的
roles宣告包含 SharePointSites.FullControl.All許可。roles: null值表示缺少許可或管理員同意。呼叫
GET https://{tenant}-my.sharepoint.com/_api/web並確認成功 (HTTP 200)。失敗或未經授權的回應表示缺少 SharePoint 許可或管理員同意,這會導致所有文件被拒絕。
注意
修正許可後,SharePoint 呼叫會立即在權杖層級成功,但已測試使用者的end-to-end擷取仍可延遲即時存取驗證中所述的快取 TTL。請勿根據快取的使用者來結束修正失敗。
疑難排解
注意
ACL 設定錯誤不會在擷取期間產生明確的錯誤。擷取關閉失敗:會無提示地省略受影響的文件,因此查詢會傳回較少或零的結果,而不是錯誤。使用上述驗證檢查來診斷這些問題。
| 徵狀 | 可能原因 | 修正 |
|---|---|---|
| 擷取會傳回 0 個結果,但使用者可以在 OneDrive 中存取 。 | Microsoft Graph 許可存在,但缺少 SharePoint 應用程式許可或管理員同意,因此 SharePoint REST 呼叫會遭到拒絕,且每個文件都會遭到拒絕。 | 授予具有管理員同意的 SharePoint Sites.FullControl.All許可。由於這些應用程式登入資料會快取,因此最多需要一小時的時間,變更才會生效,或是與not-yet-queried的使用者進行測試,以便更快確認。 |
| 使用者在 OneDrive 中的存取已變更,但新結果不會立即反映。 | 每個使用者存取結果在資料來源和 Bedrock 受管知識庫 (通常在大約兩分鐘內) 之間最終一致,因此最近的存取變更可能不會立即反映。 | 在資料來源反映變更之後,請等待約兩分鐘,然後重試。 |
| 所有使用者在先前運作後都會遭到拒絕。 | 憑證已過期,或管理員同意已撤銷。 | 在 Entra 應用程式註冊和 Amazon S3 中續約憑證,並重新授予管理員同意。 |
| 雖然組態看起來正確,網路爬取或同步會失敗。 | 缺少必要的 Microsoft Graph 應用程式許可。 | 授予 Files.Read.All、User.Read.All、 Sites.Read.All和 GroupMember.Read.All。 |
| 憑證密碼或字符挖掘錯誤。 | .p12 密碼不符合 certificatePassword。 |
將 certificatePassword設定為用來建立 .p12 檔案的密碼。 |