Docs Menu
Docs Home
/
BI Connector
/

BI Connector の TLS の構成

項目一覧

  • 前提条件
  • 自己署名証明書の作成とテスト

BI Connector がデータを安全に送信するには、MongoDB インスタンス、 mongosqldインスタンス、および BI ツールでトランスポート層セキュリティ (TLS) 暗号化を有効にする必要があります。 TLS構成の完全な説明は、このドキュメントの範囲外ですが、このチュートリアルでは、テスト目的の独自のTLS証明書を作成し、 TLSを有効にして MongoDB コンポーネントを起動するプロセスについて説明します。

重要

これらの手順は、テスト目的でのみ使用してください。 実稼働環境では、認識された認証局(CA)が発行したTLS証明書を使用する必要があります。

  • mongosqldを実行するのに十分な権限を持つ MongoDB ユーザー。

  • 開始および停止できる mongodインスタンス。

  • 開始および停止できるmongosqldインスタンス。

  • OpenSSL

  • MySQL shell

    Tip

    以下も参照してください。

BI Connector が TLS を有効にしているときに MongoDB レプリカセット と シャーディングされたクラスター の読み取り可用性を確保するには、 ローリング アップグレード手順 を使用します。レプリカセットのプライマリ アップグレード中、アプリケーションは フェイルオーバー と 選挙 サイクルが完了するまで待機する必要があります。

Tip

以下も参照してください。

このチュートリアルには、 mongosqldプロセスが MySQL shell などのSQLクライアントからの OpenSSL 暗号化接続を受け入れ、 mongodインスタンスと暗号化接続を行うためのいくつかのファイルを作成する手順が含まれています。 .pem ファイル を 2 つ作成します 。各ファイルには暗号化のキーと自己署名TLS証明書が含まれています。

1
  1. Windows cmdプロンプトを使用して、証明書を保持するためのディレクトリを作成します。 このチュートリアルではC:\opt\certsを使用します。

    mkdir C:\opt\certs
    cd C:\opt\certs
  2. このチュートリアルでは、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
  3. 後で使用するために環境変数を設定します。

    set OPENSSL_CONF=C:\OpenSSL\bin\openssl.cfg
2
  1. ディレクトリをC:\opt\certsに変更します。

    cd C:\opt\certs
  2. OpenSSL アプリケーションを起動します。

    C:\OpenSSL\bin\openssl.exe
    C:\Users\username>cd C:\opt\certs
    C:\Users\username>C:\OpenSSL\bin\openssl.exe
    OpenSSL>
  3. 次のコマンドは秘密キーを生成し、 mdbprivate.keyに出力します。

    genrsa -out C:\opt\certs\mdbprivate.key -aes256 \
    -passout pass:password
  4. 次のコマンドは認証局ファイルを生成し、 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キーです。

3

次のコマンドは、 mongodプロセスTLS使用とCSRのキーを生成します。 このステップでは、 応答は、Common Name インスタンスが TLSmongod するサーバーの FQDN である必要があります(例:www.example.com

OpenSSL プロンプトに次のコマンドを入力します。

req -new -nodes -newkey rsa:2048 -keyout .\mdb.key -out .\mdb.csr
4

OpenSSL プロンプトに次のコマンドを入力します。

x509 -CA .\mdbca.crt -CAkey .\mdbprivate.key -CAcreateserial -req -days 1000 -in .\mdb.csr -out .\mdb.crt -passin pass:password
5

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

6

着信接続に 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を参照してください。

7
mongod.exe --config C:\path\to\mongod.conf
8

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"

オプションを適切に編集します。

9

Common Nameこの CSR の エントリは、 を実行するサーバーのmongosqld FQDN と一致する必要があります。

注意

Common Nameこの CSRCommon Name エントリは、 ステップ で作成した最初の CSR の2 エントリと 異なる 必要があります。

OpenSSL アプリケーションを起動し、OpenSSL プロンプトに次のコマンドを入力します。

req -new -nodes -newkey rsa:2048 -keyout .\bi.key -out .\bi.csr
10

OpenSSL プロンプトに次のコマンドを入力します。

x509 -CA .\mdbca.crt -CAkey .\mdbprivate.key -CAcreateserial -req -days 1000 -in .\bi.csr -out .\bi.crt -passin pass:password
11

OpenSSL アプリケーションを終了し、 cmdプロンプトで次のコマンドを入力します。

copy .\bi.key + .\bi.crt bi.pem
12

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
13

TLS 経由で接続する ODBC DSN を作成するには、 DSN チュートリアル の手順に従い、 TLS 証明書パス情報を使用して新しい DSN を構成します。

DSN 設定画面のスクリーンショット

注意

SSL Certificateフィールドに証明書パスを入力する必要はありません。

DSN 設定画面の [ Connection Enable Cleartext Authenticationというラベルの付いたボックスを確認します。

DSN 設定画面のスクリーンショット

ODBC 接続をテストするには、[ Test ] ボタンをクリックします。

DSNを設定したら、それを使用してPower BIQlik Sense などの複数の BI ツールに接続できます。

1

証明書を保持するためのディレクトリを作成します。 このチュートリアルでは、 /opt/certsを使用します。 証明書ディレクトリは、 mongodおよびmongosqldプログラムを実行するシステムユーザーが読み取れる必要があります。

mkdir /opt/certs
cd /opt/certs
2
  1. 次のコマンドは秘密キーを生成し、 mdbprivate.keyに出力します。

    openssl genrsa -out /opt/certs/mdbprivate.key -aes256 \
    -passout pass:password
  2. 次のコマンドは認証局ファイルを生成し、 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キーです。

3

次のコマンドは、 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
4
openssl x509 -CA /opt/certs/mdbca.crt
-CAkey /opt/certs/mdbprivate.key \
-CAcreateserial -req -days 1000 \
-in /opt/certs/mdb.csr -out /opt/certs/mdb.crt \
-passin pass:password
5

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

6

着信接続に 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を参照してください。

7
mongod --config /path/to/mongod.conf
8

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

オプションを適切に編集します。

9

Common Nameこの CSR の エントリは、 を実行するホストの FQDN mongosqldと一致する必要があります。ホストのFQDNを決定するには、コマンド プロンプトでhostname -fを使用します。

Extra Attribute要素のチャレンジ パスワードの入力を求められる場合があります。 このチュートリアルでは、この要素を空白のままにできます。

注意

このCSRCommon Nameエントリは、ステップ2で作成した最初のCSRCommon Nameエントリと 異なる 必要があります。

openssl req -new -nodes -newkey rsa:2048 \
-keyout /opt/certs/bi.key \
-out /opt/certs/bi.csr
10
openssl x509 -CA /opt/certs/mdbca.crt \
-CAkey /opt/certs/mdbprivate.key \
-CAcreateserial -req -days 1000 \
-in /opt/certs/bi.csr -out /opt/certs/bi.crt \
-passin pass:password
11
cat /opt/certs/bi.key /opt/certs/bi.crt > /opt/certs/bi.pem
12

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
13

mongosqldインスタンスに接続するには、次のコマンドライン オプションを使用して MySQL shell を起動します。

mysql --ssl-mode REQUIRED --ssl-ca=/opt/certs/mdbca.crt \
--enable-cleartext-plugin --port 3307 -u <username> -p