

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

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

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

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

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

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

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

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

啟用 ACLs時，Bedrock 受管知識庫會從 Google Drive 爬取檔案層級共用許可，包括：
+ 直接使用者共用 （個別檔案許可）
+ Google 群組成員資格
+ 共用磁碟機成員資格

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

若要啟用 Google Drive 資料來源的 ACL 意識，請在 `true`中`aclEnabled`將 設定為 `SERVICE_ACCOUNT` `connectorParameters`，並使用 身分驗證類型。服務帳戶必須在 Google Workspace 管理員主控台中啟用全網域委派。

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

 AWS Secrets Manager 秘密必須包含 `adminAccountEmail`、 `clientEmail`和 `privateKey`。如需建立服務帳戶、設定全網域委派和取得這些值step-by-step說明，請參閱 [設定 Google Drive 的服務帳戶身分驗證](kb-managed-googledrive-service-account-setup.md)。

```
"connectorParameters": {
    "type": "GOOGLEDRIVE",
    "version": "1",
    "aclEnabled": true,
    "connectionConfiguration": {
        "authType": "SERVICE_ACCOUNT",
        "secretArn": "{{arn:aws:secretsmanager:region:account-id:secret:secret-name}}"
    },
    "dataEntityConfiguration": {
        "crawlMyDrive": true,
        "crawlSharedWithMe": false,
        "crawlSharedDrives": false
    }
}
```

**注意**  
啟用 ACL 的 Google Drive `OAUTH2` 資料來源不支援身分驗證類型。您必須`SERVICE_ACCOUNT`搭配全網域委派使用 。

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

Bedrock 受管知識庫使用服務帳戶的全網域委派，根據 Google Drive API 即時驗證文件存取，確認查詢使用者仍然可以存取每個候選文件。

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

您可以獨立於擷取請求來驗證您的服務帳戶組態。執行下列各項檢查：

1. **全網域委派**：
   + 在 Google Workspace Admin 主控台中，確認服務帳戶用戶端 ID 已取得所需範圍的授權 (Google Drive 唯讀和 Admin SDK 目錄/群組讀取範圍）。

1. **磁碟機存取 （網路爬取和驗證）**：
   + 使用模擬 的服務帳戶 (`clientEmail` 和 `privateKey`)`adminAccountEmail`，呼叫 Google Drive API 列出使用者的檔案並確認其成功。

1. **群組解析度**：
   + 呼叫 Admin SDK Directory API 列出使用者的群組成員資格，並確認傳回預期的群組。

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

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


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

| 徵狀 | 可能原因 | 修正 | 
| --- | --- | --- | 
| 擷取會傳回 0 個結果，但使用者在 Google Drive 中具有存取權。 | 未設定全網域委派，或服務帳戶缺少必要的範圍，因此無法驗證存取。 | 在 Google Workspace Admin 主控台中授權所需 Drive and Admin SDK 範圍的服務帳戶用戶端 ID。 | 
| 不接受以群組為基礎的存取。 | 委派中缺少 Admin SDK 目錄/群組讀取範圍。 | 將 Admin SDK 群組讀取範圍新增至服務帳戶的全網域委派。 | 
| 爬取或同步失敗。 | clientEmail/privateKey 無效，或adminAccountEmail不是工作區管理員。 | 驗證服務帳戶登入資料adminAccountEmail，也就是工作區管理員。 | 
| 所有使用者在先前運作後都會遭到拒絕。 | 服務帳戶金鑰已輪換或撤銷。 | 更新秘密privateKey中的 。 | 