자체 관리형 배포를 위한 외부 소스 구성 파일 값
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에서 구성 파일에 대한 쓰기 액세스는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
프로세스를 실행하는 사용자로만 제한되어야 합니다. - 확장 구문 분석
__rest
블록을 구문 분석하려면--configExpand "rest"
옵션을 사용하여mongod
/mongos
를 시작하세요.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
프로세스를 실행하는 사용자로만 제한되어야 합니다. - 확장 구문 분석
__rest
블록을 구문 분석하려면--configExpand "rest"
옵션을 사용하여mongod
/mongos
를 시작하세요.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에서 구성 파일에 대한 쓰기 액세스는mongod
/mongos
프로세스를 실행하는 사용자로만 제한되어야 합니다. - 확장 구문 분석
__exec
블록을 구문 분석하려면--configExpand "exec"
옵션을 사용하여mongod
/mongos
를 시작하세요.mongod
/mongos
는 지정된 연산을 실행하려고 시도합니다. 명령이 성공적으로 실행되면mongod
/mongos
는certificateKeyFilePassword
값을 반환된 값으로 바꿉니다. 명령이 실패하거나 구성 파일 설정에 대해 유효하지 않은 값을 반환하는 경우mongod
/mongos
는 오류를 발생시키고 종료됩니다.
다음 예시 구성 파일 에서는 __exec
확장 지시문을 사용하여 shell 또는 터미널 명령의 출력에서 구성 파일 을 로드합니다. __exec
확장 지시문과 해당 옵션은 구성 파일 에 지정된 유일한 값 이어야 합니다.
__exec: "python /home/myUserName/getFullConfig.py" type: "yaml"
- 파일 권한
- 구성 파일에
__exec
확장이 포함된 경우 Linux/macOS에서 구성 파일에 대한 쓰기 액세스는mongod
/mongos
프로세스를 실행하는 사용자로만 제한되어야 합니다. - 확장 구문 분석
__exec
블록을 구문 분석하려면--configExpand "rest"
옵션을 사용하여mongod
/mongos
를 시작하세요.명령이 성공적으로 실행되면
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
은(는) 다음 필드를 사용합니다.필드유형설명문자열필수 외부 소스 값을 검색하기 위해
mongod
/mongos
가GET
요청을 발행하는 URL 입니다.로컬 호스트가 아닌
REST
엔드포인트(예: 원격 서버에서 호스팅되는REST
엔드포인트)의 경우__rest
에는 호스트 시스템과 원격 서버가 모두 TLS 1.1 이상을 지원하는 암호화된(https://
) URL이 필요합니다.URL에 지정된 엔드포인트에
REST
인증이 필요한 경우 표준 RFC 사용자 정보 를 사용하여 자격 3986 증명을 URL에 인코딩합니다. 형식.로컬호스트
REST
엔드포인트(예: 호스트 컴퓨터에서 수신 중인REST
엔드포인트)의 경우__rest
는 암호화되지 않은(http://
) URL을 허용합니다.중요: 지정된
REST
엔드포인트에서 반환한 값에는 추가 확장 지시문이 포함될 수 없습니다 .mongod
/mongos
는 반환된 데이터에 대해 추가 처리 를 수행하지 않으며 , 반환된 데이터에 추가 확장 지시문이 포함된 경우 오류 코드와 함께 종료됩니다.type
문자열선택 사항:
__rest
가 지정된 URL에서 반환된 값을 파싱하는 방법을 제어합니다.가능한 값은 다음과 같습니다.
trim
문자열선택 사항:whitespace
에__rest
가 선행 또는 후행 공백, 특히" "
,"\r"
,"\n"
,"\t"
,"\v"
및"\f"
의 발생을 잘라내라고 지시합니다. 기본값은none
또는 잘라내지 않기입니다.문자열선택 사항입니다. 확장 결과의 SHA-256 다이제스트입니다.
명시된 경우 digest_key도 지정해야 합니다.
문자열참고
예를 보려면
__rest
확장 지시어 사용을 참조하세요.
__exec
__exec
확장 지시어는 shell 또는 터미널 명령의 출력에서 구성 파일 값을 로드합니다.__exec
는 구성 파일의 특정 값 로드 또는 전체 구성 파일 로드를 지원합니다. 그런 다음mongod
/mongos
는 구성의 일부로 외부 소스 값을 사용하기 시작합니다.__exec
확장 지시문의 구문은 다음과 같습니다.특정 구성 파일 설정 또는 설정에 대한 셸 또는 터미널 명령을 지정하려면 다음을 수행합니다.
<some configuration file setting>: __exec: "<string>" type: "string" trim: "none|whitespace" 전체 구성 파일에 대해 shell 또는 터미널 명령을 지정하려면 다음을 수행합니다.
__exec: "<string>" type: "yaml" trim: "none|whitespace" 터미널 또는 shell 명령을 통해 전체 구성 파일을 지정하는 경우 확장 지시어와 해당 옵션은 반드시 구성 파일에 지정된 유일한 값이어야 합니다.
__exec
은(는) 다음 필드를 사용합니다.필드유형설명__exec
문자열필수 외부 소스 값을 검색하기 위해
mongod
/mongos
가 터미널이나 셸에서 실행하는 문자열입니다.Linux 및 OSX 호스트에서 실행은 POSIX
popen()
을 통해 처리됩니다. Windows 호스트에서 실행은 프로세스 제어 API를 통해 처리됩니다.__exec
는mongod
또는mongos
를 시작한 사용자와 동일한 사용자로 읽기 전용 파이프를 엽니다.중요: 지정된 명령을 실행하여 반환되는 데이터에는 추가 확장 지시문이 포함될 수 없습니다 .
mongod
/mongos
는 반환된 데이터에 대해 추가 처리 를 수행하지 않으며 , 반환된 데이터에 추가 확장 지시문이 포함된 경우 오류 코드와 함께 종료됩니다.type
문자열선택 사항 실행된 명령에서 반환된 값을
__exec
구문 분석할 방법을 제어합니다.가능한 값은 다음과 같습니다.
trim
문자열선택 사항:whitespace
에__exec
가 선행 또는 후행 공백, 특히" "
,"\r"
,"\n"
,"\t"
,"\v"
및"\f"
의 발생을 잘라내라고 지시합니다. 기본값은none
또는 잘라내지 않기입니다.문자열선택 사항입니다. 확장 결과의 SHA-256 다이제스트입니다.
명시된 경우 digest_key도 지정해야 합니다.
문자열참고
예를 보려면
__exec
확장 지시어 사용을 참조하세요.
완료된 확장 명령어 값이 있는 구성 파일 출력하기
--outputConfig
옵션으로 mongod
/mongos
를 시작하여 하나 이상의 확장 지시문을 지정하는 설정 파일의 최종 출력을 테스트할 수 있습니다. --outputConfig
출력으로 시작한 mongod
/mongos
는 확인된 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에 기록된 문자열은 다음과 같습니다. 20128
구성 파일에 __rest
확장이 포함된 경우 Linux/macOS에서 구성 파일에 대한 읽기 액세스는 mongod
/ mongos
프로세스를 실행하는 사용자로만 제한되어야 합니다.
--configExpand "rest"
및 --outputConfig
옵션을 사용하여 mongod
를 시작합니다.
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