Amazon OpenSearch Service 中的精細存取控制 - Amazon OpenSearch Service

Amazon OpenSearch Service 中的精細存取控制

精細存取控制可提供額外的方式,以控制在 Amazon OpenSearch Service 上對資料的存取。例如,根據提出請求的人員,您可能會希望搜尋只傳回一個索引的結果。您可能會希望隱藏文件中的某些欄位,或是排除特定的文件。精細存取控制具有以下優勢:

  • 角色類型存取控制

  • 索引、文件和欄位層級的安全

  • OpenSearch Dashboards 多租用

  • OpenSearch 和 OpenSearch Dashboards 的 HTTP 基本身分驗證

宏觀:精細存取控制和 OpenSearch Service 安全

Amazon OpenSearch Service 安全具有三個主要層次:

網路

第一個安全層次是網路,它決定請求是否可以連線 OpenSearch Service 網域。如果您在建立網域時選擇 Public access (公有存取),則來自任何網際網路連線用戶端的請求都能連線到網域端點。如果您選擇 VPC access (VPC 存取),用戶端必須連線至 VPC (且相關聯的安全群組也必須允許),請求才能連線到端點。如需更多詳細資訊,請參閱 在 VPC 中啟動您的 Amazon OpenSearch Service 網域

網域存取政策

第二個安全層次是網域存取政策。在請求連線到網域端點後,資源類型存取政策會允許或拒絕對指定 URI 的請求存取。存取政策會在請求到達 OpenSearch 本身之前,在網域的「邊緣」接受或拒絕請求。

精細定義存取控制

第三個和最後一個安全層次是精細存取控制。在資源類型存取政策允許請求連線到網域端點後,精細存取控制會評估使用者登入資料,並讓使用者通過身分驗證或拒絕請求。如果精細存取控制讓使用者通過身分驗證,則會擷取所有映射到該使用者的角色,並使用完整的許可集合來判斷如何處理請求。

注意

如果資源類型存取政策包含 IAM 使用者或角色,則用戶端必須使用 AWS Signature 第 4 版傳送簽章請求。因此,存取政策可能會和精細存取控制產生衝突,特別是當您使用內部使用者資料庫和 HTTP 基本身分驗證時。您無法使用使用者名稱及密碼,「以及」IAM 登入資料來簽署請求。一般而言,如果您啟用了精細存取控制,我們建議您使用不需要簽章請求的網域存取政策。

下圖說明了常見的組態:啟用精細存取控制的 VPC 存取網域、IAM 型的存取政策以及 IAM 主要使用者。


        具備 VPC 網域的精細存取控制授權流程

下圖說明了另一種常見的組態:啟用精細存取控制的公有存取網域,不使用 IAM 委託人的存取政策,以及內部使用者資料庫中的主要使用者。


        具備公有存取網域的精細存取控制授權流程

範例

假設有一個對 GET 提出的 movies/_search?q=thor 請求。使用者具備搜尋 movies 索引的許可嗎? 如果具備的話,則使用者具備查看其中所有文件的許可嗎? 回應應該要省略或匿名化任何欄位嗎? 針對主要使用者,回應看起來可能如下:

{ "hits": { "total": 7, "max_score": 8.772789, "hits": [{ "_index": "movies", "_type": "_doc", "_id": "tt0800369", "_score": 8.772789, "_source": { "directors": [ "Kenneth Branagh", "Joss Whedon" ], "release_date": "2011-04-21T00:00:00Z", "genres": [ "Action", "Adventure", "Fantasy" ], "plot": "The powerful but arrogant god Thor is cast out of Asgard to live amongst humans in Midgard (Earth), where he soon becomes one of their finest defenders.", "title": "Thor", "actors": [ "Chris Hemsworth", "Anthony Hopkins", "Natalie Portman" ], "year": 2011 } }, ... ] } }

如果具備受限性較高許可的使用者提出了完全相同的請求,則回應看起來可能會如下:

