チュートリアル: Amazon OpenSearch Serverless でのセキュリティの開始方法 (CLI) - Amazon OpenSearch サービス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

チュートリアル: Amazon OpenSearch Serverless でのセキュリティの開始方法 (CLI)

このチュートリアルでは、セキュリティに関するコンソール入門チュートリアルで説明されている手順を説明しますが、 は OpenSearch サービスコンソールAWS CLIではなく を使用します。

このチュートリアルでは、次の手順を実行します。

  1. IAM アクセス権限ポリシーを作成する

  2. IAM ポリシーを IAM ロールにアタッチする

  3. 暗号化ポリシーを作成する

  4. ネットワークポリシーを作成する

  5. コレクションを作成

  6. データアクセスポリシーを設定する

  7. コレクションエンドポイントを取得する

  8. 接続にデータをアップロードする

  9. コレクション内のデータを検索する

このチュートリアルの目的は、非常にシンプルな暗号化、ネットワーク、およびデータアクセス設定で単一の OpenSearch サーバーレスコレクションを設定することです。例えば、暗号化用の AWS マネージドキー、パブリックネットワークアクセス、1 人のユーザーに最低限のアクセス許可を付与する簡単なデータアクセスポリシーを設定します。

本番環境では、SAML 認証、カスタム暗号化キー、VPC アクセスなどのより強固な設定を実装することを検討してください。

OpenSearch Serverless でセキュリティポリシーの使用を開始するには
  1. 注記

    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" } }
  2. コレクション内でデータをインデックス化して検索する IAM ロールに TutorialPolicy をアタッチします。TutorialRole ユーザーに次のような名前を付けます。

    aws iam attach-role-policy \ --role-name TutorialRole \ --policy-arn arn:aws:iam::123456789012:policy/TutorialPolicy
  3. コレクションを作成する前に、後の手順で作成する 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 } }
  4. 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 } }
  5. 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 } }
  6. 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 コレクション内のドキュメントをインデックス化して検索できるはずです。

  7. 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 に変わるまで、コレクションエンドポイントを表示することはできません。コレクションが正常に作成されるまで、呼び出しを複数回行いステータスを確認する必要があることがあります。

  8. 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 }
  9. コレクション内でデータの検索を開始するには、検索 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 } } ] } }