

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

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

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

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

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

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

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

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

啟用 ACLs時，Bedrock 受管知識庫會從 Confluence 爬取下列許可結構：
+ **空間** — 預設情況下，空間許可會套用至空間中的所有文件。
+ **頁面** — 頁面可以限制為特定使用者和群組。巢狀頁面會從父頁面繼承限制。
+ **部落格** — 部落格文章可以限制為特定使用者和群組。
+ **附件** — 連接至頁面或部落格文章的檔案會繼承其父文件的存取控制。

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

若要啟用 Confluence 資料來源的 ACL 意識，請在 `true`中將 `aclEnabled`設定為 `BASIC` `connectorParameters`，並使用 身分驗證類型。除了標準電子郵件和 API 字符之外，秘密還必須包含 Atlassian 組織管理員憑證。身分爬取需要這些管理員登入資料。

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

除了標準 `username`、 `password`(API 字符） 和 `hostUrl` 欄位， AWS Secrets Manager 秘密必須包含下列組織管理員欄位。如需取得這些值step-by-step說明，請參閱 [設定 Confluence 的基本身分驗證](kb-managed-confluence-basic-setup.md)。
+ `adminApiKey` — 具有 `read:directories:admin`和 `read:workspaces:admin`範圍的 Atlassian 組織 API 金鑰。
+ `organizationId` — 您 Atlassian 組織的 UUID。
+ `directoryId` — Confluence 工作區的使用者目錄 UUID。

**注意**  
啟用 ACL 的 Confluence 資料來源不支援 `OAUTH2`身分驗證類型。您必須在秘密中使用 `BASIC`搭配 Atlassian 組織管理員登入資料。

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

Bedrock 受管知識庫使用秘密中設定的 Atlassian Admin API 字符，在查詢時間完全伺服器端針對 Confluence 驗證每個候選文件 — 沒有最終使用者登入。管理員權杖會檢查查詢使用者目前的空間、頁面和部落格限制，因此遵守自上次爬蟲以來所做的存取變更。

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

您可以獨立於擷取請求來驗證您的登入資料。執行下列各項檢查：

1. **Confluence 內容存取 （爬蟲）**：
   + 使用秘密中的 `username`和 API 字符 (`password`)，呼叫 Confluence REST API （例如，列出空格） 並確認傳回 HTTP 200。

1. **Atlassian Admin API （身分爬取和即時驗證）**：
   + 確認 `adminApiKey`具有 `read:directories:admin`和 `read:workspaces:admin`範圍。
   + 使用 `adminApiKey`，呼叫您 的 Atlassian 管理員目錄 API`directoryId`，`organizationId`並確認它傳回您組織的使用者和群組。

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

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


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

| 徵狀 | 可能原因 | 修正 | 
| --- | --- | --- | 
| 擷取會傳回 0 個結果，但使用者在 Confluence 中具有存取權。 | Atlassian Admin API 金鑰缺少範圍，或 organizationId/directoryId 錯誤，因此無法解析使用者和群組限制。 | 確認 adminApiKey具有 read:directories:admin和 read:workspaces:admin，以及 organizationId和 directoryId 是正確的。 | 
| 爬取或同步失敗。 | username 或 API 字符 (password) 無效。 | 驗證秘密中的BASIC使用者名稱和 API 字符。 | 
| 所有使用者在先前運作後都會遭到拒絕。 | API 字符或管理員 API 金鑰已過期或已撤銷。 | 在秘密中輪換受影響的登入資料。 | 