对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。

字段级加密(Field Level Encryption)

在使用 MongoDB Enterprise 或 MongoDB Atlas 集群时,可以使用 mongosh 配置 Queryable Encryption 或 客户端字段级加密并连接加密支持。Queryable Encryption 和 CSFLE 都使用数据加密密钥来支持字段值的加密和解密,并将此加密密钥材料存储在 Key Management Service (KMS)中。

mongosh 支持以下KMS提供商与Queryable Encryption和CSFLE一起使用:

  • Amazon Web Services KMS

  • Azure Key Vault

  • Google Cloud Platform KMS

  • 本地托管密钥文件

以下过程使用 mongosh 创建用于字段级加密的数据加密密钥。

使用以下标签页选择适合您的部署的 KMS:

1

使用 --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_ID 和 YOUR_AWS_SECRET_ACCESS_KEY 的值。

3

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

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

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

4

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

keyVault = csfleDatabaseConnection.getKeyVault();
5

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

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

其中:

  • 第一个参数必须 为 "aws" 才能指定已配置的 Amazon Web Services KMS。

  • 第二个参数必须 是包含以下内容的文档:

    • 要连接到的Amazon Web Services地区,例如 us-west-2

    • Amazon Web Services 客户主密钥 (CMK) 的 Amazon 资源名称 (ARN)。

  • 第三个参数可以 是一个或多个 keyAltNames 的数组,用于数据加密密钥。每个密钥备用名称必须 是唯一的。getKeyVault() 在 keyAltNames 上创建一个唯一索引,以便在字段上执行唯一性(如果还不存在的话)。密钥备用名称有利于数据加密密钥的查找。

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

  • 使用 getKey() 通过其 UUID 检索创建的密钥,或

  • 使用 getKeyByAltName() 按指定的备用名称检索密钥。

给本页内容打分