{ "hits": { "total": 2, "max_score": 8.772789, "hits": [{ "_index": "movies", "_type": "_doc", "_id": "tt0800369", "_score": 8.772789, "_source": { "year": 2011, "release_date": "3812a72c6dd23eef3c750c2d99e205cbd260389461e19d610406847397ecb357", "plot": "The powerful but arrogant god Thor is cast out of Asgard to live amongst humans in Midgard (Earth), where he soon becomes one of their finest defenders.", "title": "Thor" } }, ... ] } }

回應的命中數會較少,且每個命中的欄位數也會比較少。此外,release_date 欄位會進行匿名化。如果沒有具備任何許可的使用者提出相同的請求,則叢集會傳回錯誤:

{ "error": { "root_cause": [{ "type": "security_exception", "reason": "no permissions for [indices:data/read/search] and User [name=limited-user, roles=[], requestedTenant=null]" }], "type": "security_exception", "reason": "no permissions for [indices:data/read/search] and User [name=limited-user, roles=[], requestedTenant=null]" }, "status": 403 }

如果使用者提供了無效的登入資料,則叢集會傳回 Unauthorized 例外狀況。

重要概念

「角色」是使用精細存取控制的核心方式。在這種情況下,角色與 IAM 角色不同。角色包含了任何許可的組合:全叢集、特定索引、文件層級,以及欄位層級。

在設定角色後,您可以將該角色「映射」到一或多名使用者。例如,您可以將三個角色映射到單一使用者:其中一個角色提供存取給 Dashboards,第二個角色提供唯讀存取給 index1,第三個角色則提供寫入存取給 index2。或者,您可以在單一角色中包含這些許可。

使用者是向 OpenSearch 叢集提出請求的人員或應用程式。使用者擁有在提出請求時指定的憑證 (IAM 存取金鑰或使用者名稱和密碼)。透過 Amazon OpenSearch Service 上的精細存取控制,您可以在設定您的網域時,為您的主要使用者選擇其中一個。主要使用者具備叢集的完整許可,並會管理角色與角色映射。

  • 如果您為您的主要使用者選擇了 IAM,則所有向叢集提出的請求都必須使用 AWS Signature 第 4 版進行簽署。如需程式碼範例,請參閱 將 HTTP 請求簽署到 Amazon OpenSearch Service

    如果您希望在多個叢集上使用相同的使用者、希望使用 Amazon Cognito 存取 Dashboards,或是您有支援 Signature 第 4 版簽署的 OpenSearch 用戶端,則我們建議您使用 IAM。

  • 如果您選擇內部使用者資料庫,則您可以使用 HTTP 基本身分驗證 (以及 IAM 登入資料) 來向叢集提出請求。大多數用戶端支援基本身分驗證,包括 curl,也支援 AWS Signature Version 4 搭配 --aws-sigv4 選項。內部使用者資料庫會存放在 OpenSearch 索引中,因此您無法與其他叢集共享。

    如果您不需要跨多個叢集重複使用使用者、希望使用 HTTP 基本身分驗證來存取 Dashboards (而非 Amazon Cognito),或是您具備只支援基本身分驗證的用戶端,則我們建議您使用內部使用者資料庫。內部使用者資料庫是開始使用 OpenSearch Service 的最簡單方式。

啟用精細存取控制

使用主控台、AWS CLI 或組態 API 來啟用精細存取控制。如需這些步驟,請參閱 建立和管理 Amazon OpenSearch Service 網域

精細存取控制需要 OpenSearch 或 Elasticsearch 6.7 或更高版本。亦要求所有流向網域的流量皆使用 HTTPS、靜態資料加密,以及節點對節點加密。在您啟用精細存取控制後,您便無法停用此功能。

在現有網域上啟用精細存取控制

您可以在執行 OpenSearch 或 Elasticsearch 6.7 或更高版本的現有網域上,啟用精細存取控制。

