Menu Docs

Valores do arquivo de configuração de origem externa para implantações autogerenciadas

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

  • Se o arquivo de configuração incluir a expansão __exec, no Linux ou macOS, o acesso de gravação ao arquivo de configuração deverá ser limitado ao usuário que estiver executando o processo mongod ou mongos 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 opção --configExpand ou não especificar a lista completa de diretivas de expansão usadas no arquivo de configuração, o mongod/mongos retornará um erro e será encerrado. Você só pode especificar a opção --configExpand na linha de comando.

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

O arquivo de configuração a seguir usa a diretiva de expansão __rest para carregar o valor de configuração net.tls.certificateKeyFilePassword de um endpoint 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"
Permissão de arquivo
Se o arquivo de configuração incluir a expansão __rest, no Linux ou macOS, o acesso de leitura ao arquivo de configuração deverá ser limitado ao usuário que estiver executando o processo mongod ou mongos apenas.
Análise de expansão

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

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

O seguinte arquivo de configuração utiliza a diretiva de expansão __rest para carregar o arquivo de configuração de um endpoint REST 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 expansão __rest, no Linux ou macOS, o acesso de leitura ao arquivo de configuração deverá ser limitado ao usuário que estiver executando o processo mongod ou mongos apenas.
Análise de expansão

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

O mongod/ emitemongos uma GET solicitação para o URL especificado. Se for bem-sucedido, o mongod/ analisará o arquivo de configuraçãomongos retornado yaml e o usará durante a inicialização. Se o URL não conseguir resolver ou retornar um yaml arquivo formatado corretamente, o mongod/ gera um erro e émongos encerrado.

Importante

O valor retornado pelo ponto de extremidade REST especificado não pode incluir nenhuma diretiva de expansão adicional. O mongod/mongos não realiza 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 diretiva de expansão __exec carrega os valores do arquivo de configuração a partir de um comando 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 diretiva de expansão __exec 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 expansão __exec, no Linux ou macOS, o acesso de gravação ao arquivo de configuração deverá ser limitado ao usuário que estiver executando o processo mongod ou mongos apenas.
Análise de expansão

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

O mongod/ tenta executar a operaçãomongos especificada. Se o comando for executado com êxito, o mongod/mongos substituirá 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, o mongod/mongos gera um erro e é encerrado.

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 de 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 expansão __exec, no Linux ou macOS, o acesso de gravação ao arquivo de configuração deverá ser limitado ao usuário que estiver executando o processo mongod ou mongos apenas.
Análise de expansão

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

Se o comando for executado com êxito, o mongod/mongos analisa o arquivo de configuração yaml retornado e o usa durante a inicialização. Se o comando falhar ou retornar um arquivo yaml inválido, o mongod/mongos lançará um erro e encerrará.

Importante

Os dados retornados pela execução da string __exec especificada não podem incluir nenhuma diretiva de expansão adicional. O mongod/mongos não realiza 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 diretiva de expansão __rest carrega valores do arquivo de configuração de um ponto de extremidade REST. __rest suporta o carregamento de valores específicos no arquivo de configuração ou o carregamento de todo o arquivo de configuração. O mongod/mongos então começa a usar os valores de origem externa como parte da sua configuração.

A diretiva de expansão __rest 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 na qual o mongod/mongos emite uma solicitação GET para recuperar o valor de origem externa.

Para endpoints não locaishost REST (por exemplo, um REST endpoint hospedado em um servidor remoto), __rest requer URLs criptografadas ()https:// em que a máquina host e o servidor remoto suportem TLS 1.1 ou posterior.

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

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/mongos 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 para analisar os dados retornados como uma string __rest literal. Se string especificar, todo o __rest bloco e as opções de suporte deverão estar aninhados sob o campo para o qual você está carregando valores de origem externa.

  • yaml

    Direciona para analisar os dados retornados como __rest um yaml arquivo formatado em. Se yaml especificar, o bloco deverá ser o único conteúdo no arquivo de __rest configuração. O mongod/ substitui o conteúdomongos do yaml arquivo de configuração pelo 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" "\f"e. O padrão é none ou nenhum corte.

string

Opcional. O resumo SHA-256 do resultado da expansão.

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

string

Opcional. A representação de string hexadecimal do256 segredo utilizado para calcular o resumo SHA-.

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

Observação

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

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

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

__exec

A diretiva de expansão __exec carrega valores do arquivo de configuração a partir da saída de um comando 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 mongod/mongos então começa a usar os valores de origem externa como parte da sua configuração.

A diretiva de expansão __exec 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 mongod/mongos executa no terminal ou shell para recuperar o valor de origem 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/mongos 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 para analisar os dados retornados como uma string __exec literal. Se string especificar, todo o __exec bloco e as opções de suporte deverão estar aninhados sob o campo para o qual você está carregando valores de origem externa.

  • yaml

    Direciona para analisar os dados retornados como __exec um yaml arquivo formatado em. Se yaml especificar, o bloco deverá ser o único conteúdo no arquivo de __exec configuração. O mongod/ substitui o conteúdo do arquivo de configuraçãomongos 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" "\f"e. O padrão é none ou nenhum corte.

string

Opcional. O resumo SHA-256 do resultado da expansão.

Se especificado, você também deve especificar a digest_key

string

Opcional. A representação de string hexadecimal do256 segredo utilizado para calcular o resumo SHA-.

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

Observação

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

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

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

É possível testar a saída final de um arquivo de configuração que especifica uma ou mais diretivas de expansão iniciando o mongod/mongos com a opção --outputConfig. Quando iniciado com --outputConfig, um mongod/mongos gera o documento de configuração YAML resolvido para stdout e interrompe. Se alguma diretiva de expansão especificada no arquivo de configuração retornar diretivas de expansão adicionais, o mongod/mongos gerará um erro e será encerrado.

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 de configuração mongod.conf contém uma diretiva de expansão __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

A string registrada na URL especificada é 20128

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