Amazon Location Service の保管中のデータ暗号化 - Amazon Location Service

Amazon Location Service の保管中のデータ暗号化

Amazon Location Service はデフォルトで暗号化を提供し、AWS が所有する暗号化キーを使用して顧客の機密の保管中のデータを保護します。

  • AWS所有キー — Amazon Location はデフォルトでこれらのキーを使用して、個人を特定できるデータを自動的に暗号化します。AWS が所有するキーを表示、管理、使用したり、その使用を監査したりすることはできません。ただし、データを暗号化するキーを保護するために何らかの措置を講じたり、プログラムを変更したりする必要はありません。詳細については、AWS Key Management Service デベロッパーガイドの「AWS所有キー」を参照してください。

保管中のデータをデフォルトで暗号化することで、機密データの保護におけるオーバーヘッドと複雑な作業を減らすのに役立ちます。同時に、セキュリティを重視したアプリケーションを構築して、暗号化のコンプライアンスと規制の厳格な要件を満たすことができます。

この暗号化層を無効にしたり、代替の暗号化タイプを選択したりすることはできませんが、トラッカーとジオフェンスコレクションのリソースを作成するときにカスタマー管理キーを選択することで、既存の AWS 所有の暗号化キーに 2 番目の暗号化層を追加できます。

  • カスタマーマネージドキー — Amazon Location では、顧客が作成、所有、管理する対称的な顧客管理キーを使用して、既存の AWS 所有の暗号化にさらに暗号化層を追加することができます。この暗号化層はユーザーが完全に制御できるため、次のようなタスクを実行できます。

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

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

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

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

    • タグの追加

    • キーエイリアスの作成

    • キー削除のスケジュール設定

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

次の表は、Amazon Location が個人を特定できるデータをどのように暗号化するかをまとめたものです。

データ型 AWS 所有のキー暗号化 カスタマーマネージドキーの暗号化 (オプション)
Position

デバイス位置の詳細 を含むポイントジオメトリ。

有効 有効
PositionProperties

位置の更新に関連付けられたキーと値のペアのセット。

有効 有効
GeofenceGeometry

ジオフェンスされたエリアを表すポリゴンジオフェンスジオメトリ

有効 有効
DeviceId

デバイス位置更新をトラッカーリソースにアップロードする際に指定されたデバイス識別子

有効 サポートされません
GeofenceId

ジオフェンスジオメトリ、または特定のジオフェンスコレクション内のジオフェンスのバッチを格納するときに指定される識別子。

有効 サポートされません
注記

Amazon Location では、個人を特定できるデータを無料で保護するために、AWS 所有キーを使用して保管中の暗号化を自動的に有効にします。

ただし、カスタマーマネージドキーの使用には AWS KMS 料金が適用されます。料金の詳細については、「AWS Key Management Service 料金」を参照してください。

AWS KMS の詳細については、「AWS Key Management Service とは」を参照してください。

AWS KMS でAmazon Location Service グラントを使用する方法

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

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

このグラントは、Amazon Location が、以下の内部オペレーションでカスタマーマネージドキーを使用するために必要です。

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

  • GenerateDataKeyWithoutPlaintext を AWS KMS に送信して、カスタマーマネージドキーで暗号化されたデータキーを生成します。

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

任意のタイミングで、許可に対するアクセス権を取り消したり、カスタマーマネージドキーに対するサービスからのアクセス権を削除したりできます。これを行うと、Amazon Location はカスタマーマネージドキーによって暗号化されたすべてのデータにアクセスできなくなり、そのデータに依存しているオペレーションが影響を受けます。例えば、Amazon Location がアクセスできない暗号化されたトラッカーから デバイスの位置を取得 しようとすると、操作によって AccessDeniedException エラーが返されます。

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

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

対称カスタマーマネージドキーを作成するには

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

キーポリシー

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

Amazon Location リソースでカスタマーマネージドキーを使用するには、キーポリシーで次の API オペレーションを許可する必要があります。

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

    これにより、Amazon Location で次のことが可能になります。

    • GenerateDataKeyWithoutPlainText を呼び出して、暗号化されたデータキーを生成して保存します。データキーは暗号化にすぐには使用されないからです。

    • Decrypt を呼び出して、保存された暗号化データキーを使用して暗号化データにアクセスします。

    • 退職するプリンシパルを設定して、RetireGrant にサービスがそれを許可するようにします。

  • kms:DescribeKey — カスタマーマネージドキーの詳細を提供し、サービスがキーを検証できるようにします。

Amazon Location に追加できるポリシーステートメントの例を以下に示します。

