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 では、構成ファイルへの書込み (write) アクセスは、mongod
/mongos
プロセスを実行しているユーザーのみに制限する必要があります。
展開ディレクティブを使用するには、使用される展開ディレクティブの完全なリストを含む--configExpand
コマンドライン オプションを指定する必要があります。
mongod --config "/path/to/config/mongod.conf" --configExpand "rest,exec"
--configExpand
オプションを省略する場合、または構成ファイルで使用される展開ディレクティブの完全なリストを指定しない場合、 mongod
/ mongos
はエラーを返し、終了します。 コマンドラインで指定できるのは--configExpand
オプションのみです。
__rest
展開ディレクティブを使用する
__rest
展開ディレクティブは、 REST
エンドポイントから構成ファイル値をロードします。 __rest
は、構成ファイル内の特定の値の読み込みまたは構成ファイル全体の読み込みをサポートしています。
次の構成ファイルでは、 __rest
展開ディレクティブを使用して、外部のREST
エンドポイントから設定net.tls.certificateKeyFilePassword
値を読み込みます。
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"
- ファイル権限
- 構成ファイルに
__rest
展開が含まれている場合、Linux/macOS では、構成ファイルへの読み取りアクセスは、mongod
/mongos
プロセスを実行しているユーザーのみに制限する必要があります。 - 展開解析
ブロックを解析するには、
mongod
オプションを指定して__rest
/mongos
--configExpand "rest"
を起動します。mongod
/mongos
は、指定された URL に対してGET
リクエストを発行します。 成功した場合、mongod
/mongos
はcertificateKeyFilePassword
の値を返し値に置き換えます。 URL の解決に失敗した場合、またはREST
エンドポイントが無効な値を返した場合、mongod
/mongos
はエラーをスローして終了します。
次の構成ファイルでは、 __rest
展開ディレクティブを使用して、外部のREST
エンドポイントから構成ファイルをロードします。 展開ディレクティブとそのオプションは、構成ファイルで指定される値のみである必要があります。
__rest: "https://myrestserver.example.net/api/config/fullConfig" type: "yaml"
- ファイル権限
- 構成ファイルに
__rest
展開が含まれている場合、Linux/macOS では、構成ファイルへの読み取りアクセスは、mongod
/mongos
プロセスを実行しているユーザーのみに制限する必要があります。 - 展開解析
ブロックを解析するには、
mongod
オプションを指定して__rest
/mongos
--configExpand "rest"
を起動します。mongod
/mongos
は、指定された URL に対してGET
リクエストを発行します。 成功した場合、mongod
/mongos
は返された構成yaml
ファイルを解析し、起動時にそれを使用します。 URL の解決または適切にフォーマットされたyaml
ファイルの返却に失敗した場合、mongod
/mongos
はエラーをスローして終了します。
__exec
展開ディレクティブを使用する
__exec
展開ディレクティブは、shell またはターミナルコマンドから構成ファイル値をロードします。 __exec
は、構成ファイル内の特定の値の読み込みまたは構成ファイル全体の読み込みをサポートしています。
次の構成ファイルの例では、 __exec
展開ディレクティブを使用して、shell またはターミナルコマンドの出力から設定net.tls.certificateKeyFilePassword
値をロードします。
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"
- ファイル権限
- 構成ファイルに
__exec
展開が含まれている場合、Linux/macOS では、構成ファイルへの書込み (write) アクセスは、mongod
/mongos
プロセスを実行しているユーザーのみに制限する必要があります。 - 展開解析
ブロックを解析するには、
mongod
オプションを指定して__exec
/mongos
--configExpand "exec"
を起動します。mongod
/mongos
は指定された操作の実行を試みます。 コマンドが正常に実行されると、mongod
/mongos
はcertificateKeyFilePassword
の値を返し値に置き換えます。 コマンドが失敗した場合、または構成ファイル設定の無効な値を返した場合、mongod
/mongos
はエラーをスローして終了します。
次の構成ファイルの例では、 __exec
展開ディレクティブを使用して、shell またはターミナルコマンドの出力から構成ファイルを読み込みます。 __exec
展開ディレクティブとそのオプションは、構成ファイルで指定される値のみである必要があります。
__exec: "python /home/myUserName/getFullConfig.py" type: "yaml"
- ファイル権限
- 構成ファイルに
__exec
展開が含まれている場合、Linux/macOS では、構成ファイルへの書込み (write) アクセスは、mongod
/mongos
プロセスを実行しているユーザーのみに制限する必要があります。 - 展開解析
ブロックを解析するには、
mongod
オプションを指定して__exec
/mongos
--configExpand "rest"
を起動します。コマンドが正常に実行されると、
mongod
/mongos
は返された構成yaml
ファイルを解析し、起動時にそれを使用します。 コマンドが失敗した場合、または無効なyaml
ファイルが返された場合、mongod
/mongos
はエラーをスローして終了します。
展開ディレクティブに関する参考資料
__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
は、次のフィールドがあります。フィールドタイプ説明string
必須。
mongod
/mongos
が外部ソースの値を取得するためのGET
リクエストを発行する URL 。非ローカルホスト
REST
エンドポイント(たとえば、REST
リモートサーバーでホストされている エンドポイント)の場合、__rest
https://
にはホストマシンとリモートサーバーの両方が TLS 以降をサポートしている暗号化された( )URL1.1 が必要です。If the
REST
endpoint specified in the URL requires authentication, encode credentials into the URL with the standard RFC 3986 User Information format.ローカルホスト
REST
エンドポイント(ホストREST
マシンでリッスンする エンドポイントなど)の場合、__rest
は暗号化されていない(http://
)URL を許可します。重要: 指定された
REST
エンドポイントによって返される値には、追加の展開ディレクティブを含めることはできません。mongod
/ は返されたデータに対して追加の処理を実行せず、返されたデータに追加の展開ディレクティブが含まれている場合はエラーmongos
コードで終了します。type
string
__rest
任意: が指定されたURLから返された値を解析する方法を制御します。可能な値は次のとおりです。
trim
string
任意 を指定すると、
whitespace
__rest
は先頭または末尾の空白、具体的には 、 、" "
"\r"
、"\n"
、"\t"
"\v"
、"\f"
の発生を削除します。デフォルトはnone
、または削除なし。string
任意。 展開結果の SHA- 256ダイジェスト。
指定する場合は、 Digest_key も指定する必要があります。
string
注意
例については、「
__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
string
必須 string
mongod
mongos
外部ソースの値を取得するためにターミナルまたは shell 実行shell する 。Linux および OSX ホストでは、実行は POSIX
popen()
によって処理されます。 Windows ホストでは、実行は プロセス制御 API 経由で処理されます。__exec
は、mongod
またはmongos
を開始したのと同じユーザーとして読み取り専用パイプを開きます。重要: 指定されたコマンドを実行して返されるデータには、追加の展開ディレクティブを含めることはできません。
mongod
/ は返されたデータに対して追加の処理を実行せず、返されたデータに追加の展開ディレクティブが含まれている場合はエラーmongos
コードで終了します。type
string
__exec
任意 コマンドの実行時に返された値を が解析する方法を制御します。可能な値は次のとおりです。
trim
string
任意 を指定すると、
whitespace
__exec
は先頭または末尾の空白、具体的には 、 、" "
"\r"
、"\n"
、"\t"
"\v"
、"\f"
の発生を削除します。デフォルトはnone
、または削除なし。string
任意。 展開結果の SHA- 256ダイジェスト。
指定する場合は、 Digest_key も指定する必要があります
string
任意 。SHA-256 ダイジェストを計算するために使用されるシークレットの16進数文字列表現。
注意
例については、「
__exec
展開ディレクティブの使用 」を参照してください。
解決された展開ディレクティブ値を含む構成ファイルを出力する
1 つ以上の展開ディレクティブを指定する構成ファイルの最終出力をテストするには、 mongod
/ mongos
を--outputConfig
オプションとともに起動します。 mongod
で開始されたmongos
/--outputConfig
は、解決された 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 で記録された string は、 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