構成
mongocx ドライバーでは、ほとんどの構成は接続 URIを介して行われます。 mongocx::options::client クラス。
TLS/SSL の構成
TLS(SSL)を有効にするには、URI で tls=true
を設定します。
mongodb://mongodb.example.com/?tls=true
デフォルトでは、mongocx はローカル システムの CA リストに対してサーバー証明書を検証します。 これは 接続 で別の設定を指定するか、string mongocx::options::tls tls_opts
mongocxx::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を使用し、認証対象のデータベースを指定する パラメーターを使用します。
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のチュートリアルを参照してください。
PEM ファイルは、 mongocx::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 ドキュメント を参照してください。