Amazon DocumentDB エラスティッククラスターで保管中のデータ暗号化 - Amazon DocumentDB

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

Amazon DocumentDB エラスティッククラスターで保管中のデータ暗号化

以下のトピックは、Amazon DocumentDB エラスティッククラスターの AWS Key Management Service 暗号化キーについて学習、作成、およびモニタリングするのに役立ちます。

Amazon DocumentDB エラスティッククラスターは、キー管理のために AWS Key Management Service (AWS KMS) と自動的に統合され、エンベロープ暗号化と呼ばれる方法を使用してデータを保護します。エンベロープ暗号化の仕組みの詳細については、AWS Key Management Service デベロッパーガイドの「エンベロープ暗号化」を参照してください。

AWS KMS key はキーの論理表現です。KMS キーには、キー ID、作成日、説明、キーステータスなどのメタデータが含まれます。KMS キーには、データの暗号化と復号に使用されるキーマテリアルも含まれています。KMS キーの詳細については、AWS Key Management Service デベロッパーガイドの「AWS KMS keys 」を参照してください。

Amazon DocumentDB エラスティッククラスターは、次の 2 種類のキーによる暗号化をサポートしています。

  • AWS 所有キー — Amazon DocumentDB エラスティッククラスターは、デフォルトでこれらのキーを使用して、個人を特定できるデータを自動的に暗号化します。 AWS所有キーを表示、管理、使用したり、その使用を監査したりすることはできません。ただし、データを暗号化するキーを保護するためのアクションの実施やプログラムの変更を行う必要はありません。詳細については、AWS Key Management Service デベロッパーガイドの「AWS 所有キー」を参照してください。

  • カスタマーマネージドキー — AWS KMS keys ユーザーが作成、所有、管理する対称 。この暗号化層はユーザーが完全に制御できるため、次のようなタスクを実行できます。

    • キーポリシーの策定と維持

    • IAM ポリシーとグラントの策定と維持

    • キーポリシーの有効化と無効化

    • キー暗号化マテリアルのローテーション

    • タグの追加

    • キーエイリアスの作成

    • 削除のためのキースケジューリング

    詳細については、「AWS Key Management Service デベロッパーガイド」の「カスタマーマネージドキー」を参照してください。

重要

Amazon DocumentDB がサポートしているのは対称 KMS キーのみであるため、クラスターの暗号化には対称暗号化 KMS キーを使用して必要があります。Amazon DocumentDB エラスティッククラスター内のデータの暗号化に非対称 KMS キー を使用しないでください。詳細については、AWS Key Management Service デベロッパーガイドの「AWS KMSの非対称キーの」を参照してください。

Amazon DocumentDB がクラスターの暗号化キーにアクセスできなくなった場合、例えばキーへのアクセス権が失効した場合など、暗号化されたクラスターは終了状態になります。この場合、クラスターはバックアップからのみ復元できます。Amazon DocumentDB では、バックアップは常に 1 日間有効になります。また、暗号化された Amazon DocumentDB クラスターのキーを無効にすると、最終的にそのクラスタに対する読み取りおよび書き込みのアクセス権は失われます。Amazon DocumentDB で、アクセスできないキーで暗号化されたクラスターが発生すると、クラスターが終了状態になります。この場合、クラスターは使用できなくなり、データベースの現在の状態を復元することはできません。クラスターを復元するには、Amazon DocumentDB の暗号化キーへのアクセスを再び有効にした後、バックアップからクラスターを復元します。

重要

暗号化されたクラスターの KMS キーを作成した後は、そのクラスターを変更することはできません。暗号化されたエラスティッククラスターを作成する前に、暗号化キーの要件を確認してください。

Amazon DocumentDB エラスティッククラスターが で許可を使用する方法 AWS KMS

Amazon DocumentDB エラスティック クラスター には、カスタマーマネージドキーを使用するためのグラントが必要です。

