Amazon Location Service 中的静态数据加密 - Amazon Location Service

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon Location Service 中的静态数据加密

Amazon Location Service 默认提供加密,以使用 AWS 自有的加密密钥保护敏感的静态客户数据。

  • AWS 自有密钥 — Amazon Location 默认使用这些密钥来自动加密个人身份数据。您无法查看、管理或使用 AWS 自有密钥,也无法审核其使用情况。但是,无需采取任何措施或更改任何计划即可保护用于加密数据的密钥。有关更多信息,请参阅 AWS Key Management Service 开发人员指南中的 AWS 自有密钥

默认情况下,静态数据加密有助于减少保护敏感数据时涉及的操作开销和复杂性。同时,它还支持构建符合严格加密合规性和监管要求的安全应用程序。

虽然您无法禁用此加密层或选择其他加密类型,但您可以在创建跟踪器和地理围栏收集资源时选择客户管理的密钥,从而在现有的 AWS 加密密钥上添加第二层加密:

  • 客户托管密钥 — Amazon Location 支持使用您创建、拥有和管理的对称客户托管密钥,在现有 AWS 自有加密的基础上添加第二层加密。由于您可以完全控制这层加密,因此可以执行以下任务:

    • 制定和维护关键策略

    • 制定和维护 IAM policy 和授权

    • 启用和禁用密钥策略

    • 轮换密钥加密材料

    • 添加标签

    • 创建密钥别名

    • 计划删除密钥

    有关更多信息,请参阅 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?

Amazon Location Service 如何使用补助金 AWS KMS

Amazon Location 需要授权,才能使用客户托管密钥。

当您创建使用客户托管密钥加密的追踪器资源地理围栏集合时,Amazon Location 会通过向发送CreateGrant请求来代表您创建授权。 AWS KMS中的授权 AWS KMS 用于让 Amazon Location 访问客户账户中的 KMS 密钥。

Amazon Location 需要授权,才能将客户托管的密钥用于以下内部操作:

  • 向发送DescribeKey请求, AWS KMS 以验证在创建跟踪器或地理围栏集合时输入的对称客户托管 KMS 密钥 ID 是否有效。

  • 向发送GenerateDataKeyWithoutPlaintext请求 AWS KMS 以生成由您的客户托管密钥加密的数据密钥。

  • Decrypt 请求发送 AWS KMS 到以解密加密的数据密钥,以便它们可用于加密您的数据。

您可以随时撤销授予访问权限,或删除服务对客户托管密钥的访问权限。如果您这样做,Amazon Location 将无法访问由客户托管的密钥加密的任何数据,这会影响依赖于该数据的操作。例如,如果您尝试从 Amazon Location 无法访问的加密跟踪器中获取设备位置,则该操作将返回 AccessDeniedException 错误。

创建客户托管密钥

您可以使用或 AWS KMS API 创建对称的客户托管密钥。 AWS Management Console

创建对称的客户托管密钥

按照《AWS Key Management Service 开发人员指南》中创建对称的客户托管密钥的步骤进行操作。

密钥策略

密钥策略控制对客户托管密钥的访问。每个客户托管密钥必须只有一个密钥策略,其中包含确定谁可以使用该密钥以及如何使用该密钥的声明。创建客户托管密钥时,可以指定密钥策略。有关更多信息,请参阅 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 验证密钥。

以下是您可以为 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 使用该 ID 来加密资源存储的可识别个人数据。

Amazon Location Service 加密上下文

加密上下文是一组可选的键值对,包含有关数据的其他上下文信息。

AWS KMS 使用加密上下文作为其他经过身份验证的数据来支持经过身份验证的加密。当您在加密数据的请求中包含加密上下文时,会将加密上下文 AWS KMS 绑定到加密数据。要解密数据,您需要在请求中包含相同的加密上下文。

Amazon Location Service 加密上下文

Amazon Location 在所有 AWS KMS 加密操作中使用相同的加密上下文,其中密钥为aws:geo:arn,值为资源亚马逊资源名称 (ARN)。

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

使用加密上下文进行监控

当您使用对称的客户托管密钥来加密您的跟踪器或地理围栏集合时,您还可以使用审计记录和日志中的加密上下文来识别客户托管密钥的使用情况。加密上下文还会显示在AWS CloudTrail 或 Amazon Logs 生成的 CloudWatch 日志中。

使用加密上下文控制对客户托管式密钥的访问

您可以使用密钥策略和 IAM 策略中的加密上下文作为 conditions 来控制对您的对称客户托管密钥的访问。您还可以在授权中使用加密上下文限制。

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 的加密密钥

当您将 AWS KMS 客户托管密钥与 Amazon Location Service 资源一起使用时,您可以使用AWS CloudTrailAmazon CloudWatch Logs 来跟踪亚马逊位置发送到的请求 AWS KMS。

以下示例是CreateGrantGenerateDataKeyWithoutPlainTextDecrypt、和DescribeKey监控 Amazon Location 调用的 KMS 操作 AWS CloudTrail 的事件,以访问由您的客户托管密钥加密的数据:

CreateGrant

当您使用 AWS KMS 客户托管密钥加密您的追踪器或地理围栏收集资源时,Amazon Location 会代表您发送访问您账户中的 KMS 密钥的CreateGrant请求。 AWS 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 会创建一个唯一的表密钥。它向发送GenerateDataKeyWithoutPlainText请求 AWS KMS ,指定资源的 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" }

了解更多信息

以下资源提供有关静态数据加密的更多信息。