"Statement" : [ { "Sid" : "Allow access to principals authorized to use Amazon Location", "Effect" : "Allow", "Principal" : { "AWS" : "*" }, "Action" : [ "kms:DescribeKey", "kms:CreateGrant" ], "Resource" : "*", "Condition" : { "StringEquals" : { "kms:ViaService" : "geo.region.amazonaws.com", "kms:CallerAccount" : "111122223333" } }, { "Sid": "Allow access for key administrators", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action" : [ "kms:*" ], "Resource": "arn:aws:kms:region:111122223333:key/key_ID" }, { "Sid" : "Allow read-only access to key metadata to the account", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : [ "kms:Describe*", "kms:Get*", "kms:List*", "kms:RevokeGrant" ], "Resource" : "*" } ]

ポリシーでの許可の指定に関する詳細については、「AWS Key Management Service デベロッパーガイド」を参照してください。

キーアクセスのトラブルシューティング については、AWS Key Management Service デベロッパーガイド を参照してください。

Amazon Location のカスタマーマネージドキーの指定

カスタマーマネージドキーは、以下のリソースのセカンドレイヤー暗号化として指定できます。

リソースを作成する場合、KMS ID を入力してデータキーを指定できます。Amazon Location は、リソースに保存されている識別可能な個人データを暗号化するために使用します。

  • KMS ID — AWS KMS カスタマーマネージドキーの キー識別子。キー ID、キー ARN、エイリアス名、またはエイリアス ARN を入力します。

Amazon Location Service の暗号化コンテキスト

暗号化コンテキストは、データに関する追加のコンテキスト情報が含まれたキーバリューペアのオプションのセットです。

AWS KMS は、暗号化コンテキストを追加の認証済みデータとして使用して、認証済み暗号化をサポートします。データの暗号化リクエストに暗号化コンテキストを組み込むと、AWS KMS は暗号化コンテキストを暗号化後のデータにバインドします。データを復号化するには、そのリクエストに (暗号化時と) 同じ暗号化コンテキストを含めます。

Amazon Location Service の暗号化コンテキスト

Amazon Location は、すべての AWS KMS 暗号化操作で同じ暗号化コンテキストを使用します。キーはaws:geo:arn、値はリソース Amazon リソースネーム (ARN) です。

"encryptionContext": { "aws:geo:arn": "arn:aws:geo:us-west-2:111122223333:geofence-collection/SAMPLE-GeofenceCollection" }

モニタリングに暗号化コンテキストを使用する

対称カスタマーマネージドキーを使用してトラッカーまたはジオフェンスコレクションを暗号化する場合は、監査レコードとログで暗号化コンテキストを使用して、カスタマーマネージドキーがどのように使用されているかを特定することもできます。暗号化コンテキストは、AWS CloudTrail または Amazon CloudWatch Logs によって生成されたログにも表示されます。

暗号化コンテキストを使用してカスタマーマネージドキーへのアクセスを制御する

conditions が対称カスタマーマネージドキーへのアクセスを制御するための条件として、キーポリシーと IAM ポリシー内の暗号化コンテキストを使用することもできます。付与する際に、暗号化コンテキストの制約を使用することもできます。

Amazon Location は、権限で暗号化コンテキスト制約を使用して、アカウントまたはリージョン内のカスタマーマネージドキーへのアクセスを制御します。権限の制約では、権限によって許可されるオペレーションで指定された暗号化コンテキストを使用する必要があります。

次に、特定の暗号化コンテキストのカスタマーマネージドキーへのアクセスを付与するキーポリシーステートメントの例を示します。このポリシーステートメントの条件では、権限に暗号化コンテキストを指定する暗号化コンテキスト制約が必要です。

{ "Sid": "Enable DescribeKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleReadOnlyRole" }, "Action": "kms:DescribeKey", "Resource": "*" }, { "Sid": "Enable CreateGrant", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleReadOnlyRole" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:geo:arn": "arn:aws:geo:us-west-2:111122223333:tracker/SAMPLE-Tracker" } } }

Amazon Location Service の暗号化キーを監視する

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

次の例は、カスタマーマネージドキーで暗号化されたデータにアクセスするために Amazon Location によって呼び出される KMS オペレーションを監視する、CreateGrantGenerateDataKeyWithoutPlainTextDecrypt、および DescribeKey の AWS CloudTrail イベントです。

CreateGrant

AWS KMS カスタマーマネージドキーを使用してトラッカーまたはジオフェンスコレクションリソースを暗号化すると、Amazon Location はユーザーに代わって、AWS アカウントの KMS キーへのアクセスを CreateGrant にリクエストします。Amazon Location が作成する権限は、AWS KMS カスタマーマネージドキーに関連付けられたリソースに固有のものです。さらに、Amazon Location は、リソースを削除するときに付与を削除する RetireGrant オペレーションを使用します。

