加密

存储在 Neo4j Aura 中的所有数据都使用集群内加密在构成实例的各个节点之间进行加密,并且在静止状态下使用底层云提供商的加密机制进行加密。

Aura 始终需要加密连接,并确保客户端在建立连接时验证服务器证书。这意味着流向 Neo4j Aura 和从 Neo4j Aura 流出的网络流量始终是加密的。

默认情况下,每个云提供商都使用Google 管理的加密AWS SSE-S3 加密Azure 存储加密对所有备份存储桶(包括存储在其中的对象)进行加密。

为了保护静止状态的数据,Aura 使用云提供商提供的加密数据存储功能。无论客户选择在 AWS、Azure 还是 GCP 中托管,每个对象存储都提供服务器端加密的存储桶,用于静止状态的加密。默认情况下,AWS、Azure 和 GCP 使用 AWS SSE-S3 加密、Azure 存储加密 (SSE) 或 Google 管理的加密对所有备份存储桶(包括存储在其中的对象)进行加密。这确保了您存储在这些云提供商中的所有数据都使用 256 位高级加密标准 (AES)。

除了 Aura 对静止状态数据的默认加密之外,客户管理的密钥还使注重安全的企业能够通过其云服务提供商的密钥管理服务 (KMS) 在 Aura 上管理加密密钥,从而控制数据保护和访问管理,包括从 Neo4j 中撤销访问权限。这允许在 Aura 的默认企业级安全措施之外遵守严格的安全策略。

客户管理的密钥

AuraDB 虚拟专用云 AuraDS 企业版

客户管理的密钥 (CMK) 使您对密钥操作拥有比标准 Neo4j 加密更多的控制权。这些密钥是使用支持的云密钥管理服务 (KMS) 创建和管理的。从外部来看,客户管理的密钥也称为客户管理的加密密钥 (CMEK)。

使用客户管理的密钥时,所有静止状态的数据都使用该密钥进行加密。v4.x 和 v5.x 实例支持客户管理的密钥。

使用客户管理的密钥时,您授予 Aura 使用该密钥进行加密和解密的权限,但 Aura 无权访问密钥材料。Aura 无法控制您在 KMS 中外部管理的密钥的可用性。

丢失客户管理的密钥会导致使用该密钥加密的所有数据都无法访问。如果密钥被禁用、删除、过期或权限被撤销,Neo4j 将无法管理数据库实例。

密钥轮换

在您的 KMS 平台中,您可以配置客户管理的密钥的自动轮换,也可以执行手动轮换。

虽然 Aura 不强制执行自动轮换,但定期轮换密钥是最佳实践。不建议手动轮换密钥。

导入现有数据库

您可以将数据库直接从控制台上传到使用客户管理的密钥在 Neo4j 5 中加密的实例,也可以使用 neo4j-admin database upload 上传。如果数据库大于 4 GB,则必须使用 neo4j-admin database upload。请注意,在 Neo4j v4.4 及更早版本中,neo4j-admin push-to-cloud 命令**不支持**使用客户管理的密钥加密的实例。有关更多信息,请参阅Neo4j Admin database upload 文档。

克隆受 CMK 保护的实例

要克隆受客户管理的密钥保护的实例,密钥必须有效且可供 Aura 使用。如果目标区域和产品中不存在相同的 CMK,则克隆的实例必须使用该区域和产品中可用的 CMK 进行加密。

最佳实践是使用与克隆来源相同的客户管理的密钥。您可以覆盖此设置以使用其他客户管理的密钥,但不能使用 Neo4j 管理的密钥。

克隆使用客户管理的密钥加密的实例时,使用 API 时会应用特定限制。以下是您可能会遇到的详细信息和可能的错误,具体取决于克隆方法和密钥配置。

表 1. 克隆限制摘要
克隆方法 目标密钥 结果

控制台和 API

与源实例相同的 CMK

允许克隆。

控制台

与源实例不同的 CMK

允许克隆。显示警告消息。

控制台

Neo4j 管理的密钥

阻止克隆。显示错误消息。

API

与源实例不同的 CMK,或 Neo4j 管理的密钥

阻止克隆。显示错误消息。

从 Aura 中删除 CMK

在 Aura 中使用客户管理的密钥加密一个或多个 Aura 数据库实例时,无法从 Aura 中删除该密钥。如果您不再需要使用此客户管理的密钥加密 Aura 数据库,请首先删除使用该密钥加密的 Aura 数据库实例,然后才能从 Aura 中删除该密钥。请记住,此过程只会断开密钥与 Aura 之间的链接,不会从云 KMS 中删除实际密钥。

AWS 密钥

创建 AWS 密钥

  1. 在 AWS KMS 中创建一个密钥,确保区域与您的 Aura 数据库实例匹配。复制生成的 ARN。您需要在下一步中使用它。

  2. 在 Aura 控制台中转到**安全设置**,添加**客户管理的密钥**,并在 Aura 控制台中添加密钥时复制生成的 JSON 代码。

  3. 在 AWS KMS 中,编辑密钥策略以包含 JSON 代码。

