4.2版中的新功能。
客户端字段级加密需要用于访问客户主密钥(CMK)的密钥管理服务(KMS)。在数据加密密钥创建过程中,MongoDB使用指定的CMK自动加密数据加密密钥 。
删除CMK会使使用该CMK加密的所有数据加密密钥永久地不可读,从而使使用这些数据加密密钥加密的所有值永久性地不可读。
客户端字段级加密支持以下KMS提供程序:
重要
要获得AWS KMS支持,请使用4.2.2 mongo
Shell。mongo
由于KMS响应对象发生意外更改,因此4.2.0和4.2.1 Shell不支持AWS KMS服务。有关此问题的更多信息,请参见SERVER-44721。
MongoDB客户端加密支持使用 Amazon Web Services密钥管理服务来加密和解密数据加密密钥。具体来说,MongoDB使用指定的客户主密钥(CMK)将数据加密密钥安全地传输到AWS KMS,以进行加密或解密。CMK永远不会离开AWS KMS。
该mongo
外壳支持配置访问的AWS KMS两种方法:
配置对AWS KMS的访问权限至少需要一个AWS访问密钥及其对应的秘密密钥。与访问密钥关联的IAM用户必须至少具有一项策略,并且必须执行以下操作:
实施KMS访问的最小特权分离
考虑配置IAM用户角色,以便MongoDB仅具有运行所需的操作和资源的权限。
例如,以下策略JSON将必需的操作范围限制为单个CMK:
有关使用AWS KMS进行数据加密密钥管理的完整文档,请参阅 管理数据加密密钥。
密钥保管库是一个存储数据加密密钥的集合,供客户端字段级加密使用。数据加密密钥使用通过支持的密钥管理系统(KMS)管理的客户主密钥(CMK)进行加密 。
该mongo
外壳程序提供了用于数据加密密钥管理的辅助方法:
检索数据加密密钥 | |
创建或修改数据加密密钥 | |
删除数据加密密钥 重要 删除数据加密密钥会使使用该数据加密密钥加密的所有字段永久不可读。 |
read
有权访问密钥库集合的应用程序可以通过查询集合来检索数据加密密钥。但是,只有有权访问用于加密数据加密密钥的CMK的应用程序才能使用该密钥进行加密或解密。
默认情况下,MongoDB将密钥保管库存储在连接的集群上。MongoDB还支持将远程群集指定为密钥库。应用程序必须有权访问远程密钥保管库群集和连接群集,才能执行客户端字段级加密操作。
数据加密密钥具有以下结构:
客户端字段级加密取决于keyAltNames
值的唯一性
。该mongo
壳
KeyVault.createKey()
方法创建唯一索引上keyAltNames
,如果不存在的。应用程序可以listIndexes
对密钥库集合使用该命令来检查是否存在唯一索引。如果唯一索引不存在,则应用程序必须在执行数据加密密钥管理之前创建它。
有关数据加密密钥管理的完整文档,请参阅 管理数据加密密钥。