加密
存储在 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 将无法管理数据库实例。 |
导入现有数据库
您可以将数据库直接从控制台上传到使用客户管理的密钥在 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 时会应用特定限制。以下是您可能会遇到的详细信息和可能的错误,具体取决于克隆方法和密钥配置。
克隆方法 | 目标密钥 | 结果 |
---|---|---|
控制台和 API |
与源实例相同的 CMK |
允许克隆。 |
控制台 |
与源实例不同的 CMK |
允许克隆。显示警告消息。 |
控制台 |
Neo4j 管理的密钥 |
阻止克隆。显示错误消息。 |
API |
与源实例不同的 CMK,或 Neo4j 管理的密钥 |
阻止克隆。显示错误消息。 |
AWS 密钥
创建 AWS 密钥
-
在 AWS KMS 中创建一个密钥,确保区域与您的 Aura 数据库实例匹配。复制生成的 ARN。您需要在下一步中使用它。
-
在 Aura 控制台中转到**安全设置**,添加**客户管理的密钥**,并在 Aura 控制台中添加密钥时复制生成的 JSON 代码。
-
在 AWS KMS 中,编辑密钥策略以包含 JSON 代码。
编辑 AWS 密钥策略
在 AWS KMS 中最初创建密钥后,您可以编辑密钥策略。在 AWS 密钥策略中,“Statement”是一个数组,包含一个或多个对象。数组中的每个对象都描述一个安全标识符 (SID)。AWS 代码数组中的对象用逗号分隔,例如 {[{'a'}, {'b'}, {'c'}]}
。
在最后一个 SID 中的右大括号后添加一个逗号,然后粘贴在 Aura 控制台中生成的 JSON 代码(例如 {[{'a'}, {'b'}, {'c'}, 在此处添加代码 ]}
)。
Azure 密钥
创建 Azure 密钥保管库
在 Azure 门户中创建密钥保管库,确保区域与您的 Aura 数据库实例区域匹配。按顺序浏览各个选项卡以启用以下功能:
-
清除保护
-
Azure 基于角色的访问控制
-
用于卷加密的 Azure 磁盘加密
-
允许所有网络访问
创建密钥
-
准备创建密钥时,如果需要,请授予角色分配
-
在密钥保管库内,转到“访问控制 (IAM)”并“添加角色分配”。
-
在“角色”选项卡中,选择“密钥保管库管理员”。
-
在“成员”选项卡中,选择“用户、组或服务主体”。
-
从“选择成员”中,添加您自己或相关人员,然后“审阅 + 分配”。
-
-
在 Azure 密钥保管库中创建密钥。
-
创建密钥后,单击密钥版本并复制“密钥标识符”,您将在下一步中需要它。
-
在 Aura 控制台中转到“安全设置”,并添加“客户管理的密钥”。
-
请按照 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
文档。
GCP 密钥
创建密钥环
-
在 Google Cloud 控制台中转到“密钥管理”。
-
创建一个“密钥环”。
-
密钥环的“位置类型”应设置为“区域”。
-
确保区域与您的 Aura 数据库实例区域匹配。
-
选择“创建”,您将自动被带到密钥创建页面。
创建密钥
-
在 Google 控制台中创建一个密钥。您可以使用选项的默认设置,但建议设置密钥轮换周期。
-
选择“创建”,您将被带到密钥环,其中列出了您的密钥。
-
单击“更多”(三个点)并“复制资源名称”,您将在下一步中需要它。有关更多信息,请参阅 Google Cloud 文档
-
在 Aura 控制台中转到“安全设置”,并添加“客户管理的密钥”。将“资源名称”粘贴到“加密密钥资源名称”字段中。
-
在 Aura 控制台中选择“添加密钥”后,将显示三个“服务帐户”。您将在后续步骤中需要它们。