在現有網域上啟用精細存取控制 (主控台)

  1. 選取網域,並選擇 Actions (動作) 和 Edit security configuration (編輯安全組態)。

  2. 選取 Enable fine-grained access control (啟用精細存取控制)。

  3. 選擇建立主要使用者的方法:

    • 如果您希望使用 IAM 進行使用者管理,請選擇 Set IAM ARN as master user (將 IAM ARN 設為主要使用者),並指定 IAM 角色的 ARN。

    • 如果您希望使用內部使用者資料庫,請選擇 Create master user (建立主要使用者) 並指定使用者名稱和密碼。

  4. (選用) 選取 Enable migration period for open/IP-based access policy (啟用開放/IP 型存取政策的遷移期)。此設定會啟用 30 天的過渡期,在此期間,您目前的使用者可繼續存取網域,不會中斷,且現有的開放和 IP 型存取政策仍可繼續使用您的網域。在此遷移期間,我們建議管理員為網域建立必要角色,並將其映射至使用者。如果您使用以身分為基礎的政策,而非開放或 IP 型存取政策,則您可以停用此設定。

    您也需要更新客户端,以在遷移期間使用精細存取控制。例如,如果您使用精細存取控制映射 IAM 使用者,則必須更新客户端,以開始使用 AWS 簽章版本 4 簽署請求。如果您使用精細存取控制設定 HTTP 基本身分驗證,則必須更新客户端,以在請求中提供適當的基本身分驗證憑證。

    在遷移期間,存取網域的 OpenSearch Dashboards 端點的使用者將直接登錄至 Discover (發現) 頁面,而非登入頁面。管理員和主要使用者可選擇 Login (登入),使用管理員憑據登入並設定角色映射。

    重要

    OpenSearch Service 會在 30 天後自動停用遷移期。我們建議您在建立必要角色並將其映射至使用者後,立即結束該角色。遷移期結束後,您便無法重新啟用。

  5. 選擇 Save changes (儲存變更)。

在叢集運作狀態變成紅色期間,變更會觸發藍/綠部署,但所有叢集操作皆不受影響。

在現有網域上啟用精細存取控制 (CLI)

AnonymousAuthEnabled 設定為 true,以使用精細存取控制來啟用遷移期:

aws opensearch update-domain-config --domain-name test-domain --region us-east-1 \ --advanced-security-options '{ "Enabled": true, "InternalUserDatabaseEnabled":true, "MasterUserOptions": {"MasterUserName":"master-username","MasterUserPassword":"master-password"},"AnonymousAuthEnabled": true}'

關於 default_role

精細存取控制需要角色映射。如果您的網域使用以身分為基礎的存取政策,則 OpenSearch Service 會自動將您的 IAM 使用者映射至名為 default_role 的新角色,以協助您正確遷移現有使用者。在您建立自有角色映射之前,此臨時映射可確保您的使用者仍可成功傳送由 IAM 簽署之 GET 和 PUT 請求。

該角色不會新增任何安全漏洞或缺陷至您的 OpenSearch Service 網域。我們建議您在設定自有角色後並相應映射它們後,立即刪除預設角色。

遷移案例

下表說明在現有網域上啟用精細存取控制前後的各身分驗證方法的行為,以及若管理員要將其使用者正確映射至角色,必須採取的步驟:

身分驗證方法 在啟用精細存取控制前 在啟用精細存取控制後 管理員任務
以身分為基礎的政策

滿足 IAM 政策的所有 IAM 使用者都可以存取該網域。

您無需啟用遷移期。

OpenSearch Service 會自動將所有滿足 IAM 政策的 IAM 使用者映射至 default_role,以繼續存取網域。

  1. 在網域上建立自訂角色映射。

  2. 刪除 default_role

以 IP 為基礎的政策

來自受允許 IP 地址或 CIDR 區塊的所有使用者皆可存取網域。

