源自外部的配置文件值
MongoDB 支持在配置文件中使用扩展指令来加载外部来源的值。扩展指令可以加载特定配置文件选项的值或加载整个配置文件。扩展指令有助于隐藏安全证书和密码等机密信息。
storage: dbPath: "/var/lib/mongo" systemLog: destination: file path: "/var/log/mongodb/mongod.log" net: bindIp: __exec: "python /home/user/getIPAddresses.py" type: "string" trim: "whitespace" digest: 85fed8997aac3f558e779625f2e51b4d142dff11184308dc6aca06cff26ee9ad digest_key: 68656c6c30303030307365637265746d796f6c64667269656e64 tls: mode: requireTLS certificateKeyFile: "/etc/tls/mongod.pem" certificateKeyFilePassword: __rest: "https://myrestserver.example.net/api/config/myCertKeyFilePassword" type: "string" digest: b08519162ba332985ac18204851949611ef73835ec99067b85723e10113f5c26 digest_key: 6d795365637265744b65795374756666
如果配置文件包含
__rest
扩展,则在 Linux/macOS 上,对配置文件的读取权限必须仅限于运行mongod
/mongos
进程的用户。如果配置文件包含
__exec
扩展,则在 Linux/macOS 上,对配置文件的写入权限必须仅限于运行mongod
/mongos
进程的用户。
要使用扩展指令,必须指定--configExpand
命令行选项以及所使用的扩展指令的完整列表:
mongod --config "/path/to/config/mongod.conf" --configExpand "rest,exec"
如果省略--configExpand
选项,或者未指定配置文件中使用的扩展指令的完整列表,则mongod
/ mongos
将返回错误并终止。您只能在命令行上指定--configExpand
选项。
使用__rest
扩展指令
__rest
扩展指令从REST
端点加载配置文件值。 __rest
支持加载配置文件中的特定值或加载整个配置文件。
使用__exec
扩展指令
__exec
扩展指令从 shell 或终端命令加载配置文件值。 __exec
支持加载配置文件中的特定值或加载整个配置文件。
扩展指令参考
__rest
__rest
扩展指令从REST
端点加载配置文件值。__rest
支持加载配置文件中的特定值或加载整个配置文件。然后,mongod
/mongos
开始使用外部来源的值作为其配置的一部分。__rest
扩展指令采用以下语法:要为一个或多个特定配置文件设置指定
REST
端点:<some configuration file setting>: __rest: "<string>" type: "string" trim: "none|whitespace" digest: "<string>" digest_key: "<string>" 要为整个配置文件指定
REST
端点:__rest: "<string>" type: "yaml" trim: "none|whitespace" 如果通过
REST
端点指定整个配置文件,则扩展指令及其选项必须是配置文件中指定的唯一值。
__rest
采用以下字段:字段类型说明字符串必需
mongod
/mongos
针对其发出GET
请求以检索外部来源值的 URL。对于非本地主机
REST
端点(例如,远程服务器上托管的REST
端点),__rest
需要加密 (https://
) 的 URL,其中主机和远程服务器都支持 TLS 1 。 1或更高版本。如果 URL
REST
中指定的 端点需要身份验证,请使用标准 RFC3986 用户信息 将档案编码到 URL 中 格式。对于本地主机
REST
端点(例如,侦听主机的REST
端点),__rest
允许使用未加密 (http://
) URL。type
字符串trim
字符串可选指定whitespace
以指示__rest
修剪任何前导或尾随空格,特别是出现" "
、"\r"
、"\n"
、"\t"
、"\v"
和"\f"
的空格。默认为none
,即不进行修剪。字符串可选。扩展结果的 SHA- 256摘要。
如果指定,则还必须指定digest_key。
字符串可选。用于计算 SHA- 256摘要的密钥的十六进制字符串表示形式。
如果指定,则还必须指定摘要。
注意
有关示例,请参阅使用
__rest
扩展指令。
__exec
__exec
扩展指令从 shell 或终端命令的输出中加载配置文件值。__exec
支持加载配置文件中的特定值或加载整个配置文件。然后,mongod
/mongos
开始使用外部来源的值作为其配置的一部分。__exec
扩展指令采用以下语法:要为一个或多个特定配置文件设置指定 shell 或终端命令,请执行以下操作:
<some configuration file setting>: __exec: "<string>" type: "string" trim: "none|whitespace" 为整个配置文件指定 shell 或终端命令:
__exec: "<string>" type: "yaml" trim: "none|whitespace" 如果通过终端或 shell 命令指定整个配置文件,则扩展指令及其选项必须是配置文件中指定的唯一值。
__exec
采用以下字段:字段类型说明__exec
字符串type
字符串trim
字符串可选指定whitespace
以指示__exec
修剪任何前导或尾随空格,特别是出现" "
、"\r"
、"\n"
、"\t"
、"\v"
和"\f"
的空格。默认为none
,即不进行修剪。字符串可选。扩展结果的 SHA- 256摘要。
如果指定,您还必须指定digest_key
字符串可选。用于计算 SHA- 256摘要的密钥的十六进制字符串表示形式。
如果指定,还必须指定摘要
注意
有关示例,请参阅使用
__exec
扩展指令。
输出具有已解析扩展指令值的配置文件
您可以通过使用--outputConfig
选项启动mongod
/ mongos
来测试指定一个或多个扩展指令的配置文件的最终输出。使用--outputConfig
} 启动的mongod
/ mongos
将解析的 YAML 配置文档输出到stdout
并停止。如果配置文件中指定的任何扩展指令返回其他扩展指令,则mongod
/ mongos
会引发错误并终止。
警告
--outputConfig
选项使用扩展指令返回任何字段的解析值。这包括以前通过使用配置选项的外部来源掩盖的任何隐私或敏感信息。
例如,以下配置文件mongod.conf
包含__rest
扩展指令:
storage: dbPath: "/var/lib/mongo" systemLog: destination: file path: "/var/log/mongodb/mongod.log" net: port: __rest: "https://mongoconf.example.net:8080/record/1" type: string
在指定 URL 记录的字符串是 20128
如果配置文件包含__rest
扩展,则在 Linux/macOS 上,对配置文件的读取访问权限必须仅限于运行mongod
/ mongos
进程的用户。
使用mongod
--configExpand "rest"
和--outputConfig
选项启动 :
mongod -f mongod.conf --configExpand rest --outputConfig
在终止之前, 会向mongod
输出以下内容:stdout
config: mongod.conf storage: dbPath: "/var/lib/mongo" systemLog: destination: file path: "/var/log/mongodb/mongod.log" net: port: 20128 outputConfig: true