Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Valores de configuración externa para MongoDB autogestionado

MongoDB admite utilizar directivas de expansión en archivos de configuración para cargar valores obtenidos externamente. Las directivas de expansión pueden cargar valores para opciones específicas del archivo de configuración o cargar el archivo de configuración completo. Las directivas de expansión ayudan a ocultar información confidencial, como certificados de seguridad y contraseñas.

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

Para usar las directivas de expansión, debes especificar la opción de línea de comandos --configExpand con la lista completa de directivas de expansión utilizadas:

mongod --config "/path/to/config/mongod.conf" --configExpand "rest,exec"

Si omite la opción --configExpand o si no especifica la lista completa de directivas de expansión utilizadas en el archivo de configuración, el mongod devuelve un error y termina. Solo puede especificar la opción --configExpand en la línea de comandos.

La directiva de expansión __rest carga los valores del archivo de configuración desde un punto final REST. __rest admite la carga de valores específicos en el archivo de configuración o la carga del archivo de configuración completo.

El siguiente archivo de configuración utiliza la directiva de expansión __rest para cargar el valor de configuración net.tls.certificateKeyFilePassword desde un punto final REST externo:

storage:
dbPath: "/var/lib/mongo"
systemLog:
destination: file
path: "/var/log/mongodb/mongod.log"
net:
bindIp: 192.51.100.24,127.0.0.1
tls:
mode: requireTLS
certificateKeyFile: "/etc/tls/mongod.pem"
certificateKeyFilePassword:
__rest: "https://myrestserver.example.net/api/config/myCertKeyFilePassword"
type: "string"
Permiso de archivo

Si el archivo de configuración incluye la expansión __rest, en Linux/macOS, el acceso de lectura al archivo de configuración debe limitarse únicamente al usuario que ejecuta el proceso mongod / mongos.

Análisis de expansión

Para analizar los bloques __rest, inicie el mongod con la opción --configExpand "rest".

El mongod emite una solicitud GET a la URL especificada. Si es exitoso, el mongod reemplaza el valor de certificateKeyFilePassword con el valor devuelto. Si la URL no se resuelve o si el punto de conexión REST devuelve un valor no válido, el mongod genera un error y finaliza.

Importante

El valor devuelto por el punto final REST especificado no puede incluir ninguna directiva de expansión adicional. El mongod no realiza procesamiento adicional en los datos devueltos y finalizará con un código de error si los datos devueltos incluyen directivas de expansión adicionales.

La directiva de expansión __exec carga los valores del archivo de configuración desde un comando de shell o terminal. __exec permite cargar valores específicos en el archivo de configuración o cargar el archivo de configuración completo.

El siguiente archivo de configuración de ejemplo utiliza la directiva de expansión __exec para cargar el valor de configuración net.tls.certificateKeyFilePassword desde la salida de un comando de shell o terminal:

storage:
dbPath: "/var/lib/mongo"
systemLog:
destination: file
path: "/var/log/mongodb/mongod.log"
net:
bindIp: 192.51.100.24,127.0.0.1
tls:
mode: requireTLS
certificateKeyFile: "/etc/tls/mongod.pem"
certificateKeyFilePassword:
__exec: "python /home/myUserName/getPEMPassword.py"
type: "string"
Permiso de archivo

Si el archivo de configuración incluye la expansión __exec, en Linux/macOS, el acceso de escritura al archivo de configuración debe limitarse únicamente al usuario que ejecuta el proceso mongod / mongos.

Análisis de expansión

Para analizar los bloques __exec, inicie el mongod con la opción --configExpand "exec".

El mongod intenta ejecutar la operación especificada. Si el comando se ejecuta correctamente, el mongod reemplaza el valor de certificateKeyFilePassword con el valor devuelto. Si el comando falla o devuelve un valor no válido para la configuración del archivo de configuración, el mongod genera un error y finaliza.

Importante

