mongocx ドライバーでは、ほとんどの構成は 接続 URI を介して行われます。mongocx::options::クライアントクラスを介して、いくつかの追加の接続オプションが利用できます。
TLS/SSL の構成
TLS(SSL)を有効にするには、URI で tls=trueを設定します。
mongodb://mongodb.example.com/?tls=true
デフォルトでは 、mongocx はローカル システムの CA リストに対してサーバー証明書を検証します。これを上書きするには、接続文字列で別の設定を指定するか、 mongocxx::options::tls オブジェクトを作成して mongocxx::options::client 上の tls_opts に渡します。
たとえば、カスタム CA または を使用して証明書の検証を無効にするには、次の例を参照してください。
// 1) Using tls_options mongocxx::options::client client_options; mongocxx::options::tls tls_options; // If the server certificate is not signed by a well-known CA, // you can set a custom CA file with the `ca_file` option. tls_options.ca_file("/path/to/custom/cert.pem"); // If you want to disable certificate verification, you // can set the `allow_invalid_certificates` option. tls_options.allow_invalid_certificates(true); client_options.tls_opts(tls_options); auto client1 = mongocxx::client{uri{"mongodb://host1/?tls=true"}, client_options}; // 2) Using the URI auto client2 = mongocxx::client{uri{"mongodb://host1/?tls=true&tlsAllowInvalidCertificates=true&tlsCAFile=/path/to/custom/cert.pem"}};
認証の構成
デフォルトの認証メカニズム
MongoDB 3.0はデフォルトの認証メカニズムをMONGODB-CRからSCRAM-SHA-1に変更しました。 サーバーのバージョンに関係なく適切に認証される認証情報を作成するには、URI で直接ユーザーとパスワードを含む接続stringを使用し、認証対象のデータベースを指定する パラメーターを使用します。
auto client = mongocxx::client{uri{"mongodb://user1:pwd1@host1/?authSource=db1"}};
SCRAM-SHA-1
SCRAM-SHA-1 タイプの認証情報を明示的に作成するには、上記のように接続stringを使用しますが、認証メカニズムを "SCRAM-SHA-1" として指定するパラメーターを使用します。
auto client = mongocxx::client{ uri{"mongodb://user1:pwd1@host1/?authSource=db1&authMechanism=SCRAM-SHA-1"} };
MONGODB-CR
MONGODB-CR authMechanismは非推奨となり、MongoDB 4.0では機能しなくなりました。 代わりに、authMechanism を指定しないで、ドライバーはサーバーと互換性のある認証メカニズムを使用します。
X.509
X. 509メカニズムは、TLS ネゴシエート中にドライバーによって提示された X. 509証明書の識別済みサブジェクト名から派生した名前のユーザーを認証します。 この認証方法では、証明書検証機能を備えた TLS 接続を使用する必要があり、MongoDB 2.6以降で利用可能です。 このタイプの認証情報を作成するには、認証メカニズムを "MONGODB-X509" として指定し、クライアントの秘密キーと証明書を含む PEM ファイルへのパスを指定し、TLS が有効になっている パラメーターを使用しstring 。
auto client = mongocxx::client{ uri{"mongodb://host1/?authMechanism=MONGODB-X509&tlsCertificateKeyFile=client.pem&tls=true"} };
証明書からサブジェクト名を決定する方法の詳細については、MongoDB サーバーX. 509のチュートリアルを参照してください。
The PEMファイルは、mongocxx::options::tlsクラスを使用して指定することもできます。上記のデフォルトのTLS/SSL 構成例を参照してください。
Kerberos (GSSAPI)
MongoDB Enterpriseは Kerberos サービスによるプロキシ認証をサポートしています。 Kerberosタイプ(GSSAPI)の認証情報を作成するには、URI にユーザー名とRealmを含む接続stringと、認証メカニズムを"GSSAPI"として指定するパラメーターを使用します。
auto client = mongocxx::client{ uri{"mongodb://username%40REALM.COM@host1/?authMechanism=GSSAPI"} };
注意
上記の例に示すように、URI string 内の@記号は%40にエスケープする必要があります。
LDAP
MongoDB Enterpriseは、 LDAP(Lightweight Directory Access Protocol)サービスを通してプロキシ認証をサポートしています。 LDAPタイプの認証情報を作成するには、ユーザーを指定する接続stringと、認証ソースを "$external" として指定し、認証メカニズムを "PLAIN" として指定するパラメーターを使用します。
auto client = mongocxx::client{ uri{"mongodb://user1:pwd1@host1/?authSource=$external&authMechanism=PLAIN"} };
接続プールの構成
接続プールを構成するには、まず URI を引数として渡してmongocxx::poolを作成します。 プールのサイズは URI で構成できます。 次に、 mongocxx::pool::acquireを呼び出してプールからクライアントを受け取ります。 クライアントは、範囲を超えると自動的にプールに返されます。
auto pool = mongocxx::pool{uri{"mongodb://host1/?minPoolSize=3&maxPoolSize=5"}}; { // To get a client from the pool, call `acquire()`. auto client = pool.acquire(); // The client is returned to the pool when it goes out of scope. }
詳細については、接続プールのドキュメントを参照してください。
MongoDBとの間でのデータの圧縮
MongoDB 3.4は Snappy 圧縮のサポートを追加し、 3.6に zlib 圧縮が追加され、 4.2に zstd 圧縮が追加されました。
適切な URI オプションを使用してデータ圧縮を有効にできます。これらのオプションの詳細については、 MongoDB CドライバーAPIドキュメント を参照してください。