AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

自己管理型MongoDBの外部設定値

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 はエラーを返し、終了します。 オプションはコマンドラインでのみ指定できます--configExpand 。

__restREST展開ディレクティブは、 エンドポイントから構成ファイル値をロードします。__rest は、構成ファイル内の特定の値の読み込みまたは構成ファイル全体の読み込み をサポートしています。

次の構成ファイルでは、__rest 展開ディレクティブを使用して、外部の エンドポイントから設定net.tls.certificateKeyFilePassword の値を読み込みます。REST

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 プロセスを実行中ユーザーのみに制限する必要があります。

展開解析

ブロックを解析するには、__rest mongod--configExpand "rest"オプションを使用して を起動します。

mongodGETは、指定されたURLに対して リクエストを発行します。成功した場合、mongod はcertificateKeyFilePassword の値を返された値に置き換えます。 URLの解決に失敗した場合、またはREST エンドポイントが無効な値を返した場合、mongod はエラーをスローして終了します。

次の構成ファイルでは、__rest 展開ディレクティブを使用して、外部のREST エンドポイントから構成ファイルをロードします。展開ディレクティブとそのオプションは、構成ファイルで指定される値のみである必要があります。

__rest: "https://myrestserver.example.net/api/config/fullConfig"
type: "yaml"
ファイル権限

構成ファイルに__rest 展開が含まれている場合、 Linux/macOS では、構成ファイルへの読み取りアクセスは、mongod /mongos プロセスを実行中ユーザーのみに制限する必要があります。

展開解析

ブロックを解析するには、__rest mongod--configExpand "rest"オプションを使用して を起動します。

mongodGETは、指定されたURLに対して リクエストを発行します。成功した場合、mongod は返された構成yaml ファイルを解析し、スタートアップ時にそのファイルを使用します。 URLの解決または適切にフォーマットされた ファイルの返却に失敗した場合、yaml mongodはエラーをスローして終了します。

重要

指定されたREST エンドポイントによって返される値には、追加の展開ディレクティブを含めることはできません。 は返されたデータに対して追加の処理を実行せず、返されたデータに追加の展開ディレクティブが含まれている場合はエラーmongod コードで終了します。

__exec展開ディレクティブは、 シェルまたはターミナルコマンドから構成ファイル値をロードします。__exec は、構成ファイル内の特定の値の読み込みまたは構成ファイル全体の読み込み をサポートしています。

次の構成ファイルの例では、__exec 展開ディレクティブを使用して、 シェルまたはターミナルコマンドの出力から設定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 プロセスを実行中ユーザーのみに制限する必要があります。

展開解析

ブロックを解析するには、__exec mongod--configExpand "exec"オプションを使用して を起動します。

mongodは指定された操作の実行を試みます。コマンドが正常に実行されると、mongod はcertificateKeyFilePassword の値を返された値に置き換えます。コマンドが失敗した場合、または構成ファイル設定に無効な値が返された場合、mongod はエラーをスローして終了します。

次の構成ファイルの例では、 __exec展開ディレクティブを使用して、shell またはターミナルコマンドの出力から構成ファイルを読み込みます。__exec展開ディレクティブとそのオプションは、構成ファイル内で指定される値のみである必要があります。

__exec: "python /home/myUserName/getFullConfig.py"
type: "yaml"
ファイル権限

構成ファイルに__exec 展開が含まれている場合、 Linux/macOS では、構成ファイルへの書込み (write) アクセスは、mongod /mongos プロセスを実行中ユーザーのみに制限する必要があります。

展開解析

ブロックを解析するには、__exec mongod--configExpand "rest"オプションを使用して を起動します。

コマンドが正常に実行されると、mongod は返された構成 yaml ファイルを解析し、スタートアップ時に使用します。コマンドが失敗するか、無効な yaml ファイルを返すと、mongod はエラーをスローして終了します。

重要

指定された__exec string を実行して返されるデータには、追加の展開ディレクティブを含めることはできません。mongod は返されたデータに対して追加の処理を実行せず、返されたデータに追加の展開ディレクティブが含まれている場合はエラー コードで終了します。

__rest

展開ディレクティブは、 __restエンドポイントから構成ファイル値をロードします。REST __restmongodは、構成ファイル内の特定の値の読み込みまたは構成ファイル全体の読み込み をサポートしています。次に、 は、構成の一部として外部ソースの値の使用を開始します。

__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

mongodGET必須。 が外部ソースの値を取得するために リクエストを発行するURL 。

非ローカルホストREST エンドポイント(例:REST リモートサーバーでホストされている エンドポイント)の場合、__rest https://にはホストマシンとリモートサーバーの両方が TLS をサポートする暗号化された( ) URL1 1が必要です。 以降のバージョン

RESTURLで指定された エンドポイントに認証が必要な場合は、標準の RFC3986 ユーザー情報形式を使用してURLに認証情報をエンコードします。

