BI Connector の TLS の構成
BI Connector がデータを安全に送信するには、MongoDB インスタンス、 mongosqld
インスタンス、および BI ツールでトランスポート層セキュリティ (TLS) 暗号化を有効にする必要があります。 TLS構成の完全な説明は、このドキュメントの範囲外ですが、このチュートリアルでは、テスト目的の独自のTLS証明書を作成し、 TLSを有効にして MongoDB コンポーネントを起動するプロセスについて説明します。
重要
これらの手順は、テスト目的でのみ使用してください。 実稼働環境では、認識された認証局(CA)が発行したTLS証明書を使用する必要があります。
前提条件
クラスターの可用性に関する注意事項
BI Connector が TLS を有効にしているときに MongoDB レプリカセット と シャーディングされたクラスター の読み取り可用性を確保するには、 ローリング アップグレード手順 を使用します。レプリカセットのプライマリ アップグレード中、アプリケーションは フェイルオーバー と 選挙 サイクルが完了するまで待機する必要があります。
自己署名証明書の作成とテスト
このチュートリアルには、 mongosqld
プロセスが MySQL shell などのSQLクライアントからの OpenSSL 暗号化接続を受け入れ、 mongod
インスタンスと暗号化接続を行うためのいくつかのファイルを作成する手順が含まれています。 .pem ファイル を 2 つ作成します 。各ファイルには暗号化のキーと自己署名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
に出力します。次のコマンドでは、証明書リクエストに含まれるいくつかの情報を入力するよう、ユーザーに求めます。 フィールドの 1 つは
Common Name
と呼ばれ、完全修飾ドメイン名(FQDN)です。 チュートリアルのこのステップで生成された証明書の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
現在、2 つのファイルがあります。1 つはmdbca.crt
認証局ファイルと、そのリクエストに署名するために使用されるmdbprivate.key
キーです。
MongoDB サーバー用の 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
構成ファイルを更新します。
着信接続に TLS を要求するように mongod
を構成するには、構成ファイルを次のように変更します。値は、 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
shell を使用してサーバーに接続し、 TLS接続をテストします。 mongo
コマンドには次のTLSオプションが必要です。
オプション | 値 |
---|---|
なし | |
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 の エントリは、 を実行するサーバーのmongosqld
FQDN と一致する必要があります。
注意
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
MongoDBtest
ユーザーに対応するユーザー名とパスワードを指定します。
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
に出力します。次のコマンドでは、証明書リクエストに含まれるいくつかの情報を入力するよう、ユーザーに求めます。 フィールドの 1 つは
Common Name
と呼ばれ、完全修飾ドメイン名(FQDN)です。 チュートリアルのこのステップで生成された証明書の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
現在、2 つのファイルがあります。1 つはmdbca.crt
認証局ファイルと、そのリクエストに署名するために使用されるmdbprivate.key
キーです。
MongoDB Serverの PEM 証明書を生成します。
次のコマンドは、 mongod
プロセスが使用するための鍵と、証明書署名リクエスト(CSR)を生成します。 Common Name
応答は、 インスタンスが実行されるホストの完全修飾ドメイン名( FQDN )である必要があります(例:mongod
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 サーバー用の 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
構成ファイルを更新します。
着信接続に TLS を要求するように mongod
を構成するには、構成ファイルを次のように変更します。値は、 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
を参照してください。
mongo
シェルを使用して接続をテストします。
mongo
shell を使用してサーバーに接続し、 TLS接続をテストします。 mongo
コマンドには次のTLSオプションが必要です。
オプション | 値 |
---|---|
なし | |
/opt/certs/mdbca.crt (ステップ2.2で生成されたファイル) | |
/opt/certs/mdb.pem (ステップ 5 で生成されたファイル) |
mongo --tls --host <step3-common-name> \ --tlsCAFile /opt/certs/mdbca.crt \ --tlsPEMKeyFile /opt/certs/mdb.pem
オプションを適切に編集します。
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
MongoDBtest
ユーザーに対応するユーザー名とパスワードを指定します。
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