Docs Menu
Docs Home
/ / /
C++ ドライバー

構成

項目一覧

  • TLS/SSL の構成
  • 認証の構成
  • 接続プールの構成
  • MongoDBとの間でのデータの圧縮

mongocx ドライバーでは、ほとんどの構成は接続 URIを介して行われます。 mongocx::options::client クラス。

TLS(SSL)を有効にするには、URI で tls=trueを設定します。

mongodb://mongodb.example.com/?tls=true

デフォルトでは、mongocx はローカル システムの CA リストに対してサーバー証明書を検証します。 これは 接続 で別の設定を指定するか、string mongocx::options::tls tls_optsmongocxx::options::clientを作成することで上書きできます。 オブジェクトを作成し、それを 上の に渡します。

たとえば、カスタム 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を使用し、認証対象のデータベースを指定する パラメーターを使用します。

#include <mongocxx/client.hpp>
#include <mongocxx/uri.hpp>
auto client = mongocxx::client{uri{"mongodb://user1:pwd1@host1/?authSource=db1"}};

SCRAM-SHA-1 タイプの認証情報を明示的に作成するには、上記のように接続stringを使用しますが、認証メカニズムを "SCRAM-SHA-1" として指定するパラメーターを使用します。

#include <mongocxx/client.hpp>
#include <mongocxx/uri.hpp>
auto client = mongocxx::client{
uri{"mongodb://user1:pwd1@host1/?authSource=db1&authMechanism=SCRAM-SHA-1"}
};

MONGODB-CR authMechanismは非推奨となり、MongoDB 4.0では機能しなくなりました。 代わりに、authMechanism を指定しないで、ドライバーはサーバーと互換性のある認証メカニズムを使用します。

X. 509メカニズムは、TLS ネゴシエート中にドライバーによって提示された X. 509証明書の識別済みサブジェクト名から派生した名前のユーザーを認証します。 この認証方法では、証明書検証機能を備えた TLS 接続を使用する必要があり、MongoDB 2.6以降で利用可能です。 このタイプの認証情報を作成するには、認証メカニズムを "MONGODB-X509" として指定し、クライアントの秘密キーと証明書を含む PEM ファイルへのパスを指定し、TLS が有効になっている パラメーターを使用しstring 。

#include <mongocxx/client.hpp>
#include <mongocxx/uri.hpp>
auto client = mongocxx::client{
uri{"mongodb://host1/?authMechanism=MONGODB-X509&tlsCertificateKeyFile=client.pem&tls=true"}
};

証明書からサブジェクト名を決定する方法の詳細については、MongoDB サーバーX. 509のチュートリアルを参照してください。

PEM ファイルは、 mongocx::options::tls クラスについては、上記の デフォルトの TLS/SSL 構成 例 を参照してください。

MongoDB Enterpriseは Kerberos サービスによるプロキシ認証をサポートしています。 Kerberosタイプ(GSSAPI)の認証情報を作成するには、URI にユーザー名とRealmを含む接続stringと、認証メカニズムを"GSSAPI"として指定するパラメーターを使用します。

#include <mongocxx/client.hpp>
#include <mongocxx/uri.hpp>
auto client = mongocxx::client{
uri{"mongodb://username%40REALM.COM@host1/?authMechanism=GSSAPI"}
};

注意

上記の例に示すように、URI string 内の@記号は%40にエスケープする必要があります。

MongoDB Enterpriseは、 LDAP(Lightweight Directory Access Protocol)サービスを通してプロキシ認証をサポートしています。 LDAPタイプの認証情報を作成するには、ユーザーを指定する接続stringと、認証ソースを "$external" として指定し、認証メカニズムを "PLAIN" として指定するパラメーターを使用します。

#include <mongocxx/client.hpp>
#include <mongocxx/uri.hpp>
auto client = mongocxx::client{
uri{"mongodb://user1:pwd1@host1/?authSource=$external&authMechanism=PLAIN"}
};

接続プールを構成するには、まず URI を引数として渡してmongocxx::poolを作成します。 プールのサイズは URI で構成できます。 次に、 mongocxx::pool::acquireを呼び出してプールからクライアントを受け取ります。 クライアントは、範囲を超えると自動的にプールに返されます。

#include <mongocxx/pool.hpp>
#include <mongocxx/uri.hpp>
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 3.4は Snappy 圧縮のサポートを追加し、 3.6に zlib 圧縮が追加され、 4.2に zstd 圧縮が追加されました。

適切な URI オプションを使用してデータ圧縮を有効にできます。 これらのオプションの詳細については、 MongoDB C ドライバー API ドキュメント を参照してください。

戻る

高度な構成とインストールのオプション