適用於 Amazon OpenSearch 無伺服器的資料存取控制 - Amazon OpenSearch 服務

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

適用於 Amazon OpenSearch 無伺服器的資料存取控制

透過 Amazon OpenSearch Serverless 中的資料存取控制,無論使用者的存取機制或網路來源為何,都可以讓使用者存取集合和索引。您可以提供 IAM 角色和 SAML 身分的存取權。

您可以透過資料存取政策管理許可,這些政策套用至集合和索引資源。資料存取政策會自動將存取許可指派給符合特定模式的集合和索引,以協助您大規模管理集合。可將多個資料存取政策套用至單一資源。請注意,您必須具有集合的資料存取政策,才能存取 OpenSearch 儀表板 URL。

資料存取政策與 IAM 政策比較

資料存取政策在邏輯上與 AWS Identity and Access Management (IAM) 政策分開。IAM 許可會控制對無伺服器 API 操作 (例如 CreateCollectionListAccessPolicies) 的存取。資料存取原則可控制 OpenSearch 無伺服器支援之OpenSearch 作業的存取,例如PUT <index>GET _cat/indices

控制資料存取政策 API 操作 (例如 aoss:CreateAccessPolicyaoss:GetAccessPolicy,請參閱下一節所述) 存取的 IAM 許可不會影響資料存取政策中指定的許可。

例如,假設 IAM 政策拒絕使用者為 collection-a 建立資料存取政策,但允許其為所有集合 (*) 建立資料存取政策:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "aoss:CreateAccessPolicy" ], "Resource": "*", "Condition": { "StringLike": { "aoss:collection": "collection-a" } } }, { "Effect": "Allow", "Action": [ "aoss:CreateAccessPolicy" ], "Resource": "*" } ] }

如果使用者建立的資料存取政策允許所有集合 (collection/*index/*/*) 的特定許可,則該政策將套用至所有集合,包括集合 A。

重要

在資料存取原則中被授與權限不足以存取您的 OpenSearch 無伺服器集合中的資料。相關聯的主體必須獲得 IAM 許可aoss:APIAccessAll和的存取權aoss:DashboardsAccessAll。這兩個權限都會授與對集合資源的完整存取權,而「儀表板」權限也可讓您存取 OpenSearch 儀表板。如果主體沒有這兩個 IAM 許可,則在嘗試將請求傳送至集合時,他們會收到 403 錯誤。如需詳細資訊,請參閱 使用 OpenSearchAPI操作

設定資料存取政策所需的 IAM 許可

OpenSearch 無伺服器的資料存取控制使用下列 IAM 許可。您可以指定 IAM 條件,將使用者限制為特定存取政策名稱。

  • aoss:CreateAccessPolicy:建立存取政策。

  • aoss:ListAccessPolicies:列出所有存取政策。

  • aoss:GetAccessPolicy:請參閱有關特定存取政策的詳細資訊。

  • aoss:UpdateAccessPolicy:修改存取政策。

  • aoss:DeleteAccessPolicy:刪除存取政策。

下列身分型存取政策讓使用者可以檢視所有存取政策,以及更新包含資源模式 collection/logs 的政策。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "aoss:ListAccessPolicies", "aoss:GetAccessPolicy" ], "Effect": "Allow", "Resource": "*" }, { "Action": [ "aoss:UpdateAccessPolicy" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "aoss:collection": [ "logs" ] } } } ] }
注意

此外, OpenSearch 無伺服器需要集合資源的aoss:APIAccessAllaoss:DashboardsAccessAll權限。如需詳細資訊,請參閱 使用 OpenSearchAPI操作

政策語法

資料存取政策包含一組規則,每個規則均包含下列元素:

Element 描述
ResourceType 許可套用的資源類型 (集合或索引)。別名和範本許可位於集合層級,而建立、修改和搜尋資料的許可則位於索引層級。如需詳細資訊,請參閱 Supported policy permissions (支援的政策許可)。
Resource 資源名稱和/或模式的清單。模式是字首後接萬用字元 (*),允許關聯的許可套用至多個資源。
  • 集合採用格式 collection/<name|pattern>

  • 索引採用格式 index/<collection-name|pattern>/<index-name|pattern/>

Permission 為指定資源授予的許可清單。(如需許可與其允許之 API 操作的完整清單,請參閱 支援的 OpenSearch API 作業和權限)。
Principal 要授予存取權的一個或多個主體清單。主體可以是 IAM 角色 ARN,也可以是 SAML 身分。這些主體必須在目前的 AWS 帳戶內。資料存取原則不直接支援跨帳戶存取,但您可以在原則中包含角色,而來自不同的使用者 AWS 帳戶 可以在集合擁有的帳戶中承擔這個角色。如需詳細資訊,請參閱 跨帳戶資料存取