以下のイベント例では 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:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "userName": "Admin" }, "webIdFederationData": {}, "attributes": { "mfaAuthenticated": "false", "creationDate": "2021-04-22T17:02:00Z" } }, "invokedBy": "geo.amazonaws.com" }, "eventTime": "2021-04-22T17:07:02Z", "eventSource": "kms.amazonaws.com", "eventName": "CreateGrant", "awsRegion": "us-west-2", "sourceIPAddress": "172.12.34.56", "userAgent": "ExampleDesktop/1.0 (V1; OS)", "requestParameters": { "retiringPrincipal": "geo.region.amazonaws.com", "operations": [ "GenerateDataKeyWithoutPlaintext", "Decrypt", "DescribeKey" ], "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE", "granteePrincipal": "geo.region.amazonaws.com" }, "responseElements": { "grantId": "0ab0ac0d0b000f00ea00cc0a0e00fc00bce000c000f0000000c0bc0a0000aaafSAMPLE" }, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": false, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" } ], "eventType": "AwsApiCall", "managementEvent": true, "eventCategory": "Management", "recipientAccountId": "111122223333" }
GenerateDataKeyWithoutPlainText

トラッカーまたはジオフェンスコレクションリソースの AWS KMS カスタマーマネージドキーを有効にすると、Amazon Location は固有のテーブルキーを作成します。リソースのAWS KMSカスタマーマネージドキーを指定する GenerateDataKeyWithoutPlainText リクエストを AWS KMS に送信します。

以下のイベント例では GenerateDataKeyWithoutPlainText オペレーションを記録しています。

{ "eventVersion": "1.08", "userIdentity": { "type": "AWSService", "invokedBy": "geo.amazonaws.com" }, "eventTime": "2021-04-22T17:07:02Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKeyWithoutPlaintext", "awsRegion": "us-west-2", "sourceIPAddress": "172.12.34.56", "userAgent": "ExampleDesktop/1.0 (V1; OS)", "requestParameters": { "encryptionContext": { "aws:geo:arn": "arn:aws:geo:us-west-2:111122223333:geofence-collection/SAMPLE-GeofenceCollection" }, "keySpec": "AES_256", "keyId": "arn:aws:kms:us-west-2: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": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" } ], "eventType": "AwsApiCall", "managementEvent": true, "eventCategory": "Management", "recipientAccountId": "111122223333", "sharedEventID": "57f5dbee-16da-413e-979f-2c4c6663475e" }
Decrypt

暗号化されたトラッカーまたはジオフェンスコレクションにアクセスすると、Amazon Location は Decrypt オペレーションを呼び出し、保存されている暗号化されたデータキーを使用して暗号化されたデータにアクセスします。

以下のイベント例では Decrypt オペレーションを記録しています。

{ "eventVersion": "1.08", "userIdentity": { "type": "AWSService", "invokedBy": "geo.amazonaws.com" }, "eventTime": "2021-04-22T17:10:51Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-west-2", "sourceIPAddress": "172.12.34.56", "userAgent": "ExampleDesktop/1.0 (V1; OS)", "requestParameters": { "encryptionContext": { "aws:geo:arn": "arn:aws:geo:us-west-2:111122223333:geofence-collection/SAMPLE-GeofenceCollection" }, "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE", "encryptionAlgorithm": "SYMMETRIC_DEFAULT" }, "responseElements": null, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" } ], "eventType": "AwsApiCall", "managementEvent": true, "eventCategory": "Management", "recipientAccountId": "111122223333", "sharedEventID": "dc129381-1d94-49bd-b522-f56a3482d088" }
DescribeKey

Amazon Location は DescribeKey オペレーションを使用して、トラッカーまたはジオフェンスコレクションに関連付けられている AWS KMS カスタマーマネージドキーがアカウントとリージョンに存在するかどうかを確認します。

以下のイベント例では 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:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "userName": "Admin" }, "webIdFederationData": {}, "attributes": { "mfaAuthenticated": "false", "creationDate": "2021-04-22T17:02:00Z" } }, "invokedBy": "geo.amazonaws.com" }, "eventTime": "2021-04-22T17:07:02Z", "eventSource": "kms.amazonaws.com", "eventName": "DescribeKey", "awsRegion": "us-west-2", "sourceIPAddress": "172.12.34.56", "userAgent": "ExampleDesktop/1.0 (V1; OS)", "requestParameters": { "keyId": "00dd0db0-0000-0000-ac00-b0c000SAMPLE" }, "responseElements": null, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" } ], "eventType": "AwsApiCall", "managementEvent": true, "eventCategory": "Management", "recipientAccountId": "111122223333" }

詳細はこちら

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