翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
チュートリアル: Amazon OpenSearch Serverless (CLI) でのセキュリティの開始方法
このチュートリアルでは、セキュリティに関する開始方法のチュートリアル (コンソール) で示されている手順を説明します。ここでは OpenSearch Service コンソールではなく AWS CLI を使用します。
このチュートリアルでは、次の手順を実行します。
-
IAM アクセス権限ポリシーを作成する
-
IAM ポリシーを IAM ロールにアタッチする
-
暗号化ポリシーを作成する
-
ネットワークポリシーを作成する
-
コレクションを作成
-
データアクセスポリシーを設定する
-
コレクションエンドポイントを取得する
-
接続にデータをアップロードする
-
コレクション内のデータを検索する
このチュートリアルの目的は、簡単な暗号化、ネットワーク、データアクセス設定がある 1 つの OpenSearch Serverless コレクションを設定することです。例えば、暗号化用の AWS マネージドキー、パブリックネットワークアクセス、1 人のユーザーに最低限のアクセス許可を付与する簡単なデータアクセスポリシーを設定します。
本番環境では、SAML 認証、カスタム暗号化キー、VPC アクセスなどのより強固な設定を実装することを検討してください。
OpenSearch Serverless でセキュリティポリシーの使用を開始するには
-
注記
Action":"aoss:*"
やAction":"*"
など、より広範な ID ベースのポリシーを既に使用している場合は、この手順をスキップできます。ただし本番環境では、最小特権の原則に従い、作業を完了するのに最低限必要なアクセス許可を割り当てることをお勧めします。まず、このチュートリアルの手順を実行するために最低限必要なアクセス許可を持つ AWS Identity and Access Management ポリシーを作成します。
TutorialPolicy
ポリシーには次のような名前を付けます。aws iam create-policy \ --policy-name TutorialPolicy \ --policy-document "{\"Version\": \"2012-10-17\",\"Statement\": [{\"Action\": [\"aoss:ListCollections\",\"aoss:BatchGetCollection\",\"aoss:CreateCollection\",\"aoss:CreateSecurityPolicy\",\"aoss:GetSecurityPolicy\",\"aoss:ListSecurityPolicies\",\"aoss:CreateAccessPolicy\",\"aoss:GetAccessPolicy\",\"aoss:ListAccessPolicies\"],\"Effect\": \"Allow\",\"Resource\": \"*\"}]}"
レスポンス例
{ "Policy": { "PolicyName": "TutorialPolicy", "PolicyId": "ANPAW6WRAECKG6QJWUV7U", "Arn": "arn:aws:iam::
123456789012
:policy/TutorialPolicy", "Path": "/", "DefaultVersionId": "v1", "AttachmentCount": 0, "PermissionsBoundaryUsageCount": 0, "IsAttachable": true, "CreateDate": "2022-10-16T20:57:18+00:00", "UpdateDate": "2022-10-16T20:57:18+00:00" } } -
コレクション内でデータをインデックス化して検索する IAM ロールに
TutorialPolicy
をアタッチします。TutorialRole
ユーザーに次のような名前を付けます。aws iam attach-role-policy \ --role-name
TutorialRole
\ --policy-arn arn:aws:iam::123456789012
:policy/TutorialPolicy -
コレクションを作成する前に、後の手順で作成する books コレクションに AWS 所有のキー を割り当てる暗号化ポリシーを作成する必要があります。
books コレクション用の暗号化ポリシーを作成するには、次のリクエストを送信します。
aws opensearchserverless create-security-policy \ --name books-policy \ --type encryption --policy "{\"Rules\":[{\"ResourceType\":\"collection\",\"Resource\":[\"collection\/books\"]}],\"AWSOwnedKey\":true}"
レスポンス例
{ "securityPolicyDetail": { "type": "encryption", "name": "books-policy", "policyVersion": "MTY2OTI0MDAwNTk5MF8x", "policy": { "Rules": [ { "Resource": [ "collection/books" ], "ResourceType": "collection" } ], "AWSOwnedKey": true }, "createdDate": 1669240005990, "lastModifiedDate": 1669240005990 } }
-
books コレクションにパブリックアクセスを提供するネットワークポリシーを作成します。
aws opensearchserverless create-security-policy --name books-policy --type network \ --policy "[{\"Description\":\"Public access for books collection\",\"Rules\":[{\"ResourceType\":\"dashboard\",\"Resource\":[\"collection\/books\"]},{\"ResourceType\":\"collection\",\"Resource\":[\"collection\/books\"]}],\"AllowFromPublic\":true}]"
レスポンス例
{ "securityPolicyDetail": { "type": "network", "name": "books-policy", "policyVersion": "MTY2OTI0MDI1Njk1NV8x", "policy": [ { "Rules": [ { "Resource": [ "collection/books" ], "ResourceType": "dashboard" }, { "Resource": [ "collection/books" ], "ResourceType": "collection" } ], "AllowFromPublic": true, "Description": "Public access for books collection" } ], "createdDate": 1669240256955, "lastModifiedDate": 1669240256955 } }
-
books コレクションを作成します。
aws opensearchserverless create-collection --name books --type SEARCH
レスポンス例
{ "createCollectionDetail": { "id": "8kw362bpwg4gx9b2f6e0", "name": "books", "status": "CREATING", "type": "SEARCH", "arn": "arn:aws:aoss:us-east-1:123456789012:collection/8kw362bpwg4gx9b2f6e0", "kmsKeyArn": "auto", "createdDate": 1669240325037, "lastModifiedDate": 1669240325037 } }
-
books コレクション内のデータをインデックス化して検索するための最小限のアクセス許可を付与するデータアクセスポリシーを作成します。プリンシパル ARN をステップ 1 の
TutorialRole
の ARN に置き換えます。aws opensearchserverless create-access-policy \ --name books-policy \ --type data \ --policy "[{\"Rules\":[{\"ResourceType\":\"index\",\"Resource\":[\"index\/books\/books-index\"],\"Permission\":[\"aoss:CreateIndex\",\"aoss:DescribeIndex\",\"aoss:ReadDocument\",\"aoss:WriteDocument\",\"aoss:UpdateIndex\",\"aoss:DeleteIndex\"]}],\"Principal\":[\"arn:aws:iam::
123456789012
:role
\/TutorialRole
\"]}]"レスポンス例
{ "accessPolicyDetail": { "type": "data", "name": "books-policy", "policyVersion": "MTY2OTI0MDM5NDY1M18x", "policy": [ { "Rules": [ { "Resource": [ "index/books/books-index" ], "Permission": [ "aoss:CreateIndex", "aoss:DescribeIndex", "aoss:ReadDocument", "aoss:WriteDocument", "aoss:UpdateDocument", "aoss:DeleteDocument" ], "ResourceType": "index" } ], "Principal": [ "arn:aws:iam::123456789012:role/TutorialRole" ] } ], "createdDate": 1669240394653, "lastModifiedDate": 1669240394653 } }
これで、
TutorialRole
は books コレクション内のドキュメントをインデックス化して検索できるはずです。 -
OpenSearch API への呼び出しを行うには、コレクションエンドポイントが必要です。次のリクエストを送信して、
collectionEndpoint
パラメータを取得します。aws opensearchserverless batch-get-collection --names books
レスポンス例
{ "collectionDetails": [ { "id": "8kw362bpwg4gx9b2f6e0", "name": "books", "status": "ACTIVE", "type": "SEARCH", "description": "", "arn": "arn:aws:aoss:us-east-1:123456789012:collection/8kw362bpwg4gx9b2f6e0", "createdDate": 1665765327107, "collectionEndpoint": "https://8kw362bpwg4gx9b2f6e0.us-east-1.aoss.amazonaws.com", "dashboardEndpoint": "https://8kw362bpwg4gx9b2f6e0.us-east-1.aoss.amazonaws.com/_dashboards" } ], "collectionErrorDetails": [] }
注記
コレクションのステータスが
ACTIVE
に変わるまで、コレクションエンドポイントを表示することはできません。コレクションが正常に作成されるまで、呼び出しを複数回行いステータスを確認する必要があることがあります。 -
Postman
や curl などの HTTP ツールを使用して、データを books コレクションにインデックス化します。books-index というインデックスを作成し、単一のドキュメントを追加します。 TutorialRole
の認証情報を使用して、次のリクエストを前の手順で取得したコレクションエンドポイントに送信します。PUT https://
8kw362bpwg4gx9b2f6e0
.us-east-1
.aoss.amazonaws.com/books-index/_doc/1 { "title": "The Shining", "author": "Stephen King", "year": 1977 }レスポンス例
{ "_index" : "books-index", "_id" : "1", "_version" : 1, "result" : "created", "_shards" : { "total" : 0, "successful" : 0, "failed" : 0 }, "_seq_no" : 0, "_primary_term" : 0 }
-
コレクション内でデータの検索を開始するには、検索 API
を使用します。次のクエリは、基本的な検索を実行します。 GET https://
8kw362bpwg4gx9b2f6e0
.us-east-1.aoss.amazonaws.com/books-index/_searchレスポンス例
{ "took": 405, "timed_out": false, "_shards": { "total": 6, "successful": 6, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 2, "relation": "eq" }, "max_score": 1.0, "hits": [ { "_index": "books-index:0::3xJq14MBUaOS0wL26UU9:0", "_id": "F_bt4oMBLle5pYmm5q4T", "_score": 1.0, "_source": { "title": "The Shining", "author": "Stephen King", "year": 1977 } } ] } }