Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Valores de configuração externa para MongoDB autogerenciado

O MongoDB oferece suporte ao uso de diretivas de expansão em arquivos de configuração para carregar valores de origem externa. As diretivas de expansão podem carregar valores para opções específicas do arquivo de configuração ou carregar o arquivo de configuração inteiro. As diretivas de expansão ajudam a ocultar informações confidenciais, como certificados de segurança e senhas.

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
  • Se o arquivo de configuração incluir a __rest expansão, no Linux/macOS, o acesso de leitura ao arquivo de configuração deverá ser limitado apenas ao usuário que mongos mongod estiver executando o processo / apenas.

  • Se o arquivo de configuração incluir a __exec expansão, no Linux/macOS, o acesso de gravação ao arquivo de configuração deverá ser limitado apenas ao usuário que mongos mongod estiver executando o processo / apenas.

Para usar diretivas de expansão, você deve especificar a opção de linha de comando --configExpand com a lista completa de diretivas de expansão usadas:

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

Se você omitir a --configExpand opção ou se não especificar a lista completa de diretivas de expansão usadas no arquivo de configuração, retornará um erro e mongod --configExpand encerrará. Você só pode especificar a opção na linha de comando.

A __rest diretiva de expansão carrega valores de arquivo de configuração de um REST endpoint. __rest suporta o carregamento de valores específicos no arquivo de configuração ou o carregamento de todo o arquivo de configuração.

O seguinte arquivo de configuração usa a __rest diretiva de expansão para carregar o net.tls.certificateKeyFilePassword valor de configuração de um REST endpoint 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"
Permissão de arquivo

Se o arquivo de configuração incluir a __rest expansão, no Linux/macOS, o acesso de leitura ao arquivo de configuração deverá ser limitado apenas ao usuário que mongos mongod estiver executando o processo / apenas.

Análise de expansão

Para analisar os __rest blocos, inicie o mongod com a --configExpand "rest" opção.

O emite uma mongod GET solicitação em relação à URL especificada. Se for bem-sucedido,mongod substitui o valor de certificateKeyFilePassword pelo valor retornado. Se a URL não conseguir resolver ou se o ponto de REST extremidade retornar um valor inválido, lançará um erro e mongod encerrará.

O seguinte arquivo de configuração utiliza a __rest diretiva de expansão para carregar o arquivo de configuração de um REST endpoint externo. A diretiva de expansão e suas opções devem ser os únicos valores especificados no arquivo de configuração.

__rest: "https://myrestserver.example.net/api/config/fullConfig"
type: "yaml"
Permissão de arquivo

Se o arquivo de configuração incluir a __rest expansão, no Linux/macOS, o acesso de leitura ao arquivo de configuração deverá ser limitado apenas ao usuário que mongos mongod estiver executando o processo / apenas.

Análise de expansão

Para analisar os __rest blocos, inicie o mongod com a --configExpand "rest" opção.

O emite uma mongod GET solicitação em relação à URL especificada. Se for bem-sucedido, analisa o arquivo de configuração mongod retornado yaml e o usa durante a inicialização. Se o URL não conseguir resolver ou retornar um yaml arquivo formatado corretamente, o lançará um erro e mongod encerrará.

Importante

O valor retornado pelo REST endpoint especificado não pode incluir nenhuma diretiva de expansão adicional. O mongod não executa processamento adicional nos dados retornados e será encerrado com um código de erro se os dados retornados incluírem diretivas de expansão adicionais.

A __exec diretiva de expansão carrega valores de arquivo de configuração de um comando de shell ou terminal. __exec suporta o carregamento de valores específicos no arquivo de configuração ou o carregamento de todo o arquivo de configuração.

O exemplo de arquivo de configuração a seguir usa a __exec diretiva de expansão para carregar o valor de configuração net.tls.certificateKeyFilePassword a partir da saída de um comando de shell ou 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"
Permissão de arquivo

Se o arquivo de configuração incluir a __exec expansão, no Linux/macOS, o acesso de gravação ao arquivo de configuração deverá ser limitado apenas ao usuário que mongos mongod estiver executando o processo / apenas.

Análise de expansão

Para analisar os __exec blocos, inicie o mongod com a --configExpand "exec" opção.

Omongodtenta executar a operação especificada. Se o comando for executado com sucesso, omongodsubstitui o valor de certificateKeyFilePassword pelo valor retornado. Se o comando falhar ou retornar um valor inválido para a configuração do arquivo de configuração, omongodlançará um erro e encerrará.

O arquivo de configuração de exemplo a seguir usa a diretiva de expansão __exec para carregar o arquivo de configuração a partir da saída de um comando shell ou terminal. A diretiva de expansão __exec e suas opções devem ser os únicos valores especificados no arquivo de configuração.

__exec: "python /home/myUserName/getFullConfig.py"
type: "yaml"
Permissão de arquivo

