翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon OpenSearch Serverless のデータアクセスコントロール
Amazon OpenSearch Serverless のデータアクセスコントロールを使用すると、アクセスメカニズムやネットワークソースに関係なく、ユーザーがコレクションとインデックスにアクセスできるようになります。IAM ロールと SAML アイデンティティへのアクセスを提供できます。
アクセス許可は、コレクションとインデックスリソースに適用されるデータアクセスポリシーを通じて管理します。データアクセスポリシーは、特定のパターンに一致するコレクションとインデックスにアクセス許可を自動的に割り当てることにより、大規模なコレクションを管理するのに役立ちます。1 つのリソースに複数のデータアクセスポリシーを適用できます。 OpenSearch Dashboards URL にアクセスするには、コレクションのデータアクセスポリシーが必要です。
トピック
データアクセスポリシーと IAM ポリシーの比較
データアクセスポリシーは、 AWS Identity and Access Management (IAM) ポリシーとは論理的に分離されます。IAM アクセス許可は、CreateCollection
や ListAccessPolicies
などのサーバーレス API オペレーションへのアクセスを制御します。データアクセスポリシーは、 PUT <index>
や など、 OpenSearch サーバーレスがサポートするOpenSearch オペレーションへのアクセスを制御しますGET _cat/indices
。
aoss:CreateAccessPolicy
や aoss:GetAccessPolicy
(次のセクションで説明) などのデータアクセスポリシーの API オペレーションへのアクセスを制御する 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
に対するアクセスが付与されている必要があります。どちらのアクセス許可もコレクションリソースへのフルアクセスを許可し、Dashboards アクセス許可は OpenSearch Dashboards へのアクセスも提供します。プリンシパルがこれらの両方の IAM 許可を持っていない場合、コレクションにリクエストを送信しようとすると 403 エラーが表示されます。詳細については、「API オペレーションの使用 OpenSearch 」を参照してください。
データアクセスポリシーの設定に必要な IAM アクセス許可
OpenSearch Serverless のデータアクセスコントロールは、次の IAM アクセス許可を使用します。IAM 条件を指定して、ユーザーを特定のアクセスポリシー名に制限できます。
-
aoss:CreateAccessPolicy
– アクセスポリシーを作成します。 -
aoss:ListAccessPolicies
– すべてのアクセスポリシーを一覧表示します。 -
aoss:GetAccessPolicy
– 特定のアクセスポリシーの詳細を表示します。 -
aoss:UpdateAccessPolicy
– アクセスポリシーを変更します。 -
aoss:DeleteAccessPolicy
– アクセスポリシーを削除します。
次の ID ベースのアクセスポリシーでは、ユーザーはすべてのアクセスポリシーを表示し、リソースパターン 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 Serverless にはコレクションリソースの aoss:APIAccessAll
および アクセスaoss:DashboardsAccessAll
許可が必要です。詳細については、「API オペレーションの使用 OpenSearch 」を参照してください。
ポリシー構文
データアクセスポリシーには、次の要素を持つ一連のルールが含まれています。
要素 | 説明 |
---|---|
ResourceType |
アクセス許可が適用されるリソースのタイプ (コレクションまたはインデックス)。エイリアスとテンプレートのアクセス許可はコレクションレベルで、データの作成、変更、検索のアクセス許可はインデックスレベルです。詳細については、「Supported policy permissions」(サポートされているポリシーのアクセス許可) を参照してください。 |
Resource |
リソース名やパターンのリスト。パターンはプレフィックスの後にワイルドカード (*) が続くもので、これによって関連付けられたアクセス許可を複数のリソースに適用できます。
|
Permission |
指定されたリソースに付与するアクセス許可のリスト。これによって許可されるアクセス許可とオペレーションの完全なリストについては、「サポートされている OpenSearch API オペレーションとアクセス許可」を参照してください。 |
Principal |
アクセス権が付与される 1 つ以上のプリンシパルのリスト。プリンシパルは、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
を付与した場合、ユーザーには両方のアクセス許可が付与されます。3 番目のポリシーで同じユーザーに aoss:*
を付与した場合、そのユーザーは関連付けられたインデックスですべてのアクションを実行できます。制限の厳しいアクセス許可が制限の緩いアクセス許可よりも優先されることはありません。
サポートされているポリシーのアクセス許可
データアクセスポリシーでは、次のアクセス許可がサポートされています。各アクセス許可で許可される API オペレーションについては OpenSearch、「」を参照してくださいサポートされている 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 Dashboards のサンプルデータセット
OpenSearch Dashboards には、独自のデータを追加する前に Dashboards を調べるのに役立つ視覚化、ダッシュボード、その他のツールを含むサンプルデータセット*
) を使用して、3 つのサンプルデータセットすべてへのアクセスを許可します。
[ { "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 サーバーレスデータアクセスポリシーを作成するには
-
https://console.aws.amazon.com/aos/home
で Amazon OpenSearch Service コンソールを開きます。 -
左側のナビゲーションペインで、[Serverless] (サーバーレス) を展開し、[Data access control] (データアクセスコントロール) を選択します。
-
[Create access policy] (アクセスポリシーの作成) を選択します。
-
ポリシーの名前と説明を入力します。
-
ポリシーの最初のルールの名前を入力します。例えば、「Logs collection access」。
-
[Add principals] (プリンシパルの追加) を選択し、データアクセス権が付与される IAM ロール、または SAML ユーザーとグループを 1 つ、または複数選択します。
注記
ドロップダウンメニューからプリンシパルを選択するには、
iam:ListUsers
およびiam:ListRoles
アクセス許可 (IAM プリンシパルの場合) およびaoss:ListSecurityConfigs
アクセス許可 (SAML ID の場合) が必要です。 -
[Grant] (付与) を選択し、エイリアス、テンプレート、およびインデックスのアクセス許可を選択して、関連するプリンシパルに付与します。アクセス許可とそれによって許可されるアクセスの完全なリストについては、「サポートされている OpenSearch API オペレーションとアクセス許可」を参照してください。
-
(オプション) ポリシーに追加のルールを設定します。
-
[作成] を選択します。ポリシーを作成してからアクセス許可が適用されるまでに 1 分程度かかる場合があります。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 Serverless 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
リクエストは、設定されているすべてのデータアクセスポリシーに関する情報を返します。1 つの特定のポリシーで定義されているパターンルールを表示するには、レスポンスの accessPolicySummaries
要素の内容でポリシー情報を探します。このポリシーtype
の と をメモname
し、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 Serverless コンソールでデータアクセスポリシーを更新するには、データアクセスコントロール を選択し、変更するポリシーを選択し、編集 を選択します。変更を行ってから、[Save (保存)] を選択します。
OpenSearch Serverless API を使用してデータアクセスポリシーを更新するには、 UpdateAccessPolicy
リクエストを送信します。ポリシーバージョンを含める必要があります。ポリシーバージョンは、ListAccessPolicies
または GetAccessPolicy
コマンドを使用して取得できます。最新のポリシーバージョンを含めると、他のユーザーによる変更を意図せず上書きしてしまうことがなくなります。
次のUpdateAccessPolicyリクエストは、データアクセスポリシーを新しいポリシー JSON ドキュメントで更新します。
aws opensearchserverless update-access-policy \ --name sales-inventory \ --type data \ --policy-version
MTY2NDA1NDE4MDg1OF8x
\ --policy file://my-new-policy
.json
ポリシーを更新してから新しいアクセス許可が適用されるまでに数分かかる場合があります。
データアクセスポリシーの削除
データアクセスポリシーを削除すると、関連するすべてのコレクションは、ポリシーで定義されているアクセス権を失います。ポリシーを削除する前に、IAM ユーザーと SAML ユーザーがコレクションに適切なアクセス権を持っていることを確認してください。 OpenSearch Serverless コンソールでポリシーを削除するには、ポリシーを選択し、「削除」を選択します。
DeleteAccessPolicy コマンドを使用することもできます。
aws opensearchserverless delete-access-policy --name
my-policy
--type data
クロスアカウントデータアクセス
クロスアカウント ID またはクロスアカウントコレクションを使用してデータアクセスポリシーを作成することはできませんが、ロールの継承オプションを使用してクロスアカウントアクセスをセットアップすることはできます。例えば、 がアクセス
が必要なコレクションaccount-b
を所有している場合、 のユーザーは でロールを引き受けaccount-a
ることができますaccount-b
。ロールには IAM アクセス許可account-a
aoss:APIAccessAll
と がありaoss:DashboardsAccessAll
、 のデータアクセスポリシーに含まれている必要があります
。account-a