下列範例政策會將別名和範本許可授予名為 autopartsinventory 的集合以及任何以字首 sales* 開頭的集合。同時也會將讀取和寫入許可授予 autopartsinventory 集合中的所有索引,以及以字首 orders* 開頭的 salesorders 集合中的任何索引。

[ { "Description": "Rule 1", "Rules":[ { "ResourceType":"collection", "Resource":[ "collection/autopartsinventory", "collection/sales*" ], "Permission":[ "aoss:CreateCollectionItems", "aoss:UpdateCollectionItems", "aoss:DescribeCollectionItems" ] }, { "ResourceType":"index", "Resource":[ "index/autopartsinventory/*", "index/salesorders/orders*" ], "Permission":[ "aoss:*" ] } ], "Principal":[ "arn:aws:iam::123456789012:user/Dale", "arn:aws:iam::123456789012:role/RegulatoryCompliance", "saml/123456789012/myprovider/user/Annie", "saml/123456789012/anotherprovider/group/Accounting" ] } ]

您無法在政策中明確拒絕存取。因此,所有政策許可均可附加。例如,若一個政策授予使用者 aoss:ReadDocument,而另一個政策授予 aoss:WriteDocument,則使用者將同時擁有兩個許可。如果第三個政策授予相同的使用者 aoss:*,則使用者可以對關聯的索引執行所有動作;限制較多的許可不會覆寫限制較少的許可。

支援的政策許可

資料存取政策支援下列許可。有關每個權限允許的 OpenSearch API 操作,請參閱支援的 OpenSearch API 作業和權限

集合許可

  • aoss:CreateCollectionItems

  • aoss:DeleteCollectionItems

  • aoss:UpdateCollectionItems

  • aoss:DescribeCollectionItems

  • aoss:*

索引許可

  • aoss:ReadDocument

  • aoss:WriteDocument

  • aoss:CreateIndex

  • aoss:DeleteIndex

  • aoss:UpdateIndex

  • aoss:DescribeIndex

  • aoss:*

OpenSearch 儀表板的範例資料集

OpenSearch 儀表板提供隨附視覺效果、儀表板和其他工具的範例資料集,可協助您在新增自己的資料之前探索儀表板。若要從此範例資料建立索引,您需要資料存取原則,以提供您要使用之資料集的權限。下列原則使用萬用字元 (*) 來提供所有三個範例資料集的權限。

[ { "Rules": [ { "Resource": [ "index/<collection-name>/opensearch_dashboards_sample_data_*" ], "Permission": [ "aoss:CreateIndex", "aoss:DescribeIndex", "aoss:ReadDocument" ], "ResourceType": "index" } ], "Principal": [ "arn:aws:iam::<account-id>:user/<user>" ] } ]

建立資料存取政策 (主控台)

您可以使用視覺化編輯器,或以 JSON 格式建立資料存取政策。當您建立集合時,系統會將對應的許可指派給符合政策中定義模式之一的任何新集合。

建立 OpenSearch 無伺服器資料存取原則
  1. 在以下位置打開 Amazon OpenSearch 服務控制台 https://console.aws.amazon.com/aos/home

  2. 展開左側導覽窗格中的 Serverless (無伺服器),然後選擇 Data access control (資料存取控制)。

  3. 選擇 Create access policy (建立存取政策)。

  4. 提供政策的名稱和描述。

  5. 為政策中的第一個規則提供名稱。例如,"Logs collection access" (日誌集合存取)。

  6. 選擇 Add principals (新增主體),然後選取要向其提供資料存取權的一個或多個 IAM 角色或 SAML 使用者和群組

    注意

    若要從下拉式選單中選取主體,您必須具有 iam:ListUsersiam:ListRoles 許可 (對於 IAM 主體) 和 aoss:ListSecurityConfigs 許可 (對於 SAML 身分)。

  7. 選擇 Grant (授予),然後選取別名、範本和索引許可,以授予關聯的主體。如需完整的許可及其允許之存取的完整清單,請參閱 支援的 OpenSearch API 作業和權限

  8. (選用) 設定政策的其他規則。

  9. 選擇建立。在您建立政策與強制執行許可之間,可能會有大約一分鐘的延遲時間。如果延遲超過 5 分鐘,請聯絡 AWS Support

重要

如果您的政策僅包含索引許可 (而且沒有集合許可),您可能仍會看到相符集合的訊息,表示 Collection cannot be accessed yet. Configure data access policies so that users can access the data within this collection。您可以忽略此警告。允許的主體仍然可以對集合執行其指派的索引相關操作。

