BI Connector용 TLS 구성
이 페이지의 내용
BI Connector가 데이터를 안전하게 전송하려면 MongoDB 인스턴스, mongosqld
인스턴스 및 BI 도구에서 TLS(전송 계층 보안) 암호화를 활성화해야 합니다. TLS 구성에 대한 전체 설명은 이 문서의 범위를 벗어나지만, 이 튜토리얼에서는 테스트 목적으로 자체 TLS 인증서를 만들고 TLS 를 활성화한 상태에서 MongoDB 구성 요소를 시작하는 프로세스를 간략하게 설명합니다.
중요
이 절차는 테스트 목적으로만 사용하세요. 프로덕션 환경은 공인된 CA(인증 기관)에서 발급한 TLS 인증서를 사용해야 합니다.
전제 조건
mongosqld
를 실행할 수 있는 충분한 권한이 있는 MongoDB 사용자입니다.시작 및 중지할 수 있는
mongod
인스턴스입니다.시작 및 중지할 수 있는
mongosqld
인스턴스입니다.
cluster 가용성에 대한 참고 사항
BI Connector가 TLS를 활성화하는 동안 MongoDB 복제본 세트 및 샤드 클러스터 에 대한 읽기 가용성을 보장하려면 롤링 업그레이드 절차 를 사용합니다. 복제본 세트 프라이머리가 업그레이드되는 동안 애플리케이션은 페일오버 및 투표 주기가 완료될 때까지 기다려야 합니다.
자체 서명된 인증서 생성 및 테스트
이 튜토리얼에는 프로세스가 과 같은 클라이언트에서 OpenSSL 암호화 mongosqld
연결을 SQL MySQL shell허용하고 인스턴스와 암호화된 연결을 만들 수 있도록 하는 mongod
여러 파일을 만드는 방법에 대한 지침이 포함되어 있습니다. 두 개의 .pem 파일 을 생성합니다. . 각 파일에는 암호화 키와 자체 서명된 TLS 인증서가 포함되어 있습니다.
인증서 디렉토리를 만듭니다.
Windows
cmd
프롬프트를 사용하여 인증서를 저장할 디렉토리를 만듭니다. 이 튜토리얼에서는C:\opt\certs
을(를) 사용합니다.mkdir C:\opt\certs cd C:\opt\certs 이 튜토리얼에서는 OpenSSL 디렉토리가
C:\OpenSSL
에 있다고 가정합니다. 시스템의 다른 곳에 있는 경우 명령을 적절히 편집하거나 디렉토리를C:\OpenSSL
로 이동합니다.C:\OpenSSL\bin
디렉토리에openssl.cfg
라는 이름의 구성 파일이 없으면 새로 만듭니다.예제
다음은 예시 구성 파일입니다.
# # OpenSSL configuration file. # # Establish working directory. dir = . [ ca ] default_ca = CA_default [ CA_default ] serial = $dir/serial database = $dir/certindex.txt new_certs_dir = $dir/certs certificate = $dir/cacert.pem private_key = $dir/private/cakey.pem default_days = 365 default_md = md5 preserve = no email_in_dn = no nameopt = default_ca certopt = default_ca policy = policy_match [ policy_match ] countryName = match stateOrProvinceName = match organizationName = match organizationalUnitName = optional commonName = supplied emailAddress = optional [ req ] default_bits = 1024 default_keyfile = key.pem default_md = md5 string_mask = nombstr distinguished_name = req_distinguished_name req_extensions = v3_req [ req_distinguished_name ] # Variable name Prompt string #--------------------------- ---------------------------------- 0.organizationName = Organization Name (company) organizationalUnitName = Organizational Unit Name (department, division) emailAddress = Email Address emailAddress_max = 40 localityName = Locality Name (city, district) stateOrProvinceName = State or Province Name (full name) countryName = Country Name (2 letter code) countryName_min = 2 countryName_max = 2 commonName = Common Name (hostname, IP, or your name) commonName_max = 64 # Default values for the above, for consistency and less typing. # Variable name Value #--------------------------- ------------------------------ 0.organizationName_default = My Company localityName_default = My Town stateOrProvinceName_default = State or Providence countryName_default = US [ v3_ca ] basicConstraints = CA:TRUE subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer:always [ v3_req ] basicConstraints = CA:FALSE subjectKeyIdentifier = hash 나중에 사용할 수 있도록 환경 변수를 설정합니다.
set OPENSSL_CONF=C:\OpenSSL\bin\openssl.cfg
자체 서명된 인증 기관을 생성합니다.
디렉토리를
C:\opt\certs
로 변경합니다.cd C:\opt\certs OpenSSL 애플리케이션을 시작합니다.
C:\OpenSSL\bin\openssl.exe C:\Users\username>cd C:\opt\certs C:\Users\username>C:\OpenSSL\bin\openssl.exe OpenSSL> 다음 명령은 비공개 키를 생성하고
mdbprivate.key
에 출력합니다.genrsa -out C:\opt\certs\mdbprivate.key -aes256 \ -passout pass:password 다음 명령은 인증 기관 파일을 생성하고
mdbca.crt
에 출력합니다.다음 명령은 사용자에게 인증서 요청에 통합된 몇 가지 정보를 입력하라는 메시지를 표시합니다. 필드 중 하나의 이름은 FQDN(정규화된 도메인 이름)인
Common Name
입니다. 튜토리얼의 이 단계에서 생성된 인증서의Common Name
항목은 3단계와 9단계에서 생성된 인증서의Common Name
항목과 달라야 합니다.req -x509 -new -key C:\opt\certs\mdbprivate.key -days 1000 -out C:\opt\certs\mdbca.crt -passin pass:password
이제 mdbca.crt
인증 기관 파일과 해당 요청에 서명하는 데 사용된 mdbprivate.key
키라는 두 개의 파일이 있습니다.
MongoDB Server에 대한 PEM 파일을 생성합니다.
.pem
파일은 함께 연결된 키와 인증서로 구성됩니다. MongoDB 인스턴스에서 사용할 .pem
파일을 만들려면 OpenSSL 프롬프트를 종료하고 C:\opt\certs
디렉토리의 cmd
프롬프트에 다음 명령을 입력합니다.
copy .\mdb.key + .\mdb.crt mdb.pem
이제 인증서 디렉토리에 다음 파일이 있어야 합니다.
mdb.crt mdb.csr mdb.key mdb.pem mdbca.crt mdbprivate.key
누락된 항목이 있는 경우 이전 단계로 Go 오류가 있는지 확인합니다.
구성 mongod
파일을 업데이트합니다.
들어오는 mongod
연결에 TLS 를 요구하도록 를 구성하려면 다음과 같이 구성 파일을 수정합니다. 이 값은 TLS 파일을 생성한 위치에 따라 달라질 수 있습니다.
옵션 | 값 |
---|---|
requireSSL | |
C:\opt\certs\mdb.pem | |
C:\opt\certs\mdbca.crt | |
C:\opt\certs\mdb.pem | |
x509 |
예제
다음 구성 파일에는 TLS 연결 및 x에 대한 지시문이 포함되어 있습니다.509 인증.
구성 파일에는 추가 또는 다른 옵션이 필요할 수 있습니다.
systemLog: destination: file path: 'C:\data\mongod.log' logAppend: true net: bindIp: <step-3-FQDN> port: 27017 ssl: mode: requireSSL PEMKeyFile: 'C:\opt\certs\mdb.pem' CAFile: 'C:\opt\certs\mdbca.crt' clusterFile: 'C:\opt\certs\mdb.pem' security: clusterAuthMode: x509 storage: dbPath: 'C:\data\db'
구성 파일 대신 명령줄 옵션으로 mongod
를 시작하는 것을 선호하는 경우 mongosqld
에서 이에 상응하는 옵션을 확인하세요.
셸과의 연결을 mongo
테스트합니다.
mongo
셸로 서버에 연결하여 TLS 연결을 테스트합니다. mongo
명령에는 다음과 같은 TLS 옵션이 필요합니다.
옵션 | 값 |
---|---|
none | |
C:\opt\certs\mdbca.crt (2d단계에서 생성된 파일) | |
C:\opt\certs\mdb.pem (5단계에서 생성된 파일) |
.\mongo.exe --ssl --host <step3-common-name> ^ --sslCAFile "C:\opt\certs\mdbca.crt" ^ --sslPEMKeyFile "C:\opt\certs\mdb.pem"
옵션을 적절히 편집합니다.
BI Connector에 대한 키와 CSR 을 생성합니다.
Common Name
이 CSR 의 항목은 를 실행하는 서버의 FQDN mongosqld
과 일치해야 합니다.
참고
Common Name
이 CSR 의 항목은 단계 Common Name
에서 첫 번째로 생성한 CSR 의 항목과 달라야 2 합니다.
OpenSSL 애플리케이션을 시작하고 OpenSSL 프롬프트에 다음 명령을 입력합니다.
req -new -nodes -newkey rsa:2048 -keyout .\bi.key -out .\bi.csr
시작하기 mongosqld
mongosqld
구성 파일에는 몇 가지 TLS관련 옵션이 필요합니다. 이 값은 TLS 인증서와 .pem
파일을 생성한 위치에 따라 달라질 수 있습니다.
옵션 | 값 |
---|---|
true | |
C:\opt\certs\mdb.pem | |
C:\opt\certs\mdbca.crt | |
requireSSL | |
C:\opt\certs\bi.pem | |
C:\opt\certs\mdbca.crt |
다음 예제 구성 파일 은 C:\opt\certs
디렉토리에 있는 파일을 사용합니다. 를 실행하고 데이터베이스에서 읽을 mongosqld
수 있는 충분한 권한 을 가진 MongoDB 사용자에 해당하는 사용자 이름과 비밀번호를 test
지정합니다.
systemLog: logAppend: false path: 'C:\logs\mongosqld.log' verbosity: 2 security: enabled: true mongodb: net: uri: <step-3-FQDN> auth: username: <username> password: <password> ssl: enabled: true PEMKeyFile: 'C:\opt\certs\mdb.pem' CAFile: 'C:\opt\certs\mdbca.crt' net: bindIp: localhost port: 3307 ssl: mode: 'requireSSL' PEMKeyFile: 'C:\opt\certs\bi.pem' CAFile: 'C:\opt\certs\mdbca.crt' schema: sample: namespaces: 'test.*'
mongosqld
--config
구성 파일을 사용하려면 옵션으로 를 시작합니다.
.\mongosqld --config C:\path\to\mongosqld.conf
ODBC DSN 으로 테스트합니다.
TLS 를 통해 연결하는 ODBC DSN 을 만들려면 DSN 튜토리얼 의 지침에 따라 TLS 인증서 경로 정보로 새 DSN 을 구성합니다.
참고
SSL Certificate 필드에 인증서 경로를 입력할 필요가 없습니다.
DSN 구성 화면의 Connection 탭에서 Enable Cleartext Authentication 이라고 표시된 상자를 선택합니다.
ODBC 연결을 테스트하려면 Test 버튼을 클릭합니다.
DSN 을 설정한 후에는 이를 사용하여 Power BI 또는 Qlik Sense와 같은 여러 BI 도구에 연결할 수 있습니다.
자체 서명된 인증 기관을 생성합니다.
다음 명령은 비공개 키를 생성하고
mdbprivate.key
에 출력합니다.openssl genrsa -out /opt/certs/mdbprivate.key -aes256 \ -passout pass:password 다음 명령은 인증 기관 파일을 생성하고
mdbca.crt
에 출력합니다.다음 명령은 사용자에게 인증서 요청에 통합된 몇 가지 정보를 입력하라는 메시지를 표시합니다. 필드 중 하나의 이름은 FQDN(정규화된 도메인 이름)인
Common Name
입니다. 튜토리얼의 이 단계에서 생성된 인증서의Common Name
항목은 3단계와 9단계에서 생성된 인증서의Common Name
항목과 달라야 합니다.openssl req -x509 -new -key /opt/certs/mdbprivate.key \ -days 1000 -out /opt/certs/mdbca.crt \ -passin pass:password
이제 mdbca.crt
인증 기관 파일과 해당 요청에 서명하는 데 사용된 mdbprivate.key
키라는 두 개의 파일이 있습니다.
MongoDB Server에 대한 PEM 인증서를 생성합니다.
다음 명령은 사용할 mongod
프로세스의 키와 CSR(인증서 서명 요청)을 생성합니다. 응답은 와 같이 인스턴스가 Common Name
실행되는 호스트의 정규화된 도메인 이름(Fully mongod
Qualified Domain Name, FQDN )이어야 www.example.com
합니다. 서버의 FQDN 을 확인하려면 hostname -f
명령 프롬프트에서 를 사용합니다.
Extra
Attribute
요소에 대한 챌린지 비밀번호를 입력하라는 메시지가 표시될 수 있습니다. 이 튜토리얼에서는 이 요소를 비워 둘 수 있습니다.
openssl req -new -nodes -newkey rsa:2048 -keyout /opt/certs/mdb.key \ -out /opt/certs/mdb.csr
MongoDB Server에 대한 PEM 파일을 생성합니다.
.pem
파일은 함께 연결된 키와 인증서로 구성됩니다. MongoDB 인스턴스에서 사용할 .pem
파일을 만들려면 /opt/certs/
디렉토리에 다음 명령을 입력합니다.
cat /opt/certs/mdb.key /opt/certs/mdb.crt > /opt/certs/mdb.pem
이제 인증서 디렉토리에 다음 파일이 있어야 합니다.
mdb.crt mdb.csr mdb.key mdb.pem mdbca.crt mdbprivate.key
누락된 항목이 있는 경우 이전 단계로 Go 오류가 있는지 확인합니다.
구성 mongod
파일을 업데이트합니다.
들어오는 mongod
연결에 TLS 를 요구하도록 를 구성하려면 다음과 같이 구성 파일을 수정합니다. 이 값은 TLS 파일을 생성한 위치에 따라 달라질 수 있습니다.
옵션 | 값 |
---|---|
requireSSL | |
/opt/certs/mdb.pem | |
/opt/certs/mdbca.crt | |
/opt/certs/mdb.pem | |
security.clusterAuthmode | x509 |
예제
다음 구성 파일에는 TLS 연결 및 x에 대한 지시문이 포함되어 있습니다.509 인증.
구성 파일에는 추가 또는 다른 옵션이 필요할 수 있습니다.
systemLog: destination: file path: '/data/mongod.log' logAppend: true processManagement: fork: true pidFilePath: '/data/mongod.pid' net: bindIp: localhost port: 27017 ssl: mode: requireSSL PEMKeyFile: '/opt/certs/mdb.pem' CAFile: '/opt/certs/mdbca.crt' clusterFile: '/opt/certs/mdb.pem' security: clusterAuthMode: x509 storage: dbPath: '/data'
구성 파일 대신 명령줄 옵션으로 mongod
를 시작하는 것을 선호하는 경우 mongosqld
에서 이에 상응하는 옵션을 확인하세요.
BI Connector에 대한 키와 CSR 을 생성합니다.
Common Name
이 CSR 의 항목은 를 실행하는 호스트의 FQDN mongosqld
과 일치해야 합니다. 호스트의 FQDN 을 확인하려면 hostname -f
명령 프롬프트에서 를 사용합니다.
Extra
Attribute
요소에 대한 챌린지 비밀번호를 입력하라는 메시지가 표시될 수 있습니다. 이 튜토리얼에서는 이 요소를 비워 둘 수 있습니다.
참고
이 CSR 의 Common Name
항목은 2 단계에서 첫 번째로 생성한 CSR 의 Common Name
항목과 달라야 합니다.
openssl req -new -nodes -newkey rsa:2048 \ -keyout /opt/certs/bi.key \ -out /opt/certs/bi.csr
을(를) 시작합니다.mongosqld
mongosqld
구성 파일에는 몇 가지 TLS관련 옵션이 필요합니다. 이 값은 TLS 파일을 생성한 위치에 따라 달라질 수 있습니다.
옵션 | 값 |
---|---|
true | |
/opt/certs/mdb.pem | |
/opt/certs/mdbca.crt | |
requireSSL | |
/opt/certs/bi.pem | |
/opt/certs/mdbca.crt |
예제
다음 구성 파일 은 디렉토리에 있는 파일을 /opt/certs/
사용합니다. 를 실행하고 데이터베이스에서 읽을 mongosqld
수 있는 충분한 권한 을 가진 MongoDB 사용자에 해당하는 사용자 이름과 비밀번호를 test
지정합니다.
systemLog: logAppend: false path: './logs/mongosqld.log' verbosity: 2 security: enabled: true mongodb: net: uri: <step9-common-name> auth: username: <username> password: <password> ssl: enabled: true PEMKeyFile: '/opt/certs/mdb.pem' CAFile: '/opt/certs/mdbca.crt' net: bindIp: localhost port: 3307 ssl: mode: 'requireSSL' PEMKeyFile: '/opt/certs/bi.pem' CAFile: '/opt/certs/mdbca.crt' schema: sample: namespaces: 'test.*'
mongosqld
--config
구성 파일을 사용하려면 옵션으로 를 시작합니다.
mongosqld --config /path/to/mongosqld.conf