Amazon OpenSearch Serverless の暗号化 - Amazon OpenSearch サービス

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

Amazon OpenSearch Serverless の暗号化

保管中の暗号化

ユーザーが作成した各 Amazon OpenSearch Serverless コレクションでは、データへの不正アクセスを防止するための、暗号化を使用したセキュリティ機能により、保管中のデータが保護されます。保管時の暗号化では、AWS Key Management Service (AWS KMS) を使用して、暗号化キーの保存と管理を行います。この暗号化は、256 ビットキーを使用した Advanced Encryption Standard アルゴリズム (AES-256) を使用して実行されます。

暗号化ポリシー

暗号化ポリシーを使用すると、新しく作成され特定の名前またはパターンに一致するコレクションに対し、暗号化キーを自動的に割り当てることができ、多くのコレクションを大規模に管理できます。

暗号化ポリシーを作成する際には、プレフィックスでワイルドカードベースのマッチングルール (MyCollection* など) を指定するか、コレクション名を 1 つ入力します。次に、その名前またはプレフィックスパターンに一致するコレクションを作成すると、ポリシーとそれに対応する KMS キーが、そのコレクションに対し自動的に割り当てられます。

暗号化ポリシーには次の要素が含まれます。

  • Rules – 1 つ以上のコレクションマッチングルール。それぞれに次のサブ要素が含まれます。

    • ResourceType – 現在、選択できるオプションは「collection」のみです。暗号化ポリシーは、コレクションリソースにのみ適用されます。

    • Resource – ポリシーが適用される 1 つ以上のコレクション名またはパターンで、形式は collection/<collection name|pattern> です。

  • AWSOwnedKey – AWS 所有のキー を使用するかどうか。

  • KmsARNAWSOwnedKey に「false」を設定する場合は、KMS キーの Amazon リソースネーム (ARN) を指定して、関連するコレクションを暗号化します。このパラメータを含めると、OpenSearch Serverless は AWSOwnedKey パラメータを無視します。

次のポリシー例では、autopartsinventory という名前で詳細作成されるすべてのコレクションと、「sales」という用語で始まるコレクションに対し、カスタマー管理キーを割り当てます。

{ "Rules":[ { "ResourceType":"collection", "Resource":[ "collection/autopartsinventory", "collection/sales*" ] } ], "AWSOwnedKey":false, "KmsARN":"arn:aws:encryption:us-east-1:123456789012:key/93fd6da4-a317-4c17-bfe9-382b5d988b36" }

ポリシーがコレクション名と一致していても、リソースパターンにワイルドカード (*) が含まれている場合には、コレクションの作成時にこの自動割り当てを上書きすることが可能です。キーの自動割り当てを上書きすることを選択した場合、OpenSearch Serverless はユーザーに代わり、auto-<collection-name> という名前の暗号化ポリシーを作成し、これを対象のコレクションにアタッチします。このポリシーは、初期状態では 1 つのコレクションにのみ適用されますが、他のコレクションを含めるように変更できます。

コレクションと一致しないようにポリシールールを変更しても、関連する KMS キーのコレクションに対する割り当ては、(自動的に) 解除されません。コレクションの暗号化には、常に初期の暗号化キーが使用されます。コレクションに対し異なる暗号化キーを使用した場合には、コレクションを再作成します。

1 つのコレクションに対し複数のポリシーのルールが一致する場合は、より詳細なルールが使用されます。例えば、あるポリシーに collection/log* のルールが含まれており、もう 1 つのポリシーには collection/logSpecial のルールが含まれている場合には、より詳細である 2 つ目のポリシーの暗号化キーが使用されます。

名前やプレフィックスが既に他のポリシーに含まれている場合、そのポリシーを使用することはできません。異なる暗号化ポリシーで同じリソースパターンを設定しようとすると、OpenSearch Serverless はエラーを表示します。

考慮事項

