本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon Location Service 中的静态数据加密
Amazon Location Service 默认提供加密,以使用 AWS 自有的加密密钥保护敏感的静态客户数据。
-
AWS 自有密钥 — Amazon Location 默认使用这些密钥来自动加密个人身份数据。您无法查看、管理或使用 AWS 自有密钥,也无法审核其使用情况。但是,无需采取任何措施或更改任何计划即可保护用于加密数据的密钥。有关更多信息,请参阅 AWS Key Management Service 开发人员指南中的 AWS 自有密钥。
默认情况下,静态数据加密有助于减少保护敏感数据时涉及的操作开销和复杂性。同时,它还支持构建符合严格加密合规性和监管要求的安全应用程序。
虽然您无法禁用此加密层或选择其他加密类型,但您可以在创建跟踪器和地理围栏收集资源时选择客户管理的密钥,从而在现有的 AWS 加密密钥上添加第二层加密:
-
客户托管密钥 — Amazon Location 支持使用您创建、拥有和管理的对称客户托管密钥,在现有 AWS 自有加密的基础上添加第二层加密。由于您可以完全控制这层加密,因此可以执行以下任务:
-
制定和维护关键策略
-
制定和维护IAM政策及补助金
-
启用和禁用密钥策略
-
轮换加密材料
-
添加标签
-
创建密钥别名
-
计划删除密钥
有关更多信息,请参阅 AWS Key Management Service 开发人员指南中的客户托管密钥。
-
下表汇总了 Amazon Location 如何加密个人身份数据。
注意
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 Management Console、或,创建对称的客户托管密钥。 AWS KMS APIs
创建对称的客户托管密钥
按照《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 的客户托管密钥
您可以将客户托管密钥指定为以下资源的第二层加密:
创建资源时,您可以通过输入 KMSID 来指定数据密钥,Amazon Location 使用该ID来加密资源存储的可识别个人数据。
-
KMSID — 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 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 CloudTrail或 Amazon CloudWatch Logs 来跟踪亚马逊位置发送到的请求 AWS KMS。
以下示例是CreateGrant
、GenerateDataKeyWithoutPlainText
Decrypt
、和监控 Amazon L DescribeKey
ocation 为访问由您的客户托管密钥加密的数据而调用的KMS操作 AWS CloudTrail 的事件:
了解更多
以下资源提供有关静态数据加密的更多信息。
-
有关 AWS Key Management Service 基本概念的更多信息,请参阅 《AWS Key Management Service 开发人员指南》。
-
有关安全最佳实践的更多信息 AWS Key Management Service,请参阅《AWS Key Management Service 开发人员指南》。