客户端字段级加密

在使用MongoDB Enterprise或MongoDB Atlas集群时,可以使用mongosh配置客户端字段级加密并使用加密支持进行连接。客户端字段级加密使用数据加密密钥来支持字段值的加密和解密,并将该加密密钥材料存储在密钥管理服务(KMS)中。

mongosh支持以下KMS提供程序与客户端字段级加密一起使用:

  • Amazon Web Services KMS
  • Azure Key Vault
  • Google Cloud Platform KMS
  • Locally Managed Keyfile

创建数据加密密钥

以下过程使用mongosh创建数据加密密钥,以用于客户端字段级加密和解密。

使用下面的选项卡选择适合您的部署的KMS:

Amazon Web Services KMS :

  1. 启动mongosh Shell

    使用--nodb选项创建一个mongosh会话,但不连接到正在运行的数据库:

    mongosh --nodb
    
  2. 创建加密配置

    为AWS KMS配置客户端字段级加密需要AWS访问密钥ID及其关联的秘密访问密钥。AWS访问密钥必须对应于对KMS服务具有所有列表和读取权限的IAM用户。

    在mongosh中,创建一个新的AutoEncryptionOpts变量,用于存储客户端字段级加密配置,其中包含以下凭据:

    var autoEncryptionOpts = {
      "keyVaultNamespace" : "encryption.__dataKeys",
      "kmsProviders" : {
        "aws" : {
          "accessKeyId" : "YOUR_AWS_ACCESS_KEY_ID",
          "secretAccessKey" : "YOUR_AWS_SECRET_ACCESS_KEY"
        }
      }
    }
    

    根据需要填写YOUR_AWS_ACCESS_KEY_IDYOUR_AWS_SECRET_ACCESS_KEY的值。

  3. 联系加密支持

    在mongosh中,使用Mongo()构造函数建立到目标集群的数据库连接。将AutoEncryptionOpts文档指定为Mongo()构造函数的第二个参数,以配置客户端字段级加密的连接:

    csfleDatabaseConnection = Mongo(
      "mongodb://replaceMe.example.net:27017/?replicaSet=myMongoCluster",
      autoEncryptionOpts
    )
    

    replaceMe.example.netURI替换为目标群集的连接字符串。

  4. 创建密钥存储库对象

    使用getKeyVault()shell方法创建keyVault对象:

    keyVault = csfleDatabaseConnection.getKeyVault();
    
  5. 创建加密密钥

    使用createKey()shell方法创建数据加密密钥:

    keyVault.createKey(
      "aws",
      { region: "regionname", key: "awsarn" },
      [ "keyAlternateName" ]
    )
    

    其中:

    • 第一个参数必须为“aws”以指定配置的Amazon Web Services KMS。
    • 第二个参数必须是包含以下内容的文档:
    • 第三参数可以是用于数据加密密钥的一个或多个keyAltName的数组。每个密钥备用名称必须唯一。getKeyVault()在keyAltNames上创建一个唯一索引,以便在字段不存在时强制字段的唯一性。密钥备用名称有助于数据加密密钥的查找。

如果成功,createKey()将返回新数据加密密钥的UUID。要从密钥库检索新的数据加密密钥文档,请执行以下操作之一:

另见:

翻译:韩鹏帅

原文:Run Aggregation Pipelines

Copyright © 上海锦木信息技术有限公司 all right reserved,powered by Gitbook文件修订时间: 2023-09-01 17:10:26

results matching ""

    No results matching ""