Los datos devueltos al ejecutar la string __exec especificada no pueden incluir ninguna directiva de expansión adicional. El mongod no realiza procesamiento adicional en los datos devueltos y finalizará con un código de error si los datos devueltos incluyen directivas de expansión adicionales.

__rest

La directiva de expansión __rest carga los valores del archivo de configuración desde un punto final REST. __rest admite la carga de valores específicos en el archivo de configuración o la carga del archivo de configuración completo. A continuación, mongod comienza a utilizar los valores de origen externo como parte de su configuración.

La directiva de expansión __rest tiene la siguiente sintaxis:

  • Para especificar un endpoint de REST para un ajuste o ajustes de archivo de configuración:

    <some configuration file setting>:
    __rest: "<string>"
    type: "string"
    trim: "none|whitespace"
    digest: "<string>"
    digest_key: "<string>"
  • Para especificar un endpoint REST para todo el archivo de configuración:

    __rest: "<string>"
    type: "yaml"
    trim: "none|whitespace"

    Si especificas el archivo de configuración completo vía el endpoint REST, la directiva de expansión y sus opciones deben ser los únicos valores especificados en el archivo de configuración.

__rest requiere los siguientes campos:

Campo
Tipo
Descripción

string

Obligatorio La URL contra la que el mongod emite una solicitud GET para recuperar el valor de origen externo.

