X.509 証明書を使用した自己管理型配置でのクライアントの認証
次の手順では、スタンドアロンの509 インスタンスでのクライアント認証用に X.mongod
証明書認証を設定します。これは、相互 TLS または mTLS とも呼ばれます。
レプリカセットまたはシャーディングされたクラスターに X.509 認証を使用するには、「 自己管理型MongoDBでのメンバーシップ認証に X. 証明書を使用 」を参照してください。509
前提条件
TLS/SSL、PKI(公開鍵暗号基盤)証明書、特に X.509 証明書と証明機関の詳細な説明は、このドキュメントの範囲外になります。このチュートリアルでは、TLS/SSL に関する事前の知識と、有効な X.509 証明書にアクセスできることを前提としています。
認証局
実稼働環境で使用する場合、MongoDB の配置には、認証局によって生成および署名された有効な証明書を使用する必要があります。ユーザーまたは組織は、独立した認証局を作成して維持することも、サードパーティの TLS ベンダーによって生成された証明書を使用することもできます。証明書の取得と管理については、このドキュメントの範囲外です。
X.509認証を使用するには、--tlsCertificateSelector
または --net.tls.certificateSelector
を使用している場合を除き、--tlsCAFile
または net.tls.CAFile
を指定する必要があります。
クライアント X.509 証明書
有効な X. 証明書が必要です。クライアントX.509509 証明書は、クライアント証明書の要件 を満たしている必要があります。
--tlsAllowInvalidCertificates
またはnet.tls.allowInvalidCertificates: true
を指定した場合、無効な証明書は TLS 接続を確立するには十分ですが、認証には不十分です。
手順
X.509 認証を使用したデプロイ
コマンドラインから X.mongod
認証用の インスタンスを構成できます。509
スタンドアロン mongod
インスタンスを設定するには、次のコマンドを実行します。
mongod --tlsMode requireTLS \ --tlsCertificateKeyFile <path to TLS/SSL certificate and key PEM file> \ --tlsCAFile <path to root CA PEM file> --bind_ip <hostnames>
構成に必要な追加オプションを含めます。
X.509 構成には次のものが必要です。
オプション | ノート |
---|---|
| |
クライアントに提示するインスタンスの X.509 証明書を指定します。 | |
インスタンスに提示された証明書を検証する認証局ファイルを指定します。 |
mongod
構成ファイルで、X.509 認証用に を構成できます。
スタンドアロンの mongod
インスタンスを構成するには、構成ファイルに次の設定オプションを追加します。
net: tls: mode: requireTLS certificateKeyFile: <path to TLS/SSL certificate and key PEM file> CAFile: <path to root CA PEM file>
構成に必要な追加オプションを含めます。
X.509 構成には次のものが必要です。
オプション | ノート |
---|---|
| |
クライアントに提示するインスタンスの X.509 証明書を指定します。 | |
インスタンスに提示された証明書を検証する認証局ファイルを指定します。 |
レプリカセットまたはシャーディングされたクラスターの X.509 認証を設定するには、「 自己管理型MongoDBでのメンバーシップ認証に X. 証明書を使用 」を参照してください。509
X.509 証明書subject
をユーザーとして追加する
クライアント証明書を使用して認証するには、まずMongoDBユーザーとしてクライアント証明書から subject
の値を $external
データベースに追加する必要があります。各一意の X.509クライアント証明書は、単一のMongoDBユーザーに対応します。 1 つのクライアント証明書を使用して複数のMongoDBユーザーを認証することはできません。
注意
ユーザー名の要件
$external
認証ユーザー(Kerberos、LDAP、または X.509 ユーザー)でクライアント セッションと因果整合性の保証を使用するには、ユーザー名を10 k バイトより大きくすることはできません。string の RDN
subject
は RFC と互換性がある必要があります 標準。2253
次のコマンドを使用して、クライアント証明書から
RFC2253
形式のsubject
を検索できます。openssl x509 -in <pathToClientPEM> -inform PEM -subject -nameopt RFC2253 このコマンドは、
subject
文字列と証明書を返します。subject= CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,C=myCountry -----BEGIN CERTIFICATE----- # ... -----END CERTIFICATE----- ユーザーとしての
subject
の対応値であるRFC2253
を追加します。必要に応じてスペースを省略します。次の例では、ユーザーを追加し、そのユーザーに
test
データベース内でのreadWrite
ロールとuserAdminAnyDatabase
ロールを付与します。db.getSiblingDB("$external").runCommand( { createUser: "CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,C=myCountry", roles: [ { role: "readWrite", db: "test" }, { role: "userAdminAnyDatabase", db: "admin" } ], writeConcern: { w: "majority" , wtimeout: 5000 } } ) ロールを有するユーザーを追加する方法の詳細については、「 自己管理型配置でのユーザーとロールの管理」を参照してください。
X.509 証明書での認証
X.509 クライアント証明書対象者に対応するMongoDBユーザーとして追加 したら、クライアント証明書を使用して認証できます。
接続中に認証するには、次のコマンドを実行します。
mongosh --tls --tlsCertificateKeyFile <path to client PEM file> \ --tlsCAFile <path to root CA PEM file> \ --authenticationDatabase '$external' \ --authenticationMechanism MONGODB-X509
オプション | ノート |
---|---|
クライアントの X.509ファイルを指定します。 | |
| |
| |
|
認証なしで接続し、接続後に db.auth()
メソッドを使用して認証することができます。
例えば、mongosh
を使用する場合、
mongosh --tls --tlsCertificateKeyFile <path to client PEM file> \ --tlsCAFile <path to root CA PEM file> オプションノートクライアントの X.509ファイルを指定します。
認証するには、
$external
データベースのdb.auth()
メソッドを使用します。mechanism
フィールドには、"MONGODB-X509"
を指定します。db.getSiblingDB("$external").auth( { mechanism: "MONGODB-X509" } )
次のステップ
レプリカセットまたはシャーディングされたクラスターに X.509 認証を使用するには、「 自己管理型MongoDBでのメンバーシップ認証に X. 証明書を使用 」を参照してください。509