コレクションの暗号化を設定する際には、次の点を考慮してください。

  • すべての Serverless コレクションには、保存時の暗号化が必須です。

  • 使用するキーには、カスタマー管理キーと AWS 所有のキー のオプションがあります。カスタマー管理キーを使用する場合は、自動キーローテーションを有効にすることをお勧めします。

  • コレクションを作成後、そのコレクションの暗号化キーを変更することはできません。コレクションを初期設定する際は、使用する AWS KMS を慎重に選択してください。

  • コレクションに適合できるのは、単一の暗号化ポリシーのみです。

  • 固有の KMS キーを持つコレクションは、他のコレクションとの間で、OpenSearch Compute Unit (OCU) を共有することはできません。ユニークなキーを持つ各コレクションには、それぞれ独自に 4 OCU が必要です。

  • 暗号化ポリシーの KMS キーを更新しても、その変更は KMS キーが既に割り当てられている、既存の一致するコレクションには影響しません。

  • OpenSearch Serverless は、顧客管理キーにおける許可について明示的なチェックは行いません。データアクセスポリシーを通じてコレクションにアクセスする許可が付与されたユーザーは、関連付けられたキーで暗号化されたデータを、取り込んだりクエリできます。

必要な許可

OpenSearch Serverless での保存時の暗号化には、次の AWS Identity and Access Management (IAM) のアクセス許可が使用されます。IAM 条件を指定して、ユーザーを特定のコレクションに制限できます。

  • aoss:CreateSecurityPolicy – 暗号化ポリシーを作成します。

  • aoss:ListSecurityPolicies – アタッチされているすべての暗号化ポリシーとコレクションを一覧表示します。

  • aoss:GetSecurityPolicy – 特定の暗号化ポリシーの詳細を表示します。

  • aoss:UpdateSecurityPolicy – 暗号化ポリシーを変更します。

  • aoss:DeleteSecurityPolicy – 暗号化ポリシーを削除します。

以下のアイデンティティベースのアクセスポリシー例では、ユーザーがリソースパターン collection/application-logs の暗号化ポリシーを管理する際に必要となる、最小限の許可を付与しています。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "aoss:CreateSecurityPolicy", "aoss:UpdateSecurityPolicy", "aoss:DeleteSecurityPolicy", "aoss:GetSecurityPolicy" ], "Resource":"*", "Condition":{ "StringEquals":{ "aoss:collection":"application-logs" } } }, { "Effect":"Allow", "Action":[ "aoss:ListSecurityPolicies" ], "Resource":"*" } ] }

カスタマーマネージドキーのキーポリシー

カスタマーマネージドキーを選択してコレクションを保護する際、OpenSearch Serverless は、選択を行うプリンシパルに代わって KMS キーを使用するための、アクセス許可を取得します。そのプリンシパル、ユーザー、またはロールには、OpenSearch Serverless に必要な KMS キーに対するアクセス許可が付与されている必要があります。れらのアクセス許可は、キーポリシーまたは IAM ポリシーにより付与できます。

OpenSearch Serverless には、カスタマー管理について以下のアクセス許可が最低限必要です。

例:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:ListKeys" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:CreateGrant" ], "Resource": "{kms-key-arn}" } ] }

OpenSearch Serverless では、kms:GenerateDataKey および kms:Decrypt のアクセス許可を使用してグラントを作成します。

キーを OpenSearch Serverless 固有に維持する場合には、キーポリシーに kms:ViaService 条件を追加することができます。

"Condition": { "StringEquals": { "kms:ViaService": "aoss.us-east-1.amazonaws.com" }, "Bool": { "kms:GrantIsForAWSResource": "true" } }

詳細については、AWS Key Management Service デベロッパーガイドの「AWS KMS でのキーポリシーの使用」を参照してください。

AWS KMS における OpenSearch Serverless のグラント使用方法

OpenSearch Serverless がカスタマー管理キーを使用するためには、グラントが必要です。

新しいキーを使用してアカウント内に暗号化ポリシーを作成すると、OpenSearch Serverless は、CreateGrant リクエストを AWS KMS に送信することで、ユーザーに代ってグラントを作成します。AWS KMS のグラントは、顧客のアカウントにある KMS キーへのアクセス権を OpenSearch Serverless に付与するために使用されます。