カスタマーマネージドキーで暗号化されたクラスターを作成すると、Amazon DocumentDB エラスティッククラスターはCreateGrantリクエストを送信してユーザーに代わってグラントを作成します AWS KMS。の許可 AWS KMS は、Amazon DocumentDB エラスティッククラスターに顧客アカウントの KMS キーへのアクセスを許可するために使用されます。

Amazon DocumentDB エラスティッククラスターでは、以下の内部操作にカスタマーマネージドキーを使用するためのグラントが必要です。

  • トラッカーまたはジオフェンスコレクションの作成時に入力された対称カスタマーマネージド KMS キー ID が有効であることを確認する AWS KMS リクエストを DescribeKeyに送信します。

  • カスタマーマネージドキーで暗号化されたデータキーを生成する AWS KMS には、 にGenerateDataKeyリクエストを送信します。

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

  • グラントへのアクセスの取り消しや、カスタマーマネージドキーに対するサービスのアクセスの取り消しは、いつでもできます。これを行うと、Amazon DocumentDB エラスティッククラスターはカスタマーマネージドキーによって暗号化されたすべてのデータにアクセスできなくなり、そのデータに依存しているオペレーションが影響を受けます。

カスタマーマネージドキーを作成する

AWS Management Console または AWS KMS API を使用して、対称カスタマーマネージドキーを作成できます。

対称カスタマー管理キーの作成

AWS Key Management Service デベロッパーガイド にある 対称カスタマーマネージドキーの作成 ステップに従います。

キーポリシー

キーポリシーは、カスタマーマネージドキーへのアクセスを制御します。すべてのカスタマーマネージドキーには、キーポリシーが 1 つだけ必要です。このポリシーには、そのキーを使用できるユーザーとその使用方法を決定するステートメントが含まれています。キーポリシーは、カスタマーマネージドキーの作成時に指定できます。詳細については、AWS Key Management Service デベロッパーガイドの「AWS Key Management Service 概要」にあるKMS キーアクセス情報を参照してください。

Amazon DocumentDB エラスティック クラスター で顧客管理キーを使用するには、キーポリシーで次の API オペレーションを許可する必要があります。

  • kms:CreateGrant - カスタマーマネージドキーに許可を追加します。この権限は、指定された KMS キーへのアクセスを制御します。これにより、必要な許可の付与オペレーションに対し Amazon Location Service がアクセスできるようにします。許可の詳細については、AWS Key Management Service デベロッパーガイドの「許可の使用 AWS KMS」 を参照してください。

  • kms:DescribeKey — お客様が管理するキーの詳細を提供し、DocDB-Elastic がキーを検証できるようにします。

  • kms:Decrypt – 暗号化されたデータにアクセスするために、Docdb-Elastic が保存された暗号化データキーを使用できるようにします。

  • kms:GenerateDataKey – Docdb-Elastic が暗号化されたデータキーを生成して保存できるようにします。データキーはすぐに暗号化に使用されないからです。

詳細については、「 AWS Key Management Service デベロッパーガイド」の「キーポリシーでの AWS サービスのアクセス許可」および「キーアクセスのトラブルシューティング」を参照してください。

IAM ポリシーによるカスタマーマネージドキーアクセスの制限

KMS キーポリシーに加えて、IAM ポリシーで KMS キー権限を制限することもできます。

さまざまな方法で、IAM ポリシー をより厳しくすることができます。例えば、Amazon DocumentDB エラスティッククラスターを起点とするリクエストにのみカスタマーマネージドキーを使用できるようにするには、docdb-elastic.<region-name>.amazonaws.com 値で kms:ViaService 条件キーを使用します。

詳細については、AWS Key Management Service デベロッパーガイド他のアカウントのユーザーに KMS キーの使用を許可するをご参照ください。

Amazon DocumentDB エラスティック クラスター の暗号化キーのモニタリング

Docdb Elastic リソースで AWS KMS key カスタマーマネージドキーを使用する場合、 AWS CloudTrail または Amazon CloudWatch Logs を使用して、Docdb Elastic が送信するリクエストを追跡できます AWS KMS。

