本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
加密静态的 Neptune 资源
Data-at-rest AWS 建议使用加密。有关更多信息,请参阅Data-at-Rest和 Data-in-Transit 加密。创建新的 Neptune 数据库集群或新的 Neptune 全球数据库时,将在 AWS 控制台中强制执行加密。这提供了额外的数据保护层。它可以保护您的数据免遭未经授权的访问底层存储,并有助于满足静态数据加密的合规性要求。
要管理用于加密和解密 Neptune 资源的密钥,可以使用 ()。AWS Key Management ServiceAWS KMS AWS KMS 将安全、高度可用的硬件和软件相结合,提供可扩展到云端的密钥管理系统。使用 AWS KMS,您可以创建加密密钥并定义控制如何使用这些密钥的策略。 AWS KMS 支持 AWS CloudTrail,因此您可以审核密钥使用情况,以验证密钥的使用是否正确。
在静态状态下,任何加密的 Neptune 数据库集群的所有相关日志、备份和快照都经过加密。Neptune 加密不适用于导出到亚马逊的日志。 CloudWatch
对 Neptune 资源进行加密
在创建 Neptune 数据库集群或 Neptune 全球数据库时,您可以为加密密钥提供 AWS KMS 密钥标识符。如果您未指定 AWS KMS 密钥标识符,Neptune 将在该地区使用您的默认 Amazon RDS 加密密钥 (aws/rds)。 AWS KMS
为您 AWS 账户中的每个区域创建默认加密密钥。对于 Neptune Global 集群,其中的 AWS KMS 密钥数量将与区域一样多。
创建 Neptune 资源后,您无法更改该资源的加密密钥。因此,在创建 Neptune 资源之前,请务必确定您的加密密钥要求。如果需要不同的 AWS KMS 密钥,则可以使用现有 Neptune 数据库集群的快照创建具有不同 AWS KMS 密钥的新密钥(参见从数据库集群快照还原)。
您可以使用来自其他账户的密钥的亚马逊资源名称 (ARN) 来加密 Neptune 资源。如果您使用拥有 AWS KMS 加密密钥的相同 AWS 账户创建 Neptune 资源,则您传递的 AWS KMS 密钥 ID 可以是 AWS 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"
以下是包含必要权限的密钥策略示例(针对us-east-1区域):
本策略中的第一条语句是可选的。它允许访问用户的根主体。
第二条语句提供对该角色所有必需 AWS KMS 的 API 的访问权限,其范围仅限于 RDS 服务主体。
第三个语句强制该角色不能将此密钥用于任何其他 AWS 服务,从而进一步加强了安全性。
也可以通过添加以下内容来进一步缩小 createGrant 权限范围:
"Condition": { "Bool": { "kms:GrantIsForAWSResource": true } }
Neptune 加密的限制
Neptune 加密存在以下限制:
-
您无法将未加密的 Neptune 数据库集群转换为加密的 Neptune 数据库集群。您只能在创建 Neptune 数据库集群时为其启用加密。但是,您可以将未加密的 Neptune 数据库集群快照还原到加密的 Neptune 数据库集群。为此,请在从未加密的 Neptune 数据库集群快照还原时指定 KMS 加密密钥。
-
出于兼容性考虑,仍然可以通过 CLI AWS 和 SDK 创建未加密的 Neptune 数据库集群。控制台仅允许创建加密的 Neptune 数据库集群。
-
您不能在同一 Neptune 全球数据库中混合使用加密和未加密的 Neptune 数据库集群。要么所有集群都已加密,要么所有集群都未加密。这是在 Neptune 全局数据库配置中强制执行的。