在 30 天遷移期內,所有來自受允許 IP 地址或 CIDR 區塊的使用者都可繼續存取網域。

  1. 在網域上建立自訂角色映射。

  2. 依據您的角色映射組態,更新您的客户端以提供基本身分驗證憑證或 IAM 憑證。

  3. 停用遷移期。若來自受允許的 IP 地址或 CIDR 區塊的使用者,在沒有基本身分驗證或 IAM 憑證的情況下傳送請求,將失去網域的存取權限。

開放存取政策

網際網路上的所有使用者皆可存取網域。

在 30 天的遷移期內,網際網路上的所有使用者皆可繼續存取網域。

  1. 在網域上建立角色映射。

  2. 依據您的角色映射組態,更新您的客户端以提供基本身分驗證憑證或 IAM 憑證。

  3. 停用遷移期。使用者在沒有基本身分驗證或 IAM 憑證的情況下傳送請求,將失去網域的存取權限。

以主要使用者身分存取 OpenSearch Dashboards

精細存取控制具備 OpenSearch Dashboards 外掛程式,可以簡化管理任務。您可以使用 Dashboards 來管理使用者、角色、映射、動作群組和租用戶。但是 OpenSearch Dashboards 登入頁面和基礎身分驗證方法會有所不同,這取決於您管理使用者及設定網域的方式。

管理許可

重要概念 中所述,您可以使用角色、使用者和映射來管理精細存取控制許可。本節說明如何建立和套用這些資源。我們建議您以主要使用者身分登入 Dashboards,以執行這些操作。


        Dashboards 中的安全首頁

建立角色

您可以使用 OpenSearch Dashboards 或 REST API 中的 _plugins/_security 操作為精細存取控制建立新角色。如需詳細資訊,請參閱建立角色

精細存取控制也包含了許多預先定義角色。OpenSearch Dashboards 和 Logstash 等用戶端會向 OpenSearch 提出各種請求,使手動建立具備最小許可集合的角色變得難以進行。例如,opensearch_dashboards_user 角色包含了使用者使用索引模式、視覺化及儀表板和租用戶所需要的許可。我們建議將其映射至存取 Dashboards 的任何使用者或後端角色,以及允許存取其他索引的其他角色。

叢集層級安全

叢集層級許可包括能夠發出廣泛請求 (例如 _mget_msearch 以及 _bulk)、監控運作狀態、擷取快照等。請在建立角色時使用 Cluster Permissions (叢集許可) 部分來管理這些許可。如需叢集層級動作群組的清單,請參閱叢集層級

索引層級安全

索引層級許可包含建立新索引、搜尋索引、讀取和寫入文件、刪除文件、管理別名等能力。請在建立角色時使用 Index Permissions (索引許可) 部分來管理這些許可。如需索引層級動作群組的清單,請參閱索引層級

文件層級安全

文件層級安全可讓您限制使用者在索引中可看見的文件。請在建立角色時指定索引模式和 OpenSearch 查詢。任何您映射到該角色的使用者都只能看見與查詢相符的文件。文件層級安全會影響您在搜尋時的命中數

如需詳細資訊,請參閱文件層級安全

欄位層級安全

欄位層級安全可讓您控制使用者能看見的文件欄位。建立角色時,請新增欄位清單來加入或排除。如果您加入欄位,則您映射到該角色的任何使用者都只能看到那些欄位。如果您排除欄位,則「除了」遭排除的欄位外,使用者可以看見所有欄位。欄位層級安全會影響您在搜尋時包含在命中中的欄位數

如需詳細資訊,請參閱欄位層級安全

欄位遮罩

欄位遮罩是欄位層級安全的替代項目,可讓您匿名化欄位中的資料,而非完全移除。請在建立角色時,新增要進行遮罩的欄位清單。欄位遮罩會影響您在搜尋時是否可以看見欄位的內容

提示