建立資料存取政策 (AWS CLI)

若要使用 OpenSearch 無伺服器 API 建立資料存取原則,請使用指CreateAccessPolicy令。該命令接受內嵌政策和 .json 檔案。內嵌政策必須編碼為 JSON 逸出字串

下列請求會建立資料存取政策:

aws opensearchserverless create-access-policy \ --name marketing \ --type data \ --policy "[{\"Rules\":[{\"ResourceType\":\"collection\",\"Resource\":[\"collection/autopartsinventory\",\"collection/sales*\"],\"Permission\":[\"aoss:UpdateCollectionItems\"]},{\"ResourceType\":\"index\",\"Resource\":[\"index/autopartsinventory/*\",\"index/salesorders/orders*\"],\"Permission\":[\"aoss:ReadDocument\",\"aoss:DescribeIndex\"]}],\"Principal\":[\"arn:aws:iam::123456789012:user/Shaheen\"]}]"

若要在 .json 檔案中提供政策,請使用格式 --policy file://my-policy.json

原則中包含的主參與者現在可以使用被授與其存取權的OpenSearch 作業

檢視資料存取政策

在建立集合之前,您可能想要預覽帳戶中的現有資料存取政策,以查看哪個政策的資源模式與集合名稱相符。下列ListAccessPolicies要求會列出您帳戶中的所有資料存取政策:

aws opensearchserverless list-access-policies --type data

該請求會傳回所有已設定資料存取政策的相關資訊。若要檢視在一個特定策略中定義的特徵碼規則,請在回應中的accessPolicySummaries元素內容中尋找原則資訊。請注意此原則typename和,並在GetAccessPolicy要求中使用這些屬性,以接收含下列原則詳細資訊的回應:

{ "accessPolicyDetails": [ { "type": "data", "name": "my-policy", "policyVersion": "MTY2NDA1NDE4MDg1OF8x", "description": "My policy", "policy": "[{\"Rules\":[{\"ResourceType\":\"collection\",\"Resource\":[\"collection/autopartsinventory\",\"collection/sales*\"],\"Permission\":[\"aoss:UpdateCollectionItems\"]},{\"ResourceType\":\"index\",\"Resource\":[\"index/autopartsinventory/*\",\"index/salesorders/orders*\"],\"Permission\":[\"aoss:ReadDocument\",\"aoss:DescribeIndex\"]}],\"Principal\":[\"arn:aws:iam::123456789012:user/Shaheen\"]}]", "createdDate": 1664054180858, "lastModifiedDate": 1664054180858 } ] }

您可以包含資源篩選條件,將結果限制為包含特定集合或索引的政策:

aws opensearchserverless list-access-policies --type data --resource "index/autopartsinventory/*"

若要檢視有關特定策略的詳細資料,請使用GetAccessPolicy命令。

更新資料存取政策

當您更新資料存取政策時,所有關聯的集合均會受到影響。若要更新 OpenSearch 無伺服器主控台中的資料存取原則,請選擇 [資料存取控制],選取要修改的原則,然後選擇 [編輯]。進行變更,然後選擇 Save (儲存)。

若要使用 OpenSearch 無伺服器 API 更新資料存取原則,請傳送要UpdateAccessPolicy求。您必須包含政策版本,您可以使用 ListAccessPoliciesGetAccessPolicy 命令擷取該版本。將最新的政策版本納入其中,可確保您不會意外覆寫其他人所做的變更。

下列UpdateAccessPolicy要求會使用新的原則 JSON 文件更新資料存取原則:

aws opensearchserverless update-access-policy \ --name sales-inventory \ --type data \ --policy-version MTY2NDA1NDE4MDg1OF8x \ --policy file://my-new-policy.json

在您更新政策與強制執行新許可之間,可能會有幾分鐘的延遲時間。

刪除資料存取政策

當您刪除資料存取政策時,所有關聯的集合均會失去政策中定義的存取權。在刪除政策之前,請確保您的 IAM 和 SAML 使用者具有集合的適當存取權。若要刪除 OpenSearch 無伺服器主控台中的原則,請選取該原則,然後選擇刪除

您也可以使用以下DeleteAccessPolicy命令:

aws opensearchserverless delete-access-policy --name my-policy --type data

跨帳戶資料存取

雖然您無法建立具有跨帳戶身分識別或跨帳戶集合的資料存取政策,但您仍然可以使用假設角色選項來設定跨帳戶存取權。例如,如果account-a擁有account-b需要存取權的集合,則來自的使用者account-b可以在中扮演角色account-a。角色必須具有 IAM 許可aoss:DashboardsAccessAllaoss:APIAccessAll並且包含在的資料存取政策中account-a