ローカルホストREST エンドポイント(ホストREST マシンでリッスンする エンドポイントなど)の場合、__rest は暗号化されていない(http:// )URL を許可します。

重要: 指定されたREST エンドポイントによって返される値には、追加の展開ディレクティブを含めることはできません。 は返されたデータに対して追加の処理を実行せず、返されたデータに追加の展開ディレクティブが含まれている場合はエラーmongod コードで終了します。

type

string

__rest任意: が指定されたURLから返された値を解析する方法を制御します。

可能な値は次のとおりです。

  • string (デフォルト)

    __rest に、返されたデータをリテラル string として解析するよう指示します。string を指定する場合は、外部ソースの値を読み込むフィールドの下に、__rest ブロック全体とサポートオプションをネストする必要があります。

  • yaml

    返されたデータを yaml 形式のファイルとして解析するように __rest に指示します。 yaml を指定する場合、__rest ブロックは構成ファイル内の 唯一 のコンテンツである必要があります。 mongod は、構成ファイルの内容を RESTリソースから取得された yaml に置き換えます。

trim

string

任意 を指定すると、 whitespace__restは先頭または末尾の空白、具体的には 、 、" ""\r" 、"\n" 、"\t""\v" 、"\f" の発生を削除します。デフォルトはnone 、または削除なし。

string

任意.展開結果の HMAC-SHA256 出力は、HMAC-SHA256(digest_key, message) として計算されます。ここで message は検索する構成設定の値です。

指定する場合は、次のものも指定する必要があります。digest_key。

string

任意。展開結果の64 32HMAC-SHA ダイジェストを計算するために使用される バイトキーの 文字の256 1616進数文字列表現。

指定されている場合は、ダイジェスト も指定する必要があります。

例えば、certificateKeyFilePassword が "superSecret123" であると仮定します。REST リクエストまたは exec サービス呼び出しを使用してこのパスワードを検索するには、ダイジェスト キーを生成し、それを使用してパスワードのダイジェストを計算する必要があります。

ターミナルで次のコードを実行します。これにより、32 バイトのダイジェストキーが生成されます。

openssl rand -hex 32

ダイジェスト キーを生成した後、これを使用してパスワードのダイジェストを計算できます。

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

注意

  • 構成ファイルに__rest 展開が含まれている場合、 Linux/macOS では、構成ファイルへの読み取りアクセスは、mongod /mongos プロセスを実行中ユーザーのみに制限する必要があります。

  • __rest展開ディレクティブの解析を有効にするには、 オプションを使用してmongod --configExpand "rest"を起動します。

例については、「 __rest展開ディレクティブの使用 」を参照してください。

__exec

展開ディレクティブは、__exec シェルまたはターミナルコマンドの出力から構成ファイル値をロードします。__exec は、構成ファイル内の特定の値のロードまたは構成ファイル全体のロード をサポートしています。次に、mongod は、構成の一部として外部ソースの値の使用を開始します。

__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

必須 外部ソースの値を取得するために がターミナルまたはシェルで実行するmongod string 。

Linux および OSX ホストでは、実行は POSIX popen()によって処理されます。 Windows ホストでは、実行は プロセス制御 API 経由で処理されます。 __execは、 mongodまたはmongosを開始したのと同じユーザーとして読み取り専用パイプを開きます。

重要: 指定されたコマンドを実行して返されるデータには、追加の展開ディレクティブを含めることはできません。 は返されたデータに対して追加の処理を実行せず、返されたデータに追加の展開ディレクティブが含まれている場合はエラーmongod コードで終了します。

type

string

__exec任意 コマンドの実行時に返された値を が解析する方法を制御します。

可能な値は次のとおりです。

  • string (デフォルト)

    __exec に、返されたデータをリテラル string として解析するよう指示します。string を指定する場合は、外部ソースの値を読み込むフィールドの下に、__exec ブロック全体とサポートオプションをネストする必要があります。

  • yaml

    __exec返されたデータをyaml 形式のファイルとして解析するように に指示します。yaml を指定する場合、__exec ブロックは構成ファイル内の 唯一mongod のコンテンツである必要があります。 は、構成ファイルの内容を、実行されたyaml コマンドから検索された に置き換えます。

trim

string

任意 を指定すると、 whitespace__execは先頭または末尾の空白、具体的には 、 、" ""\r" 、"\n" 、"\t""\v" 、"\f" の発生を削除します。デフォルトはnone 、または削除なし。

string

任意.展開結果の HMAC-SHA256 出力は、HMAC-SHA256(digest_key, message) として計算されます。ここで message は検索する構成設定の値です。

指定されている場合は、digest_keyも指定する必要があります。

string

任意。展開結果の64 32HMAC-SHA ダイジェストを計算するために使用される バイトキーの 文字の256 1616進数文字列表現。

指定されている場合は、ダイジェスト も指定する必要があります。

例えば、certificateKeyFilePassword が "superSecret123" であると仮定します。REST リクエストまたは exec サービス呼び出しを使用してこのパスワードを検索するには、ダイジェスト キーを生成し、それを使用してパスワードのダイジェストを計算する必要があります。

ターミナルで次のコードを実行します。これにより、32 バイトのダイジェストキーが生成されます。

openssl rand -hex 32

ダイジェスト キーを生成した後、これを使用してパスワードのダイジェストを計算できます。

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

注意

  • 構成ファイルに__exec 展開が含まれている場合、 Linux/macOS では、構成ファイルへの書込み (write) アクセスは、mongod /mongos プロセスを実行中ユーザーのみに制限する必要があります。

  • __exec展開ディレクティブの解析を有効にするには、 オプションを使用してmongod --configExpand "exec"を起動します。

例については、「 __exec展開ディレクティブの使用 」を参照してください。

1 つ以上の展開ディレクティブを指定する構成ファイルの最終出力をテストするには、mongod --outputConfigmongod--outputConfigstdoutを オプションとともに起動します。 で開始された は解決されたmongod YAML 構成ドキュメントを に出力して停止します。構成ファイルで指定された展開ディレクティブのいずれかが追加の展開ディレクティブを返す場合、 はエラーをスローして終了します。

警告

--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