OpenSearch Serverless は、以下の内部オペレーションのために、カスタマー管理キーの使用に関するグラントを必要とします。

  • 指定された対称カスタマーマネージドキー ID が有効であることを確認するには、AWS KMS に対し DescribeKey リクエストを送信します。

  • オブジェクトを暗号化するためのデータキーを作成するには、GenerateDataKey リクエストを KMS キーに送信します。

  • 暗号化されたデータキーを復号して、それらのキーによるデータを暗号化できるようにするには、Decrypt リクエストを AWS KMS に送信します。

任意のタイミングで、許可に対するアクセス権を取り消したり、カスタマー管理キーに対するサービスからのアクセス権を削除したりできます。これを行うと、OpenSearch Serverless はカスタマー管理キーによって暗号化されたすべてのデータにアクセスできなくなり、そのデータに依存するすべてのオペレーションが影響を受けます。結果的に、非同期ワークフローで AccessDeniedException エラーが発生しその処理に失敗します。

OpenSearch Serverless は、特定の顧客管理キーにおいて、関連付けられたセキュリティポリシーやコレクションが存在しない場合、非同期ワークフローでグラントを廃止します。

暗号化ポリシーの作成 (コンソール)

暗号化ポリシーで、そのポリシーを適用する KMS キーと一連のコレクションパターンを指定します。ポリシーで定義されているパターンのいずれかに一致する新しいコレクションには、その作成時に、対応する KMS キーが割り当てられます。暗号化ポリシーは、コレクションの作成を開始する前に作成することをお勧めします。

