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

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

静态加密 Neptune 资源

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

要管理用于加密和解密 Neptune 资源的密钥,请使用Amazon Key Management Service(Amazon KMS).Amazon KMS将安全、高度可用的硬件和软件结合起来,提供可扩展到云的密钥管理系统。利用 Amazon KMS,您可创建加密密钥并定义控制这些密钥的使用方式的策略。Amazon KMS 支持 Amazon CloudTrail,因此,您可审核密钥使用情况以验证密钥是否使用得当。你可以使用你的Amazon KMS与 Neptune 组合使用且受支持AmazonAmazon Simple Storage Service (Amazon S3)、Amazon Elastic Block Store (Amazon EBS) 和 Amazon Redshift。有关支持 Amazon KMS 的服务的列表,请参阅 Amazon Key Management Service 开发人员指南中的 Amazon 服务如何使用 Amazon KMS

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

对 Neptune 数据库实例启用加密

要为新 Neptune 数据库实例启用加密,请选择中的启用加密Neptune 控制台上的部分。有关创建 Neptune 数据库实例的信息,请参阅使用创建新 Neptune 数据库集群Amazon CloudFormation或手动.

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

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

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

重要

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

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

创建加密 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 加密密钥。

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

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

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

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