跳至內容

如何針對 OpenSearch Service 叢集中的精細分級存取控制問題進行疑難排解?

3 分的閱讀內容
0

我在 Amazon OpenSearch Service 叢集中遇到存取控制錯誤或精細分級存取控制問題。

解決方法

先決條件:

  • 若要將其他 AWS 服務與 OpenSearch Service 搭配使用,請確定您已為服務 AWS Identity and Access Management (IAM) 角色提供所需的權限。
  • 若要為特定索引或儀表板提供精細分級存取控制,請將使用者對映至具備租用戶 Kibana 索引下列權限的角色:
    .kibana_hash_tenant_name
    注意: 請將 tenant_name 替換為您的租用戶名稱。OpenSearch 會自動為雜湊產生一個值。
  • 若要在欄位層級使用精細分級存取控制,請設定具有所需欄位層級安全性的角色。如需說明,請參閱 OpenSearch 網站上的 Defining roles (定義角色)。接著,若要將使用者對映至角色,請參閱 OpenSearch 網站的Mapping users to roles (將使用者對映至角色)。如需更多資訊,請參閱 OpenSearch 網站的 Field-level security (欄位層級安全性)。
  • 若要在文件層級使用精細分級存取控制,請建立具有所需文件層級安全性的 OpenSearch 安全性角色。接著,若要將使用者對映至角色,請參閱 OpenSearch 網站的Mapping users to roles (將使用者對映至角色)。如需更多資訊,請參閱 OpenSearch 網站的 Document-level security (文件層級安全性)。

如果您使用精細分級存取控制並收到錯誤,請根據收到的錯誤採取以下疑難排解動作。

注意: 您無法在 OpenSearch Service 中使用匿名存取。

"security_exception","reason":"no permissions for [action]" 403 錯誤

若要解決此錯誤,請確保 OpenSearch Service 叢集中的使用者或後端角色是否擁有必要的權限。如需必要權限的相關資訊,請參閱 OpenSearch 網站的Permissions (權限)。接著,請確保您已將使用者或後端角色對映至 OpenSearch 安全性角色。如需說明,請參閱 OpenSearch 網站上的 Mapping users to roles (將使用者對映至角色)。

"security_exception","reason":"no permissions for [action]" 錯誤

您必須從還原請求中排除系統索引。如果不這麼做,在還原快照時可能會遇到此錯誤,即使您具備必要權限亦然。

若要解決此問題,請執行下列命令,從還原請求中排除系統索引:

curl -XPOST 'domain-endpoint/_snapshot/snapshot-repository/snapshot-name/_restore' \
-d '{"indices": "-.kibana*,-.opendistro*"}' \
-H 'Content-Type: application/json'

注意: 請將 domain-endpoint 替換為您的網域端點,將 snapshot-repository 替換為您的快照儲存庫,並將 snapshot-name 替換為您的快照名稱。

"Missing role" 錯誤

若要登入 OpenSearch Dashboard,您必須將使用者或後端角色對映到至少一個 OpenSearch 安全性角色。如果不這麼做,在登入 OpenSearch Dashboard 時可能會收到以下錯誤訊息:

"Missing role.No roles available for this user, please contact your system administrator."

如要解決此問題,請參閱 OpenSearch 網站上的 Mapping users to roles (將使用者對映至角色)。

"User: anonymous is not authorized to perform: iam:PassRole" 錯誤

您必須將 manage_snapshots 角色對映至用來註冊手動快照的 IAM 角色。如果不這麼做,當您嘗試註冊手動快照儲存庫時,可能會收到這個錯誤。

若要解決此問題,請完成下列步驟:

  1. 以管理員使用者身分登入您的 OpenSearch Dashboard。
  2. 從導覽窗格中,選擇 Security (安全性)。
  3. 選擇 Roles (角色)。
  4. 選取 manage_snapshots
  5. 選擇 Mapped Users (已對映使用者),然後選擇 Manage Mapping (管理映射)。
  6. Backend Roles (後端角色) 中,輸入 IAM 角色的 Amazon Resource Name (ARN)。
  7. 按 Enter 鍵。
  8. 選擇 Map (對映)。

"User: anonymous is not authorized to perform: es:ESHttp HTTP_Method" 錯誤

請求者必須遵守網域存取政策要求。若未遵守,請求者將會收到 "not authorized to perform" 的錯誤訊息。