Se o arquivo de configuração incluir a __exec expansão, no Linux/macOS, o acesso de gravação ao arquivo de configuração deverá ser limitado apenas ao usuário que mongos mongod estiver executando o processo / apenas.

Análise de expansão

Para analisar os __exec blocos, inicie o mongod com a --configExpand "rest" opção.

Se o comando for executado com sucesso, o mongod analisará o arquivo de configuração yaml retornado e o usará durante a inicialização. Se o comando falhar ou retornar um arquivo yaml inválido, o mongod gerará um erro e será encerrado.

Importante

Os dados retornados executando a __exec string especificada não podem incluir nenhuma diretiva de expansão adicional. O mongod não executa processamento adicional nos dados retornados e será encerrado com um código de erro se os dados retornados incluírem diretivas de expansão adicionais.

__rest

A __rest diretiva de expansão carrega valores de arquivo de configuração de um REST endpoint. __rest suporta carregar valores específicos no arquivo de configuração ou carregar todo o arquivo de configuração. O então começa a usar os valores de origem externa como parte de sua mongod configuração.

A __rest diretiva de expansão tem a seguinte sintaxe:

  • Passo a passo de como especificar um endpoint REST para uma configuração específica ou para configurações específicas no arquivo de configuração:

    <some configuration file setting>:
    __rest: "<string>"
    type: "string"
    trim: "none|whitespace"
    digest: "<string>"
    digest_key: "<string>"
  • Para especificar um ponto de extremidade REST para todo o arquivo de configuração:

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

    Se especificar todo o arquivo de configuração por meio do endpoint REST, a diretiva de expansão e suas opções devem ser os únicos valores especificados no arquivo de configuração.

__rest usa os seguintes campos:

Campo
Tipo
Descrição

string

Obrigatório A URL para a qual o emite mongod uma GET solicitação de para recuperar o valor de origem externa.

Para endpoints não locaishost REST (por exemplo, um REST endpoint hospedado em um servidor remoto), __rest exigehttps:// URLs criptografadas () em que tanto a máquina host quanto o servidor remoto suportam 1 TLS.1 ou posterior.

Se o REST endpoint especificado no URL exigir autenticação, codifique as credenciais no URL com o formato padrão 3986 de informações do usuário RFC.

Para REST endpoints localhost (por exemplo, um REST endpoint escutando na máquina host), __rest permitehttp:// URLs não criptografadas ().

IMPORTANTE: o valor retornado pelo REST endpoint especificado não pode incluir nenhuma diretiva de expansão adicional. O mongod não executa processamento adicional nos dados retornados e será encerrado com um código de erro se os dados retornados incluírem diretivas de expansão adicionais.

type

string

Opcional Controla como analisa o valor retornado da URL __rest especificada.

Os valores possíveis são:

  • string (Padrão)

    Direciona __rest para analisar os dados retornados como uma string literal. Se especificar string, todo o bloco __rest e as opções de suporte devem ser aninhadas sob o campo para o qual você está carregando valores de origem externa.

  • yaml

    Direciona__restpara analisar os dados retornados como um arquivo formatado yaml. Se especificar yaml, o bloco__restdeverá ser o único conteúdo no arquivo de configuração. Omongodsubstitui o conteúdo do arquivo de configuração pelo yaml recuperado do recurso REST.

trim

string

Opcional Especifique whitespace para direcionar para cortar qualquer espaço em branco à esquerda ou à direita, especificamente __rest ocorrências " " "\r""\n""\t"de,,,, "\v" e."\f" noneO padrão é ou nenhum corte.

string

opcional. A saída HMAC-SHA256 do resultado da expansão, calculada como HMAC-SHA256(digest_key, message), onde message é o valor da configuração a ser recuperada.

Se especificado, você também deve especificar o digest_key.

string

Opcional. A 64representação de cadeia hexadecimal de 32caracteres da256 chave de bytes usada para calcular o resumo HMAC-SHA do resultado da expansão.

Se especificado, você também deve especificar o resumo.

Por exemplo, suponha que o certificateKeyFilePassword seja "superSecret123". Para recuperar essa senha usando uma solicitação REST ou chamada de serviço exec, você deve gerar uma chave de resumo e usá-la para calcular o resumo de sua senha.

Execute o seguinte código em seu terminal para gerar uma chave de resumo de 32bytes:

openssl rand -hex 32

Depois de gerar uma chave de resumo, você pode usá-la para calcular o resumo de sua senha:

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

Observação

  • Se o arquivo de configuração incluir a __rest expansão, no Linux/macOS, o acesso de leitura ao arquivo de configuração deverá ser limitado apenas ao usuário que mongos mongod estiver executando o processo / apenas.

  • Para habilitar a análise da __rest diretiva de expansão, inicie o mongod com a --configExpand "rest" opção.

Para obter exemplos, consulte Usar a __rest diretiva de expansão.

__exec