OpenSearch Serverless 暗号化ポリシーを作成するには
  1. Amazon OpenSearch Service コンソール (https://console.aws.amazon.com/aos/home) を開きます。

  2. 左側のナビゲーションパネルで [Serverless] (サーバーレス) を展開し、[Encryption policies] (暗号化ポリシー) を選択します。

  3. [Create encryption policy] (暗号化ポリシーを作成) を選択します。

  4. ポリシーの名前と説明を入力します。

  5. [Resources] (リソース) に、この暗号化ポリシーに関する (1 つ以上の) リソースパターンを入力します。現在の AWS アカウント とリージョンにあり、新しく作成され、いずれかのパターンに一致しているコレクションが、自動的にこのポリシーに割り当てられます。例えば、ApplicationLogs と (ワイルドカードなしで) 入力し、後にその名前でコレクションを作成した場合、ポリシーおよび対応する KMS キーが、そのコレクションに対し割り当てられます。

    また、Logs* などのプレフィックスを指定して、名前が Logs で始まる任意の新しいコレクションに対し、ポリシーを割り当てることもできます。ワイルドカードを使用すると、複数のコレクションの暗号化設定を大規模に管理できます。

  6. [Encryption] (暗号化) で、使用する KMS キーを選択します。

  7. [Create] (作成) を選択します。

次のステップ: コレクションを作成する

1 つ以上の暗号化ポリシーを設定したら、それらのポリシーで定義されているルールと一致するコレクションの作成を開始できます。手順については、「コレクションの作成」を参照してください。

コレクション作成の [Encryptions] (暗号化) ステップで、暗号化ポリシーで定義されているパターンと一致する名前が入力された場合、OpenSearch Serverless はそれを通知し、対応する KMS キーをコレクションに自動的に割り当てます。リソースパターンにワイルドカード (*) が含まれている場合は、その一致をオーバーライドして独自のキーを選択できます。

暗号化ポリシーの作成 (AWS CLI)

OpenSearch Serverless API オペレーションを使用して暗号化ポリシーを作成する際は、JSON 形式で、リソースパターンと暗号化キーを指定します。CreateSecurityPolicy リクエストは、インラインポリシーと.json ファイルの両方を受け入れます。

暗号化ポリシーは以下の形式になります。このサンプルファイル (my-policy.json) は、将来作成される autopartsinventory という名前のコレクションすべてと、名前が sales で始まるコレクションすべてに一致します。

{ "Rules":[ { "ResourceType":"collection", "Resource":[ "collection/autopartsinventory", "collection/sales*" ] } ], "AWSOwnedKey":false, "KmsARN":"arn:aws:encryption:us-east-1:123456789012:key/93fd6da4-a317-4c17-bfe9-382b5d988b36" }

サービス所有のキーを使用するには、AWSOwnedKeytrue を設定します。

{ "Rules":[ { "ResourceType":"collection", "Resource":[ "collection/autopartsinventory", "collection/sales*" ] } ], "AWSOwnedKey":true }

次のリクエストは暗号化ポリシーを作成します。

aws opensearchserverless create-security-policy \ --name sales-inventory \ --type encryption \ --policy file://my-policy.json

その後、CreateCollection API オペレーションを使用して、リソースパターンの 1 つと一致するコレクションを 1 つまたは複数作成します。

暗号化ポリシーの表示

コレクションを作成する際、コレクション名と一致するリソースパターンを持つポリシーを確認するために、アカウント内の既存の暗号化ポリシーを、プレビューする必要が生じることがあります。次の ListSecurityPolicies リクエストでは、アカウント内のすべての暗号化ポリシーが一覧表示されます。

aws opensearchserverless list-security-policies --type encryption

このリクエストは、すべての設定済みの暗号化ポリシーに関する情報を返します。policy 要素の内容を使用して、ポリシーで定義されているパターンルールを表示します。

{ "securityPolicyDetails": [ { "createdDate": 1663693217826, "description": "Sample encryption policy", "lastModifiedDate": 1663693217826, "name": "my-policy", "policy": "{\"Rules\":[{\"ResourceType\":\"collection\",\"Resource\":[\"collection/autopartsinventory\",\"collection/sales*\"]}],\"AWSOwnedKey\":true}", "policyVersion": "MTY2MzY5MzIxNzgyNl8x", "type": "encryption" } ] }

KMS キーなど、特定のポリシーに関する詳細情報を表示するには、GetSecurityPolicy コマンドを使用します。

暗号化ポリシーの更新

暗号化ポリシー内で KMS キーを更新する場合、その変更は、設定された名前またはパターンと一致する、新規作成のコレクションだけに適用されます。KMS キーが既に割り当て済みの、既存のコレクションには影響は与えません。

同様なことが、ポリシーの一致ルールにも当てはまります。ルールを追加、変更、または削除した場合、その変更は新しく作成されたコレクションにのみ適用されます。ポリシーのルールを変更したために、コレクション名と一致しなくなったとしても、既存のコレクションに割り当てられた KMS キーは失われません。

OpenSearch Serverless コンソールで暗号化ポリシーを更新するには、[Encryption policies] (暗号化ポリシー) を選択し、変更するポリシーを選択した後に、[Edit] (編集) を選択します。変更を行ってから、[Save (保存)] を選択します。

OpenSearch Serverless API を使用して暗号化ポリシーを更新する場合は、UpdateSecurityPolicy オペレーションを使用します。次のリクエストでは、新しいポリシー JSON ドキュメントを使用して、暗号化ポリシーを更新します。

aws opensearchserverless update-security-policy \ --name sales-inventory \ --type encryption \ --policy-version 2 \ --policy file://my-new-policy.json

暗号化ポリシーの削除

暗号化ポリシーを削除しても、そのポリシーで定義されている KMS キーを現在使用しているコレクションに影響はありません。OpenSearch Serverless コンソールでポリシーを削除するには、ポリシーを選択し、[Delete] (削除) を選択します。

また、DeleteSecurityPolicy オペレーションを使用することもできます。

aws opensearchserverless delete-security-policy --name my-policy --type encryption

転送中の暗号化

OpenSearch Serverless では、コレクション内のすべてのパスは、業界標準の AES-256 暗号を使用した Transport Layer Security 1.2 (TLS) を使って、転送中に暗号化されます。Opensearch のすべての API と Dashboards へのアクセスも、TLS 1.2 を経由します。TLS は、ネットワーク上でやり取りされる情報の暗号化に使用される、業界標準の暗号化プロトコルのセットです。