如果您將標準遮罩套用至欄位,OpenSearch Service 會使用安全的隨機雜湊,造成彙總結果不精確。若要在遮罩欄位上執行彙總,請改用以模式為基礎的遮罩。

建立 使用者

如果您啟用內部使用者資料庫,則您可以使用 OpenSearch Dashboards 或 REST API 中的 _plugins/_security 操作來建立使用者。如需詳細資訊,請參閱建立使用者

如果您為主要使用者選擇了 IAM,請忽略 Dashboards 的這個部分。請改為建立 IAM 使用者和 IAM 角色。如需詳細資訊,請參閱《IAM 使用者指南》。

將角色映射至使用者

角色映射是精細存取控制中最重要的層面。精細存取控制包含了一些預先定義角色,可協助您開始使用,但除非您將這些角色映射到使用者,否則每個向叢集提出的請求都會導致許可錯誤。

「後端角色」提供了將角色映射到使用者的另一種方式。您可以將角色映射到單一後端角色,然後確認所有使用者都具備該後端角色,而非將相同的角色映射到許多不同的使用者。後端角色可以是 IAM 角色或任意字串。

  • Users (使用者) 區段中指定使用者、IAM 使用者 ARN 和 Amazon Cognito 使用者字串。Cognito 使用者字串的形式為 Cognito/user-pool-id/username

  • 請在 Backend roles (後端角色) 區段中指定後端角色和 IAM 角色 ARN。


                    角色映射畫面

您可以使用 OpenSearch Dashboards 或 REST API 中的 _plugins/_security 操作將角色映射至使用者。如需詳細資訊,請參閱將使用者映射至角色

建立動作群組

動作群組是一組許可,可讓您跨不同資源重複使用。您可以使用 OpenSearch Dashboards 或 REST API 中的 _plugins/_security 操作建立新的動作群組,雖然預設動作群組已足以適用大多數的使用案例。如需預設動作群組的詳細資訊,請參閱預設動作群組

OpenSearch Dashboards 多租用

租用戶是儲存索引模式、視覺化、儀表板和其他 Dashboards 物件的空間。Dashboards 多租用可讓您安全地與其他 Dashboards 使用者共享您的作品 (或將其保持在私有狀態)。您可以控制哪些角色可以存取租用戶,以及這些角色是否具備讀取或寫入存取權限。如需進一步了解,請參閱 OpenSearch Dashboards 多租用

檢視您目前的租用戶或變更租用戶

  1. 導覽至 OpenSearch Dashboards 並登入。

  2. 選取右上角的使用者圖示,然後選擇 Switch tenants (轉換租用戶)。

  3. 在建立視覺效果或儀表板之前驗證您的租用戶。如果您希望與其他所有的 Dashboards 使用者共享您的作品,請選擇 Global (全域)。若要與一部分 Dashboards 使用者共享您的作品,請選擇不同的共享租用戶。否則,請選擇 Private (私有)

建議的組態

由於精細存取控制與其他安全功能的互動方式,我們建議使用數種精細存取控制組態。這些組態適合大多數的使用案例。

描述 主要使用者 網域存取政策

使用 IAM 憑證來呼叫 OpenSearch API,並使用 SAML 身分驗證存取 Dashboards。使用 Dashboards 或 REST API 管理精細存取控制角色。

