

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

# 文件層級存取控制
<a name="kb-managed-ds-sharepoint-acl"></a>

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

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

## 運作方式
<a name="kb-managed-ds-sharepoint-acl-how"></a>

當使用者查詢使用啟用 ACL 的 SharePoint 資料來源的知識庫時，Bedrock 受管知識庫會分兩個階段強制執行存取控制：
+ **擷取前篩選** — Bedrock 受管知識庫會套用上次網路爬取期間從 SharePoint 同步的存取控制清單，只傳回允許使用者 （或其群組） 存取的候選文件。
+ **即時驗證** — Bedrock 受管知識庫會檢查使用者在 SharePoint 中的目前存取權，以即時驗證候選文件。回應中僅包含使用者目前獲授權存取的文件。

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

## 爬取的內容
<a name="kb-managed-ds-sharepoint-acl-crawl"></a>

啟用 ACLs時，Bedrock 受管知識庫會從 SharePoint 爬取下列許可結構：
+ 網站層級成員資格和角色指派
+ 文件程式庫層級許可
+ 項目層級 （檔案和頁面） 許可，包括破壞繼承的唯一許可
+ 安全群組成員資格，包括 Microsoft Entra ID (Azure AD) 安全群組、啟用郵件的安全群組和分發群組。巢狀 （暫時性） 群組成員資格也會獲得解決。

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

## 啟用 ACL 意識
<a name="kb-managed-ds-sharepoint-acl-enable"></a>

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

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

您的 Entra ID 應用程式註冊必須具有下列應用程式許可：
+ `User.Read.All` Microsoft Graph `GroupMember.Read.All`上的 和 （用於身分爬取）
+ `Sites.FullControl.All` 在 SharePoint 上，或授予每個站台的許可 `Sites.Selected` （用於文件存取驗證）

`connectionConfiguration` 必須包含`certificateS3Path`指向 Amazon S3 中 PKCS\#12 (.p12) 憑證檔案的 。

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

```
"connectorParameters": {
    "type": "SHAREPOINT",
    "version": "1",
    "aclEnabled": true,
    "connectionConfiguration": {
        "tenantId": "{{your-tenant-id}}",
        "authType": "ENTRA_ID_APP_ONLY",
        "secretArn": "{{arn:aws:secretsmanager:region:account-id:secret:secret-name}}",
        "certificateS3Path": {
            "s3BucketName": "{{your-certificate-bucket}}",
            "s3KeyName": "{{certs/certificate.p12}}"
        }
    },
    "dataEntityConfiguration": {
        "siteUrls": [
            "{{https://contoso.sharepoint.com/sites/engineering}}"
        ],
        "crawlFiles": true,
        "crawlPages": true
    }
}
```

**注意**  
啟用 ACL 的 SharePoint `OAUTH2_APP` 資料來源不支援身分驗證類型。您必須使用 `ENTRA_ID_APP_ONLY`。

## 即時存取驗證
<a name="kb-managed-ds-sharepoint-acl-realtime"></a>

Bedrock 受管知識庫使用應用程式的憑證型許可 （為爬取設定`ENTRA_ID_APP_ONLY`的應用程式註冊），在查詢時間針對 SharePoint 驗證每個候選文件。與委派的使用者登入流程不同，不需要互動的每位使用者登入或同意 - 透過 `Sites.FullControl.All`或 `Sites.Selected`許可，驗證會使用相同的應用程式註冊和憑證，以確認查詢使用者仍然可以存取每個文件。

## 驗證您的組態
<a name="kb-managed-ds-sharepoint-acl-verify"></a>

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

1. **Microsoft Graph （網路爬取）**：
   + 取得具有範圍的應用程式字符`https://graph.microsoft.com/.default`，並確認`roles`宣告包含 `User.Read.All`和 `GroupMember.Read.All`。
   + 呼叫 Microsoft Graph 網站端點 （例如 `GET https://graph.microsoft.com/v1.0/sites/{site}`)，並確認它傳回網站。

1. **SharePoint REST （即時驗證）**：
   + 使用範圍為 的憑證用戶端聲明來取得權杖`https://{tenant}.sharepoint.com/.default`。
   + 確認字符的`roles`宣告包含 SharePoint `Sites.FullControl.All`（或 `Sites.Selected`) 許可。`roles: null` 值表示缺少許可或管理員同意。
   + 呼叫`GET https://{tenant}.sharepoint.com/_api/web`並確認成功 (HTTP 200)。失敗或未經授權的回應表示缺少 SharePoint 許可或管理員同意，這會導致所有文件被拒絕。

## 疑難排解
<a name="kb-managed-ds-sharepoint-acl-troubleshooting"></a>

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


**啟用 ACL 的 SharePoint 症狀、原因和修正**  

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