静态加密 Neptune 资源 - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

静态加密 Neptune 资源

Neptune 加密的实例通过防止对基础存储进行未经授权的访问来帮助保护您的数据,提供了额外的一层数据保护。您可以使用 Neptune 加密来增强部署在云中的应用程序的数据保护。您还可以使用它来满足 data-at-rest 加密的合规性要求。

要管理用于加密和解密 Neptune 资源的密钥,可以使用 ()。Amazon Key Management ServiceAmazon KMS Amazon KMS 将安全、高度可用的硬件和软件相结合,提供可扩展到云端的密钥管理系统。使用 Amazon KMS,您可以创建加密密钥并定义控制如何使用这些密钥的策略。 Amazon KMS 支持 Amazon CloudTrail,因此您可以审核密钥使用情况,以验证密钥的使用是否正确。您可以将 Amazon KMS 密钥与 Neptune 和支持的 Amazon 服务结合使用,例如亚马逊简单存储服务 (Amazon S3)、亚马逊弹性区块存储 (Amazon EBS) Block Store 和 Amazon Redshift。有关支持的服务列表 Amazon KMS,请参阅《Amazon Key Management Service 开发人员指南》 Amazon KMS中的Amazon 服务使用方式

可为 Neptune 加密的实例加密所有日志、备份和快照。

为 Neptune 数据库实例启用加密

要为新的 Neptune 数据库实例启用加密,请在 Neptune 控制台的启用加密部分选择。有关创建 Neptune 数据库实例的信息,请参阅创建新的 Neptune 数据库集群

在创建加密的 Neptune 数据库实例时,您还可以提供加密 Amazon KMS 密钥的密钥标识符。如果您未指定 Amazon KMS 密钥标识符,Neptune 会将您的默认 Amazon RDS 加密密钥 (aws/rds) 用于您的新 Neptune 数据库实例。 Amazon KMS 为您的账户创建 Neptune 的默认加密密钥。 Amazon 您的 Amazon 账户在每个 Amazon 区域都有不同的默认加密密钥。

创建加密的 Neptune 数据库实例后,您无法更改该实例的加密密钥。因此,请确保先确定您的加密密钥要求,然后再创建加密的 Neptune 数据库实例。

可使用另一账户中的密钥的 Amazon 资源名称 (ARN) 来加密 Neptune 数据库实例。如果您使用拥有用于加密新 Neptune 数据库实例的 Amazon KMS 加密密钥的相同 Amazon 账户创建 Neptune 数据库实例,则您传递的 Amazon KMS 密钥 ID 可以是密钥别名,而不是 Amazon KMS 密钥的 ARN。

重要

如果 Neptune 失去对 Neptune 数据库实例的加密密钥的访问权限(例如,在撤销对密钥的 Neptune 访问权限时),该加密的数据库实例将被置于最终状态且只能从备份进行还原。我们强烈建议您始终对加密的 Neptune 数据库实例启用备份,以防止数据库中的加密数据丢失。

启用加密时所需的密钥权限

创建加密 Neptune 数据库实例的 IAM 用户或角色必须至少拥有 KMS 密钥的以下权限:

  • "kms:Encrypt"

  • "kms:Decrypt"

  • "kms:GenerateDataKey"

  • "kms:ReEncryptTo"

  • "kms:GenerateDataKeyWithoutPlaintext"

  • "kms:CreateGrant"

  • "kms:ReEncryptFrom"

  • "kms:DescribeKey"

以下是包含必要权限的密钥策略示例:

{ "Version": "2012-10-17", "Id": "key-consolepolicy-3", "Statement": [ { "Sid": "Enable Permissions for root principal", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow use of the key for Neptune", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/NeptuneFullAccess" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:ReEncryptTo", "kms:GenerateDataKeyWithoutPlaintext", "kms:CreateGrant", "kms:ReEncryptFrom", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "rds.us-east-1.amazonaws.com" } } }, { "Sid": "Deny use of the key for non Neptune", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012:role/NeptuneFullAccess" }, "Action": [ "kms:*" ], "Resource": "*", "Condition": { "StringNotEquals": { "kms:ViaService": "rds.us-east-1.amazonaws.com" } } } ] }
  • 本策略中的第一条语句是可选的。它允许访问用户的根主体。

  • 第二条语句提供对该角色所有必需 Amazon KMS 的 API 的访问权限,其范围仅限于 RDS 服务主体。

  • 第三个语句强制该角色不能将此密钥用于任何其他 Amazon 服务,从而进一步加强了安全性。

也可以通过添加以下内容来进一步缩小 createGrant 权限范围:

"Condition": { "Bool": { "kms:GrantIsForAWSResource": true } }

Neptune 加密的限制

加密 Neptune 集群存在以下限制:

  • 您无法将未加密的数据库集群转换为加密的数据库集群。

    但是,您可以将未加密的 数据库集群快照还原为加密的 数据库集群。为此,请在从未加密的数据库集群快照还原时指定 KMS 加密密钥。

  • 您无法将未加密的数据库实例转换为加密的数据库实例。您只能在创建数据库实例时为其启用加密。

  • 此外,不能将已加密的数据库实例修改为禁用加密。

  • 您无法拥有未加密数据库实例的加密只读副本或加密数据库实例的未加密只读副本。

  • 加密的只读副本的加密密钥必须用与源数据库实例的相同。