编辑 AWS 密钥策略

在 AWS KMS 中最初创建密钥后,您可以编辑密钥策略。在 AWS 密钥策略中,“Statement”是一个数组,包含一个或多个对象。数组中的每个对象都描述一个安全标识符 (SID)。AWS 代码数组中的对象用逗号分隔,例如 {[{'a'}, {'b'}, {'c'}]}

在最后一个 SID 中的右大括号后添加一个逗号,然后粘贴在 Aura 控制台中生成的 JSON 代码(例如 {[{'a'}, {'b'}, {'c'}, 在此处添加代码 ]})。

AWS 区域

Aura 支持位于与实例相同区域的 AWS 客户管理的密钥。在 AWS KMS 中创建客户管理的密钥时,您可以创建一个单区域密钥,也可以创建一个多区域密钥。

单区域密钥仅存在于一个 AWS 区域,该区域必须与您的 Aura 实例所在的区域相同。

多区域密钥具有主区域,但可以复制到与您的 Aura 实例所在的区域相同的其他区域。副本与主密钥共享相同的密钥 ID,但具有不同的 Amazon 资源名称 (ARN)。

AWS 自动密钥轮换

Aura 支持通过 AWS KMS 进行自动密钥轮换。要在 AWS KMS 中启用自动密钥轮换,请在最初创建密钥后勾选“密钥轮换”复选框,以便在一年后自动轮换密钥。

Azure 密钥

创建 Azure 密钥保管库

在 Azure 门户中创建密钥保管库,确保区域与您的 Aura 数据库实例区域匹配。按顺序浏览各个选项卡以启用以下功能:

  • 清除保护

  • Azure 基于角色的访问控制

  • 用于卷加密的 Azure 磁盘加密

  • 允许所有网络访问

创建密钥

  1. 准备创建密钥时,如果需要,请授予角色分配

    1. 在密钥保管库内,转到“访问控制 (IAM)”并“添加角色分配”。

    2. 在“角色”选项卡中,选择“密钥保管库管理员”。

    3. 在“成员”选项卡中,选择“用户、组或服务主体”。

    4. 从“选择成员”中,添加您自己或相关人员,然后“审阅 + 分配”。

  2. 在 Azure 密钥保管库中创建密钥。

  3. 创建密钥后,单击密钥版本并复制“密钥标识符”,您将在下一步中需要它。

  4. 在 Aura 控制台中转到“安全设置”,并添加“客户管理的密钥”。

  5. 请按照 Aura 控制台中提供的说明完成后续步骤。

创建服务主体

在您的密钥所在的 Azure Entra ID 租户中,创建一个与 Neo4j CMK 应用程序关联的服务主体,使用 Aura 控制台中显示的“Neo4j CMK 应用程序 ID”。

一种方法是单击 Azure 门户顶部的终端图标,以打开 Azure 云 Shell。

使用 Azure CLI,命令为:

az ad sp create --id Neo4jCMKApplicationID

有关 Azure CLI 的更多信息,请参阅 az ad sp 文档

授予密钥权限

  1. 要向 Azure 密钥添加角色分配,请在密钥内转到“访问控制 (IAM)”并添加“角色分配”。

  2. 在“角色”选项卡中,选择“密钥保管库加密专员”。

  3. 在“成员”选项卡中,选择“用户、组或服务主体”。

  4. 在“选择成员”中,粘贴 Aura 控制台中显示的“Neo4j CMK 应用程序名称”。

  5. 应出现“Neo4j CMK 应用程序”,选择此应用程序,然后“审阅 + 分配”。

GCP 密钥

创建密钥环

  1. 在 Google Cloud 控制台中转到“密钥管理”。

  2. 创建一个“密钥环”。

  3. 密钥环的“位置类型”应设置为“区域”。

  4. 确保区域与您的 Aura 数据库实例区域匹配。

  5. 选择“创建”,您将自动被带到密钥创建页面。

创建密钥

  1. 在 Google 控制台中创建一个密钥。您可以使用选项的默认设置,但建议设置密钥轮换周期。

  2. 选择“创建”,您将被带到密钥环,其中列出了您的密钥。

  3. 单击“更多”(三个点)并“复制资源名称”,您将在下一步中需要它。有关更多信息,请参阅 Google Cloud 文档

  4. 在 Aura 控制台中转到“安全设置”,并添加“客户管理的密钥”。将“资源名称”粘贴到“加密密钥资源名称”字段中。

  5. 在 Aura 控制台中选择“添加密钥”后,将显示三个“服务帐户”。您将在后续步骤中需要它们。

授予密钥权限

  1. 转到 Google Cloud 控制台,单击密钥并转到“权限”,然后“授予访问权限”。

  2. 在“添加主体”中,粘贴 Aura 控制台中显示的三个服务帐户。

  3. 在“分配角色”中,将“Cloud KMS 加密密钥加密器/解密器”和“Cloud KMS 查看器”这两个角色分配给所有三个服务帐户。