Para los puntos finales REST que no son localhost (por ejemplo, un punto final REST alojado en un servidor remoto), __rest requiere URL cifradas (https://) donde tanto la máquina host como el servidor remoto admiten TLS 1.1 o posterior.

Si el punto final REST especificado en la URL requiere autenticación, codifique las credenciales en la URL con el formato estándar de información de usuario RFC 3986.

Para los puntos finales REST de localhost (por ejemplo, un punto final REST que escucha en la máquina host), __rest permite URL no cifradas (http://).

IMPORTANTE: El valor devuelto por el punto final REST especificado no puede incluir directivas de expansión adicionales. El mongod no realiza procesamiento adicional en los datos devueltos y finalizará con un código de error si los datos devueltos incluyen directivas de expansión adicionales.

type

string

Opcional Controla cómo __rest analiza el valor devuelto desde la URL especificada.

Los valores posibles son:

trim

string

string

opcional. La salida HMAC-SHA256 del resultado de la expansión, calculada como HMAC-SHA256(digest_key, message), donde message es el valor de la configuración que se va a recuperar.

Si se especifica, también debe especificar la clave digest.

string

Opcional. La representación en cadena hexadecimal de caracteres 64 de la clave de bytes 32 utilizada para calcular el resumen HMAC-SHA256 del resultado de la expansión.

Si se especifica, también debe especificar el resumen.

Por ejemplo, supongamos que el certificateKeyFilePassword es "superSecret123". Para recuperar esta contraseña mediante una solicitud REST o una llamada al servicio exec, debe generar una clave de resumen y usarla para calcular el resumen de su contraseña.

Ejecute el siguiente código en su terminal para generar una clave de resumen de 32bytes:

openssl rand -hex 32

Después de generar una clave de resumen, puede usarla para calcular el resumen de su contraseña:

echo -ne "superSecret123" | openssl dgst -sha256 -mac hmac -macopt hexkey:f38d0d5adfcf1a0575f9fa9051c70a2f88b1bb7562513c9efd7686e9c21ad304

Nota

Para ver ejemplos, consulte el uso de la directiva de expansión __rest.

__exec

La directiva de expansión __exec carga los valores del archivo de configuración desde la salida de un comando de shell o terminal. __exec permite cargar valores específicos del archivo de configuración o cargar el archivo de configuración completo. A continuación, mongod comienza a utilizar los valores externos como parte de su configuración.

La directiva de expansión __exec tiene la siguiente sintaxis:

  • Para especificar un comando shell o de terminal para una configuración específica o configuraciones en un archivo de configuración:

    <some configuration file setting>:
    __exec: "<string>"
    type: "string"
    trim: "none|whitespace"
  • Para especificar un shell o comando de terminal para todo el archivo de configuración:

    __exec: "<string>"
    type: "yaml"
    trim: "none|whitespace"

    Si se especifica todo el archivo de configuración a través de un comando de terminal o shell, la directiva de expansión y sus opciones deben ser los únicos valores especificados en el archivo de configuración.

__exec requiere los siguientes campos:

Campo
Tipo
Descripción

__exec

string

Obligatorio El string que el mongod ejecuta en la terminal o shell para recuperar el valor de origen externo.

En los hosts Linux y OSX, la ejecución se gestiona mediante POSIX popen(). En los hosts de Windows, la ejecución se gestiona a través de la API de control de procesos. __exec abre una pipe de solo lectura como el mismo usuario que inició mongod o mongos.

IMPORTANTE: Los datos devueltos al ejecutar el comando especificado no pueden incluir ninguna directiva de expansión adicional. El mongod no realiza procesamiento adicional en los datos devueltos y finalizará con un código de error si los datos devueltos incluyen directivas de expansión adicionales.

type

string

Opcional Controla cómo __exec analiza el valor devuelto por el comando ejecutado.

Los valores posibles son:

trim

string

string

opcional. La salida HMAC-SHA256 del resultado de la expansión, calculada como HMAC-SHA256(digest_key, message), donde message es el valor de la configuración que se va a recuperar.

Si se especifica, también debe especificar la clave digest_key.

string

Opcional. La representación en cadena hexadecimal de caracteres 64 de la clave de bytes 32 utilizada para calcular el resumen HMAC-SHA256 del resultado de la expansión.

Si se especifica, también debe especificar el resumen

Por ejemplo, supongamos que el certificateKeyFilePassword es "superSecret123". Para recuperar esta contraseña mediante una solicitud REST o una llamada al servicio exec, debe generar una clave de resumen y usarla para calcular el resumen de su contraseña.

Ejecute el siguiente código en su terminal para generar una clave de resumen de 32bytes:

openssl rand -hex 32

Después de generar una clave de resumen, puede usarla para calcular el resumen de su contraseña:

echo -ne "superSecret123" | openssl dgst -sha256 -mac hmac -macopt hexkey:f38d0d5adfcf1a0575f9fa9051c70a2f88b1bb7562513c9efd7686e9c21ad304

Nota

Para ver ejemplos, consulte el uso de la directiva de expansión __exec.

Puede probar la salida final de un archivo de configuración que especifica una o más directivas de expansión iniciando el mongod con la opción --outputConfig. Un mongod iniciado con --outputConfig genera el documento de configuración YAML resuelto en stdout y se detiene. Si alguna directiva de expansión especificada en el archivo de configuración devuelve directivas de expansión adicionales, el mongod genera un error y finaliza.

Advertencia

La opción --outputConfig devuelve los valores resueltos para cualquier campo usando una directiva de expansión. Esto incluye cualquier información privada o sensible previamente ocultada mediante una fuente externa para la opción de configuración.

Por ejemplo, el siguiente archivo de configuración mongod.conf contiene una directiva de expansión __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

La string grabada en la URL especificada es 20128

Si el archivo de configuración incluye la expansión __rest, en Linux/macOS, el acceso de lectura al archivo de configuración debe limitarse únicamente al usuario que ejecuta el proceso mongod / mongos.

Inicia el mongod con las opciones --configExpand "rest" y --outputConfig:

mongod -f mongod.conf --configExpand rest --outputConfig

El mongod emite lo siguiente a stdout antes de finalizar:

config: mongod.conf
storage:
dbPath: "/var/lib/mongo"
systemLog:
destination: file
path: "/var/log/mongodb/mongod.log"
net:
port: 20128
outputConfig: true