若要解決此錯誤,請更新網域存取政策以允許您所傳送的請求類型。若要允許未簽署的請求,請將 Principal (主體) 設為 "AWS": "*"

然後,根據政策的要求採取下列動作。

政策包含 IAM 主體

如果網域存取政策包含 IAM 主體,則 IAM 主體必須根據 AWS 第 4 版簽署程序簽署請求。在這種情況下,OpenSearch Service 會拒絕未簽署的請求,例如基本授權或匿名存取。

下列命令範例顯示 IAM 角色簽署的請求:

curl -X GET "opensearch_endpoint" \
      --user "AWS_ACCESS_KEY_ID":"AWS_SECRET_ACCESS_KEY" \
      -H "x-amz-security-token: AWS_SESSION_TOKEN" \
      --aws-sigv4 "aws:amz:region:es"

注意: 請將 opensearch_endpoint 替換為您的端點、AWS_ACCESS_KEY_ID 替換為您的存取金鑰、AWS_SECRET_ACCESS_KEY 替換為您的私密存取金鑰、AWS_SESSION_TOKEN 替換為您的工作階段權杖,並將 region 替換為您的 AWS 區域。對於來自 IAM 使用者的請求,請移除 -H "x-amz-security-token: AWS_SESSION_TOKEN" \

政策僅允許來自特定 IP 位址的請求

如果政策包含 IP 位址條件,並使用 "Principal": { "AWS": "*" } 的開放主體,則您可以使用未簽署的請求來存取 OpenSearch Service。不過,請求必須來自允許的 IP 位址。

**注意:**如果策略包含 IAM 主體且僅允許特定 IP 位址,則 IAM 主體必須簽署請求。此外,請求必須來自允許的 IP 位址。

政策會封鎖特定的 HTTP 動作

請確保網域存取政策允許您請求的 HTTP 方法。例如,如果您傳送 POST 請求,請確保政策中包含 es:ESHttpPost 動作。

"Couldn't find any Elasticsearch data" 錯誤

升級至 OpenSearch Service 7.9 版本後,在具備精細分級存取控制的叢集中建立索引模式時,您可能會收到此錯誤。請確保指派給使用者的角色在相關索引和別名上具備 indices:admin/resolve/index 權限。如需更多資訊,請參閱 OpenSearch 網站上的 Resolve Index API (解決索引 API)。

"401 unauthorized" 錯誤

若要存取具有精細分級存取控制的叢集,您必須使用 **-u ** 旗標進行驗證。例如,下列命令會失敗並顯示 "401 unauthorized" 錯誤訊息:

curl Domain_Endpoint

若要存取您的叢集,請執行下列命令,並使用 **-u ** 旗標以包含您的使用者名稱和密碼:

curl -u 'username:password' Domain_Endpoint

注意: 請將 username 替換為您的使用者名稱、password 替換為您的密碼,並將 Domain_Endpoint 替換為您的網域端點。

執行 curl 命令時,必須使用有效字元。如果您在 curl 命令中將 $! 字元與 -u 旗標一起用於主要憑證,則可能會收到 "401 unauthorized" 錯誤。此外,請務必將憑證置於單引號中。

命令範例:

curl -u 'username' Domain_Endpoint

注意: 請將 username 替換為您的使用者名稱,並將 Domain_Endpoint 替換為您的網域端點。

"Authentication finally failed" 錯誤

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱 Troubleshooting errors for the AWS CLI (對 AWS CLI 錯誤進行疑難排解)。此外,請務必使用最新版 AWS CLI

您必須傳送與網域的使用者類型相符的請求。如果您傳送基本 (使用者名稱/密碼) 驗證要求,但您將網域的主要使用者類型設為 IAM 主體,則會收到此錯誤。如果是主要使用者,您的用戶端必須向網域傳送由 AWS 第 4 版簽署程序簽署的請求。

若要使用 HTTP 基本驗證,請執行以下 update-domain-config AWS CLI 命令,將主要使用者類型變更為內部使用者資料庫:

aws opensearch update-domain-config --domain-name domain-name --advanced-security-options InternalUserDatabaseEnabled=true

注意: 請將 domain-name 替換為您的網域名稱。

相關資訊

OpenSearch 網站上的 Index Managemen (索引管理)

AWS 官方已更新 8 個月前