Amazon OpenSearch Service のカスタムパッケージの AWS KMS 統合
Amazon OpenSearch Service カスタムパッケージはデフォルトで暗号化を提供し、AWS マネージドキー を使用して保管中の ZIP-PLUGIN パッケージを保護します。
-
AWS 所有のキー – Amazon OpenSearch Service カスタムパッケージは、デフォルトでこれらのキーを使用して
ZIP-PLUGINパッケージを自動的に暗号化します。AWS 所有のキー は表示、管理、使用することはできず、その使用を監査することもできません。しかし、データを暗号化するキーを保護するために何らかの操作を行ったり、プログラムを変更したりする必要はありません。詳細については、「AWS Key Management Service デベロッパーガイド」の 「AWS 所有のキー」を参照してください。 -
カスタマーマネージドキー –
ZIP-PLUGINカスタムパッケージを作成するときにカスタマーマネージドキーを選択することで、既存の AWS 所有のキー に 2 番目の暗号化レイヤーを追加できます。Amazon OpenSearch Service カスタムパッケージでは、作成、所有、管理する対称カスタマーマネージドキーの使用をサポートし、既存の AWS 所有の暗号化に 2 番目の暗号化レイヤーを追加します。この暗号化レイヤーはユーザーが完全に制御できるため、以下のタスクを実行できます。
-
キーポリシーの確立と維持
-
AWS Identity and Access Management (IAM) ポリシーと許可の確立と維持
-
キーポリシーの有効化と無効化
-
キー暗号化マテリアルのローテーション
-
タグの追加
-
キーエイリアスの作成
-
キー削除のスケジュール
-
詳細については、「AWS Key Management Service デベロッパーガイド」の「カスタマーマネージドキー」を参照してください。
注記
Amazon OpenSearch Service カスタムパッケージは、AWS 所有のキー を使用して、保管時の暗号化を無償で自動的に有効にします。ただし、カスタマーマネージドキーの使用には AWS KMS 料金が適用されます。料金の詳細については、「AWS Key Management Service の料金
Amazon OpenSearch Service カスタムパッケージサービスが AWS KMS で許可を使用する方法
OpenSearch Service カスタムパッケージには、カスタマーマネージドキーを使用するための許可が必要です。
カスタマーマネージドキーで暗号化された ZIP-PLUGIN パッケージを作成すると、Amazon OpenSearch Service カスタムパッケージサービスは、CreateGrant リクエストを AWS KMS に送信して、ユーザーに代わって許可を作成します。AWS KMS の許可は、OpenSearch Service にアカウントの AWS KMS キーへのアクセスを許可します。OpenSearch Service カスタムパッケージによって作成された許可には、リクエストにカスタムパッケージ ID を持つ暗号化コンテキストが含まれている場合にのみオペレーションを許可する制約があります。
Amazon OpenSearch Service カスタムパッケージは、以下の内部オペレーションのために、カスタマーマネージドキーの使用に関する許可を必要とします。
| Operation | 説明 |
|---|---|
DescribeKey |
DescribeKey リクエストを AWS KMS に送信して、プラグインパッケージの作成時に入力された対称カスタマーマネージドキー ID が有効であることを確認します。 |
GenerateDataKeyWithoutPlaintext |
GenerateDataKeyWithoutPlaintext リクエストを AWS KMS に送信して、カスタマーマネージドキーで暗号化されたデータキーを生成します。 |
GenerateDataKey |
GenerateDataKey リクエストを AWS KMS に送信して、内部でコピーするときにパッケージを暗号化するデータキーを生成します。 |
Decrypt |
Decrypt リクエストを AWS KMS に送信して、暗号化されたデータキーを復号し、それらがデータの復号化に使用できるようにします。 |
許可へのアクセスの取り消しや、カスタマーマネージドキーに対するサービスのアクセスの取り消しは、いつでもできます。これを行うと、OpenSearch Service は、カスタマーマネージドキーによって暗号化されたすべてのデータにアクセスできなくなり、そのデータに依存しているオペレーションが影響を受けます。例えば、OpenSearch Service がアクセスできないプラグインパッケージを関連付けようとすると、オペレーションは AccessDeniedException エラーを返します。
カスタマーマネージドキーを作成する
カスタマーマネージドキーを作成するには、AWS マネジメントコンソール または AWS KMS API を使用します。
対称カスタマーマネージドキーを作成するには
-
「AWS Key Management Service デベロッパーガイド」の「KMS キーの作成」のステップに従います。
キーポリシー
キーポリシーは、カスタマーマネージドキーへのアクセスを制御します。すべてのカスタマーマネージドキーには、キーポリシーが 1 つだけ必要です。このポリシーには、そのキーを使用できるユーザーとその使用方法を決定するステートメントが含まれています。キーポリシーは、カスタマーマネージドキーの作成時に指定できます。詳細については、「AWS Key Management Service デベロッパーガイド」の「AWS KMS でのキーポリシー」を参照してください。
カスタマーマネージドキーをプラグインリソースで使用するには、キーポリシーで次の API オペレーションを許可する必要があります。
-
kms:CreateGrant- カスタマーマネージドキーに許可を追加します。指定された AWS KMS キーへのアクセスコントロールを許可し、OpenSearch Service カスタムパッケージが必要とするオペレーションを付与するためのアクセスを許可します。許可の使用についての詳細は、「AWS KMS デベロッパーガイド」を参照してください。これにより、OpenSearch Service は以下を実行できます。
-
GenerateDataKeyWithoutPlainTextを呼び出して暗号化されたデータキーを生成し、さらに検証するために保存します。 -
GenerateDataKeyを呼び出してプラグインパッケージを内部でコピーします。 -
Decryptを呼び出してプラグインパッケージに内部でアクセスします。 -
RetireGrantへのサービスを許可するために、削除プリンシパルを設定します。
-
-
kms:DescribeKey– カスタマーマネージドキーの詳細を提供し、OpenSearch Service がキーを検証できるようにします。 -
kms:GenerateDataKey、kms:GenerateDataKeyWithoutPlaintext、kms:Decrypt– OpenSearch Service カスタムパッケージが、許可内でこれらのオペレーションを使用できるようにします。
OpenSearch Service カスタムパッケージに追加できるポリシーステートメントの例を次に示します。
"Statement" : [ { "Sid" : "Allow access to principals authorized to use OpenSearch Service custom packages", "Effect" : "Allow", "Principal" : { "AWS" : "*" }, "Action" : [ "kms:CreateGrant", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:Decrypt" ], "Resource" : "*", "Condition" : { "StringEquals" : { "kms:ViaService" : "custom-packages.region.amazonaws.com" }, "StringEquals" : { "kms:EncryptionContext:packageId": "Id of the package" } } }, { "Sid" : "Allow access to principals authorized to use Amazon OpenSearch Service custom packages", "Effect" : "Allow", "Principal" : { "AWS" : "*" }, "Action" : [ "kms:DescribeKey" ], "Resource" : "*", "Condition" : { "StringEquals" : { "kms:ViaService" : "custom-packages.region.amazonaws.com" } } } ]
ポリシーでのアクセス許可の指定に関する詳細については、「AWS Key Management Service デベロッパーガイド」の「Key policies in AWS KMS」を参照してください。
キーアクセスのトラブルシューティングについては、「AWS Key Management Service デベロッパーガイド」の「Troubleshooting AWS KMS permissions」を参照してください。
Amazon OpenSearch Service カスタムパッケージのカスタマーマネージドキーを指定する
カスタマーマネージドキーは、ZIP-PLUGIN パッケージの 2 番目の暗号化レイヤーとして指定できます。
プラグインパッケージを作成するときは、OpenSearch Service カスタムパッケージがプラグインパッケージの暗号化に使用する AWS KMS キー ID を入力してデータキーを指定できます。
AWS KMS キー ID – AWS KMS カスタマーマネージドキーのキー識別子 キー ID、キー ARN、エイリアス名、またはエイリアス ARN を入力します。
Amazon OpenSearch Service カスタムパッケージの暗号化コンテキスト
暗号化コンテキストは、データに関する追加のコンテキスト情報を含むキーと値のペアのオプションセットです。
AWS KMS は、暗号化コンテキストを追加の認証済みデータとして使用して、認証済み暗号化をサポートします。データの暗号化リクエストに暗号化コンテキストを組み込むと、AWS KMS は暗号化コンテキストを暗号化後のデータにバインドします。データを復号化するには、そのリクエストに (暗号化時と) 同じ暗号化コンテキストを含めます。
Amazon OpenSearch Service カスタムパッケージの暗号化コンテキスト
Amazon OpenSearch Service カスタムパッケージは、すべての AWS KMS 暗号化オペレーションで同じ暗号化コンテキストを使用します。キーは packageId で、値はプラグインパッケージの package-id です。
モニタリングに暗号化コンテキストを使用する
対称カスタマーマネージドキーを使用してプラグインパッケージを暗号化する場合は、監査レコードとログで暗号化コンテキストを使用して、カスタマーマネージドキーがどのように使用されているかを特定することができます。暗号化コンテキストは、 AWS CloudTrail または Amazon CloudWatch Logs によって生成されたログにも表示されます。
暗号化コンテキストを使用して顧客マネージドキーへのアクセスを制御する
対称カスタマーマネージドキー (CMK) へのアクセスを制御するための条件として、キーポリシーと IAM ポリシー内の暗号化コンテキストを使用することもできます。付与する際に、暗号化コンテキストの制約を使用することもできます。
OpenSearch Service カスタムパッケージは、許可で暗号化コンテキスト制約を使用して、アカウントまたはリージョン内のカスタマーマネージドキーへのアクセスを制御します。グラントの制約では、指定された暗号化コンテキストの使用をグラントが許可するオペレーションが必要です。
次に、特定の暗号化コンテキストのカスタマーマネージドキーへのアクセスを付与するキーポリシーステートメントの例を示します。このポリシーステートメントの条件では、暗号化コンテキストを指定する暗号化コンテキスト制約がグラントに必要です。
{ "Sid": "Enable DescribeKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleReadOnlyRole" }, "Action": "kms:DescribeKey", "Resource": "*" }, { "Sid": "Enable OpenSearch Service custom packages to use the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleReadOnlyRole" }, "Action" : [ "kms:CreateGrant", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals" : { "kms:EncryptionContext:packageId": "ID of the package" } } }
OpenSearch カスタムパッケージサービスの暗号化キーのモニタリング
OpenSearch Service カスタムパッケージサービスリソースで AWS KMS カスタマーマネージドキーを使用すると、CloudTrail または CloudWatch Logs を使用して、OpenSearch カスタムパッケージが AWS KMS に送信するリクエストを追跡できます。
詳細
次のリソースは、保管時のデータ暗号化についての詳細を説明しています。
-
AWS KMS の基本概念の詳細については、「AWS Key Management Service デベロッパーガイド」の「AWS KMS keys」を参照してください。
-
AWS KMS のセキュリティのベストプラクティスの詳細については、「AWS 規範ガイダンス」の AWS Key Management Service のベストプラクティスに関するガイドを参照してください。