MongoDB は、安全な TLS/SSL 接続 で使用するための X.509 証明書認証をサポートしています。シャーディングされたクラスター ノードとレプリカセットは、キーファイル を使用する代わりに、X.509証明書を使用してクラスターまたはレプリカセットへの メンバーシップを検証 できます。メンバー認証は内部プロセスです。
注意
MongoDB は、TLS 1.1 + が利用可能なシステムで TLS 1.0暗号化のサポートを無効にします。
内部認証を有効にすると、 自己管理型配置でのロールベースのアクセス制御も有効になります。 配置で接続して操作を実行するには、クライアントは ユーザーとして認証する必要があります。
配置にユーザーを追加する手順については、「 自己管理型配置でのユーザーとロールの管理」チュートリアルを参照してください。
ユーザー認証に X.509 証明書を使用する手順については、「 X. を使用して自己管理型MongoDBでクライアントを認証する 」をご覧ください。509
重要
TLS/SSL、PKI(公開鍵暗号基盤)証明書、特に X.509 証明書と証明機関の詳細な説明は、このドキュメントの範囲外になります。このチュートリアルでは、TLS/SSL に関する事前の知識と、有効な X.509 証明書にアクセスできることを前提としています。
メンバー X.509 証明書
注意
有効な X.509 証明書が必要です。
--tlsAllowInvalidCertificatesまたはnet.tls.allowInvalidCertificates: trueを指定した場合、無効な証明書は TLS 接続を確立するには十分ですが、認証には不十分です。
証明書の要件
TLSが有効になっている場合、メンバー証明書を使用して、シャーディングされたクラスターまたはレプリカセットの内部接続へのメンバーシップを検証します。net.tls.clusterFileおよびnet.tls.certificateKeyFileのオプションを使用して、メンバー証明書ファイルのパスを構成できます。メンバーには次の構成要件があります。
クラスター ノードの設定では、認証に使用される属性の少なくとも 1 つに空でない値を指定する必要があります。デフォルトで MongoDB は次のものを受け入れます。
組織 (
O)組織単位 (
OU)ドメインコンポーネント (
DC)
MongoDB は、エントリがすべてのノード証明書にわたって完全に一致することを確認します。複数の
OU値を指定する場合、すべての証明書で同一のリストを使用する必要があります。net.tls.clusterAuthX509.extensionValueを設定することで、認証に使用する代替属性を指定できます。クラスター ノード設定には同じ
net.tls.clusterAuthX509.attributesを含み、一致する値を使用する必要があります。属性の順序は関係ありません。次の例えではOとOUを設定しますが、DCは設定しません。net: tls: clusterAuthX509: attributes: O=MongoDB, OU=MongoDB Server
注意
enforceUserClusterSeparationパラメータを false に設定した場合、次の動作が適用されます。
clusterAuthModeを X.509 を許可するオプションに設定することはできません。そうしないと、サーバーが起動しません。サーバーは、clusterAuthModeがkeyFileの場合にのみ起動します。クライアントは、クラスター メンバーシップ用にサーバーの構成済み属性と一致する
O/OU/DC属性を持つユーザーを$externalデータベースに作成できます。ノード証明書を提示するクライアントは、
$externalデータベースのユーザーとして MONGODB-X509 認証を試行できるようになりました。
enforceUserClusterSeparationパラメータをfalseに設定するには、起動時に次のコマンドを実行します。
mongod --setParameter enforceUserClusterSeparation=false
証明書には次の要件があります。
単一の認証局(CA)が、シャーディングされたクラスターまたはレプリカセットのノードに対してすべての X.509 証明書を発行する必要があります。
サブジェクト代替名 (
SAN) エントリの少なくとも 1 つは、他のクラスター ノードが使用するサーバー ホスト名と一致する必要があります。SANを比較する際に、MongoDB は DNS 名または IP アドレスのいずれかを比較できます。subjectAltNameを指定しない場合、 MongoDB は代わりに CN(Common Name、共通名)を比較します。ただし、CN のこの使用は RFC2818 に従って非推奨となります。certificateKeyFileとして使用される証明書にextendedKeyUsageが含まれており、サーバーにclusterFileが設定されていない場合、値にはclientAuth(「TLS Web クライアント認証」)とserverAuth(「TLS Web サーバー」)の両方を含める必要があります認証」)。サーバーでclusterFileが構成されている場合は、serverAuthのみが必要です。extendedKeyUsage = clientAuth, serverAuth clusterFileとして使用される証明書にextendedKeyUsageが含まれている場合、値にはclientAuthが含まれている必要があります。extendedKeyUsage = clientAuth
レプリカセット/シャーディングされたクラスターの構成
ローリング アップグレード手順以外では、レプリカセットまたはシャーディングされたクラスターのすべてのコンポーネントは、配置内の他のすべてのコンポーネントに安全に接続できるようにするために、同じ--clusterAuthMode 設定を使用する必要があります。
レプリカセットの配置の場合、これにはレプリカセットのすべてのmongodメンバーが含まれます。
シャーディングされたクラスターの配置の場合、これにはすべてのmongodまたはmongosインスタンスが含まれます。
注意
mongod と mongos は、デフォルトで localhost にバインドされます。配置のノードが異なるホスト上で実行されている場合、またはリモート クライアントを配置に接続する場合は、--bind_ip または net.bindIp を指定する必要があります。
コマンドライン オプション(tls)の使用
注意
このセクションの手順では、 tls設定/オプションを使用します。 非推奨のsslエイリアスの使用手順については、「コマンドライン オプションの使用( ssl )」を参照してください。
MongoDB では常に TLS 1.0 以降をサポートしているため、 tlsの設定/オプションはsslオプションと同じ機能を提供します。
mongod --replSet <name> --tlsMode requireTLS --clusterAuthMode x509 --tlsClusterFile <path to membership certificate and key PEM file> --tlsCertificateKeyFile <path to TLS/SSL certificate and key file> --tlsCAFile <path to root CA file> --bind_ip localhost,<hostname(s)|ip address(es)>
重要
X.509認証を使用するには、--tlsCertificateSelector または --net.tls.certificateSelector を使用している場合を除き、--tlsCAFile または net.tls.CAFile を指定する必要があります。
特定の構成に必要な追加オプション(TLS/SSL など)を含めます。 について
security: clusterAuthMode: x509 net: tls: mode: requireTLS certificateKeyFile: <path to its TLS/SSL certificate and key file> CAFile: <path to root CA PEM file to verify received certificate> clusterFile: <path to its certificate key file for membership authentication> bindIp: localhost,<hostname(s)|ip address(es)>
重要
X.509認証を使用するには、--tlsCertificateSelector または --net.tls.certificateSelector を使用している場合を除き、--tlsCAFile または net.tls.CAFile を指定する必要があります。
特定の構成に必要な追加オプション(TLS/SSL など)を含めます。
コマンドライン オプション(ssl)の使用
注意
このセクションの手順では、非推奨のssl設定とオプションを使用します。 tlsエイリアスの使用手順については、「コマンドライン オプションの使用( tls )」を参照してください。
MongoDB では常に TLS 1.0 以降をサポートしているため、 tlsの設定/オプションはsslオプションと同じ機能を提供します。
内部クラスター メンバー認証用に X.509 証明書を指定するには、レプリカセットのメンバーに対する次の例のように、追加の TLS/SSL オプション --clusterAuthMode と --sslClusterFile を追加します。
mongod --replSet <name> --sslMode requireSSL --clusterAuthMode x509 --sslClusterFile <path to membership certificate and key PEM file> --sslPEMKeyFile <path to TLS/SSL certificate and key PEM file> --sslCAFile <path to root CA PEM file> --bind_ip localhost,<hostname(s)|ip address(es)>
重要
X.509認証を使用するには、--tlsCertificateSelector または --net.tls.certificateSelector を使用している場合を除き、--tlsCAFile または net.tls.CAFile を指定する必要があります。
特定の構成に必要な追加オプション(TLS/SSL など)を含めます。
security: clusterAuthMode: x509 net: ssl: mode: requireSSL PEMKeyFile: <path to TLS/SSL certificate and key PEM file> CAFile: <path to root CA PEM file> clusterFile: <path to X.509 membership certificate and key PEM file> bindIp: localhost,<hostname(s)|ip address(es)>
重要
X.509認証を使用するには、--tlsCertificateSelector または --net.tls.certificateSelector を使用している場合を除き、--tlsCAFile または net.tls.CAFile を指定する必要があります。
特定の構成に必要な追加オプション(TLS/SSL など)を含めます。
詳細情報
鍵ファイルによる内部認証から X.509 内部認証にアップグレードするには、「 鍵ファイル認証から X. 認証へのアップグレード509 」を参照してください。
異なる を使用して新しい証明書に、証明書のローリングDN アップデートを実行するには、「 clusterAuthX を使用しない自己管理型クラスターの証明書のローテーション509 」を参照してください。