IAM 使用者或角色
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:ESHttp*", "Resource": "domain-arn/*" } ] }

使用 IAM 憑證或基本身分驗證來呼叫 OpenSearch API。使用 Dashboards 或 REST API 管理精細存取控制角色。

此組態提供了很多靈活性,尤其是如果您的 OpenSearch 用戶端僅支援基本身分驗證。

如果您擁有現有的身分供應商,請使用 SAML 身分驗證來存取 Dashboards。否則,請管理內部使用者資料庫中的 Dashboards 使用者。

使用者名稱和密碼
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:ESHttp*", "Resource": "domain-arn/*" } ] }

使用 IAM 憑證來呼叫 OpenSearch API,並使用 Amazon Cognito 存取 Dashboards。使用 Dashboards 或 REST API 管理精細存取控制角色。

IAM 使用者或角色
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:ESHttp*", "Resource": "domain-arn/*" } ] }

使用 IAM 憑證來呼叫 OpenSearch API,並阻止對 Dashboards 的大多數存取。使用 REST API 管理精細存取控制角色。

IAM 使用者或角色
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:ESHttp*", "Resource": "domain-arn/*" }, { "Effect": "Deny", "Principal": { "AWS": "*" }, "Action": "es:ESHttp*", "Resource": "domain-arn/_dashboards*" } ] }

限制

精細存取控制有幾個重要的限制:

  • 如果網域是位於 VPC 中,則將角色映射到主機名稱或 IP 地址的角色映射 hosts 層面會無法正常運作。您仍然可以將角色映射到使用者和後端角色。

  • 如果您為主要使用者選擇了 IAM 但並未啟用 Amazon Cognito 或 SAML 身分驗證,則 Dashboards 會顯示沒有任何功能的登入頁面。

  • 如果您為主要使用者選擇了 IAM,您仍然可以在內部使用者資料庫中建立使用者。但是,由於沒有在這個組態下啟用 HTTP 基本身分驗證,因此任何使用這些使用者登入資料簽署的請求都會遭到拒絕。

  • 如果您使用 SQL 來查詢您無法存取的索引,便會收到「沒有許可」錯誤。如果索引不存在,則您會收到「找不到索引」錯誤。這項錯誤訊息中的差異表示如果您猜測其名稱,您便可以確認該索引是否存在。

    為了將問題降至最低,請不要在索引名稱中包含敏感資訊。如要拒絕所有對 SQL 的存取,請將以下元素新增到您的網域存取政策:

    { "Effect": "Deny", "Principal": { "AWS": [ "*" ] }, "Action": [ "es:*" ], "Resource": "arn:aws:es:us-east-1:123456789012:domain/my-domain/_plugins/_sql" }

修改主要使用者

如果您忘記了主要使用者的詳細資訊,您可以使用主控台、AWS CLI 或組態 API 來重新設定。

修改主要使用者 (主控台)

  1. 前往 https://aws.amazon.com,然後選擇 Sign In to the Console (登入主控台)

  2. Analytics (分析) 下,選擇 Amazon OpenSearch Service

  3. 選擇您的網域。

  4. 選擇 Actions (動作)、Edit security configuration (編輯安全組態)。

  5. 選擇 Set IAM ARN as master user (將 IAM ARN 設為主要使用者) 或 Create master user (建立主要使用者)。

    • 如果您先前使用了 IAM 主要使用者,精細存取控制會將 all_access 角色重新映射到您指定的新 IAM ARN。

    • 如果您先前使用了內部使用者資料庫,則精細存取控制會建立新的主要使用者。您可以使用新的主要使用者來刪除舊的主要使用者。

    • 從內部使用者資料庫切換至 IAM 主要使用者不會刪除內部使用者資料庫中的任何使用者。相反,它只是停用 HTTP 基本身分驗證。從內部使用者資料庫手動刪除使用者,或者保留它們,以防您需要重新啟用 HTTP 基本身分驗證。

  6. 選擇 Save changes (儲存變更)。

其他主要使用者

您可以在建立網域時指定主要使用者,但是如果您希望的話,您可以使用這個主要使用者來建立其他主要使用者。您有兩個選項:OpenSearch Dashboards 或 REST API。

  • 在 Dashboards 中,選擇 Security (安全性)、Role (角色),然後將新的主要使用者映射到 all_accesssecurity_manager 角色。

    
            角色映射頁面
  • 如要使用 REST API,請傳送下列請求:

    PUT _plugins/_security/api/rolesmapping/all_access { "backend_roles": [ "arn:aws:iam::123456789012:role/fourth-master-user" ], "hosts": [], "users": [ "master-user", "second-master-user", "arn:aws:iam::123456789012:user/third-master-user" ] }
    PUT _plugins/_security/api/rolesmapping/security_manager { "backend_roles": [ "arn:aws:iam::123456789012:role/fourth-master-user" ], "hosts": [], "users": [ "master-user", "second-master-user", "arn:aws:iam::123456789012:user/third-master-user" ] }

    這些請求會「取代」目前的角色映射,因此請先執行 GET 請求,讓您可以在 PUT 請求中包含所有目前的角色。在您無法存取 Dashboards 而又希望將 Amazon Cognito 的 IAM 角色映射到 all_access 角色時,REST API 特別有用。

手動快照

精細存取控制在擷取手動快照時複雜度較高。若要註冊快照儲存庫 (即使將 HTTP 基本身分驗證用於所有其他用途),您必須將 manage_snapshots 角色映射至具備 iam:PassRole 許可能夠擔任 TheSnapshotRole 的 IAM 角色,如 先決條件 中所定義。

然後使用該 IAM 角色將簽章的請求傳送到網域,如 註冊手動快照儲存庫 中所述。

整合

如果您搭配使用其他 AWS 服務與 OpenSearch Service,您必須為這些服務提供具有適當許可的 IAM 角色。例如,Kinesis Data Firehose 交付串流通常會使用稱為 firehose_delivery_role 的 IAM 角色。在 Dashboards 中,建立精細存取控制的角色,然後將 IAM 角色映射到該角色。在此案例中,新的角色需要下列許可:

{ "cluster_permissions": [ "cluster_composite_ops", "cluster_monitor" ], "index_permissions": [{ "index_patterns": [ "firehose-index*" ], "allowed_actions": [ "create_index", "manage", "crud" ] }] }

許可會因每個服務執行的動作而不同。AWS IoT 規則或為資料編製索引的 AWS Lambda 函數可能需要與 Kinesis Data Firehose 相似的許可,而只執行搜尋的 Lambda 函數則可以使用較有限的集合。

REST API 差異

精細存取控制 REST API 會因您的 OpenSearch/Elasticsearch 版本而有些許差異。在提出 PUT 請求前,請先提出 GET 請求以驗證預期的請求主體。例如,向 GET 提出的 _plugins/_security/api/user 請求會傳回所有使用者,讓您可以接著進行修改並用來提出有效的 PUT 請求。

在 Elasticsearch 6.x 上,建立使用者的請求如下所示:

PUT _opendistro/_security/api/user/new-user { "password": "some-password", "roles": ["new-backend-role"] }

在 OpenSearch 或 Elasticsearch 7.x 上,請求則看起來如下 (若使用 Elasticsearch,則將 _plugins 變更為_opendistro):

PUT _plugins/_security/api/user/new-user { "password": "some-password", "backend_roles": ["new-backend-role"] }

此外,租用戶在 Elasticsearch 6.x 中是角色的屬性。

GET _opendistro/_security/api/roles/all_access { "all_access": { "cluster": ["UNLIMITED"], "tenants": { "admin_tenant": "RW" }, "indices": { "*": { "*": ["UNLIMITED"] } }, "readonly": "true" } }

在 OpenSearch 和 Elasticsearch 7.x 中,它們是具備自身 URI 的物件 (若使用 Elasticsearch,則將 _plugins 變更為 _opendistro):

GET _plugins/_security/api/tenants { "global_tenant": { "reserved": true, "hidden": false, "description": "Global tenant", "static": false } }

如需 OpenSearch REST API 的文件,請參閱安全外掛程式 API 參考

提示

如果您使用內部用戶資料庫,則可以使用 curl 發出請求並測試您的網域。嘗試以下範例命令:

curl -XGET -u 'master-user:master-user-password' 'domain-endpoint/_search' curl -XGET -u 'master-user:master-user-password' 'domain-endpoint/_plugins/_security/api/user'