次の例はCreateGrant、Amazon DocumentDB エラスティッククラスターによって呼び出される AWS KMS key オペレーションをモニタリングして、カスタマーマネージドキーによって暗号化されたデータにアクセスDescribeKeyするための GenerateDataKeyWithoutPlainTextDecrypt、、および の AWS CloudTrail イベントです。

CreateGrant
{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE3", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROAIGDTESTANDEXAMPLE", "arn": "arn:aws:iam::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "userName": "Sampleuser01" }, "webIdFederationData": {}, "attributes": { "creationDate": "2023-05-09T23:04:20Z", "mfaAuthenticated": "false" } }, "invokedBy": "docdb-elastic.amazonaws.com" }, "eventTime": "2023-05-09T23:55:48Z", "eventSource": "kms.amazonaws.com", "eventName": "CreateGrant", "awsRegion": "us-east-1", "sourceIPAddress": "docdb-elastic.amazonaws.com", "userAgent": "docdb-elastic.amazonaws.com", "requestParameters": { "retiringPrincipal": "docdb-elastic.us-east-1.amazonaws.com", "granteePrincipal": "docdb-elastic.us-east-1.amazonaws.com", "operations": [ "Decrypt", "Encrypt", "GenerateDataKey", "GenerateDataKeyWithoutPlaintext", "ReEncryptFrom", "ReEncryptTo", "CreateGrant", "RetireGrant", "DescribeKey" ], "keyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" }, "responseElements": { "grantId": "0ab0ac0d0b000f00ea00cc0a0e00fc00bce000c000f0000000c0bc0a0000aaafSAMPLE", "keyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" }, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": false, "resources": [ { "accountId": "AWS Internal", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }
GenerateDataKey
{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE3", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROAIGDTESTANDEXAMPLE", "arn": "arn:aws:iam::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "userName": "Sampleuser01" }, "webIdFederationData": {}, "attributes": { "creationDate": "2023-05-10T18:02:59Z", "mfaAuthenticated": "false" } }, "invokedBy": "docdb-elastic.amazonaws.com" }, "eventTime": "2023-05-10T18:03:25Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-east-1", "sourceIPAddress": "docdb-elastic.amazonaws.com", "userAgent": "docdb-elastic.amazonaws.com", "requestParameters": { "keySpec": "AES_256", "keyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" }, "responseElements": null, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": true, "resources": [ { "accountId": "AWS Internal", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }
Decrypt
{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE3", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROAIGDTESTANDEXAMPLE", "arn": "arn:aws:iam::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "userName": "Sampleuser01" }, "webIdFederationData": {}, "attributes": { "creationDate": "2023-05-10T18:05:49Z", "mfaAuthenticated": "false" } }, "invokedBy": "docdb-elastic.amazonaws.com" }, "eventTime": "2023-05-10T18:06:19Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-east-1", "sourceIPAddress": "docdb-elastic.amazonaws.com", "userAgent": "docdb-elastic.amazonaws.com", "requestParameters": { "encryptionAlgorithm": "SYMMETRIC_DEFAULT" }, "responseElements": null, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": true, "resources": [ { "accountId": "AWS Internal", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }
DescribeKey
{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE3", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROAIGDTESTANDEXAMPLE", "arn": "arn:aws:iam::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "userName": "Sampleuser01" }, "webIdFederationData": {}, "attributes": { "creationDate": "2023-05-09T23:04:20Z", "mfaAuthenticated": "false" } }, "invokedBy": "docdb-elastic.amazonaws.com" }, "eventTime": "2023-05-09T23:55:48Z", "eventSource": "kms.amazonaws.com", "eventName": "DescribeKey", "awsRegion": "us-east-1", "sourceIPAddress": "docdb-elastic.amazonaws.com", "userAgent": "docdb-elastic.amazonaws.com", "requestParameters": { "keyId": "alias/SampleKmsKey" }, "responseElements": null, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": true, "resources": [ { "accountId": "AWS Internal", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }

詳細

次のリソースは、保管時のデータ暗号化についての詳細を説明しています。