A __exec diretiva de expansão carrega valores de arquivo de configuração da saída de um comando de shell ou terminal. __exec suporta o carregamento de valores específicos no arquivo de configuração ou o carregamento de todo o arquivo de configuração. O então começa a usar os valores de origem externa como parte de sua mongod configuração.

A __exec diretiva de expansão tem a seguinte sintaxe:

  • Para especificar um comando de terminal ou shell para uma configuração ou configurações específicas do arquivo de configuração:

    <some configuration file setting>:
    __exec: "<string>"
    type: "string"
    trim: "none|whitespace"
  • Para especificar um comando shell ou terminal para todo o arquivo de configuração:

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

    Se especificar todo o arquivo de configuração por meio de um comando de terminal ou shell, a diretiva de expansão e suas opções devem ser os únicos valores especificados no arquivo de configuração.

__exec usa os seguintes campos:

Campo
Tipo
Descrição

__exec

string

Obrigatório A string que o executa no terminal ou shell para recuperar o valor de origem mongod externa.

Em hosts Linux e OSX, a execução é tratada via POSIX popen(). Em hosts Windows, a execução é feita por meio da API de controle de processo. __exec abre um pipeline somente leitura como o mesmo usuário que iniciou o mongod ou mongos.

IMPORTANTE: os dados retornados pela execução do comando especificado não podem incluir nenhuma diretiva de expansão adicional. O mongod não executa processamento adicional nos dados retornados e será encerrado com um código de erro se os dados retornados incluírem diretivas de expansão adicionais.

type

string

Opcional Controla como analisa o valor retornado pelo comando __exec executado.

Os valores possíveis são:

  • string (Padrão)

    Direciona __exec para analisar os dados retornados como uma string literal. Se especificar string, todo o bloco __exec e as opções de suporte devem ser aninhadas sob o campo para o qual você está carregando valores de origem externa.

  • yaml

    Direciona__execpara analisar os dados retornados como um arquivo formatado yaml. Se especificar yaml, o bloco__execdeverá ser o único conteúdo no arquivo de configuração. Omongodsubstitui o conteúdo do arquivo de configuração pelo yaml recuperado do comando executado.

trim

string

Opcional Especifique whitespace para direcionar para cortar qualquer espaço em branco à esquerda ou à direita, especificamente __exec ocorrências " " "\r""\n""\t"de,,,, "\v" e."\f" noneO padrão é ou nenhum corte.

string

opcional. A saída HMAC-SHA256 do resultado da expansão, calculada como HMAC-SHA256(digest_key, message), onde message é o valor da configuração a ser recuperada.

Se especificado, você também deve especificar o digest_key.

string

Opcional. A 64representação de cadeia hexadecimal de 32caracteres da256 chave de bytes usada para calcular o resumo HMAC-SHA do resultado da expansão.

Se especificado, você também deve especificar o digest

Por exemplo, suponha que o certificateKeyFilePassword seja "superSecret123". Para recuperar essa senha usando uma solicitação REST ou chamada de serviço exec, você deve gerar uma chave de resumo e usá-la para calcular o resumo de sua senha.

Execute o seguinte código em seu terminal para gerar uma chave de resumo de 32bytes:

openssl rand -hex 32

Depois de gerar uma chave de resumo, você pode usá-la para calcular o resumo de sua senha:

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

Observação

  • Se o arquivo de configuração incluir a __exec expansão, no Linux/macOS, o acesso de gravação ao arquivo de configuração deverá ser limitado apenas ao usuário que mongos mongod estiver executando o processo / apenas.

  • Para habilitar a análise das __exec diretivas de expansão do, inicie o mongod com a --configExpand "exec" opção.

Para obter exemplos, consulte Usar a __exec diretiva de expansão.

Você pode testar a saída final de um arquivo de configuração que especifica uma ou mais diretivas de expansão iniciando o mongod com a --outputConfig opção. Um mongod iniciado com envia o documento de configuração YAML resolvido --outputConfig para stdout e interrompe. Se qualquer diretiva de expansão especificada no arquivo de configuração retornar diretivas de expansão adicionais, o lançará um erro e mongod encerrará.

Aviso

A opção --outputConfig retorna os valores resolvidos para qualquer campo usando uma diretiva de expansão. Isso inclui qualquer informação privada ou confidencial anteriormente ocultada pelo uso de uma fonte externa para a opção de configuração.

Por exemplo, o seguinte arquivo mongod.conf de configuração contém uma __rest diretiva de expansão:

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

A string registrada na URL especificada é 20128

Se o arquivo de configuração incluir a __rest expansão, no Linux/macOS, o acesso de leitura ao arquivo de configuração deverá ser limitado apenas ao usuário que mongos mongod estiver executando o processo / apenas.

Inicie o mongod com as opções --configExpand "rest" e --outputConfig:

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

O mongod gera o seguinte para stdout antes de terminar:

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