x を使用します。自己管理型配置でクライアントを認証するための509証明書
次の手順では、x509 mongod
を設定します。スタンドアロンの インスタンスでのクライアント認証の 証明書認証。これは、相互 TLS または mTLS とも呼ばれます。
x を使用する場合レプリカセットまたはシャーディングされたクラスターの509認証については、「 x を使用する 」を参照してください。自己管理型 MongoDB によるメンバーシップ認証の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.509 証明書が必要です。クライアント x.509 証明書は、クライアント証明書の要件を満たしている必要があります。
--tlsAllowInvalidCertificates
またはnet.tls.allowInvalidCertificates: true
を指定した場合、無効な証明書は TLS 接続を確立するには十分ですが、認証には不十分です。
手順
x.509 認証を使用したデプロイ
コマンドラインから x.509 認証用の mongod
インスタンスを構成できます。
スタンドアロン 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 証明書を指定します。 | |
インスタンスに提示された証明書を検証する認証局ファイルを指定します。 |
構成ファイル 内で x.509 認証用に mongod
を構成できます。
スタンドアロンの 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認証については、「 x を使用する 」を参照してください。自己管理型 MongoDB によるメンバーシップ認証の509証明書。
x を追加します。509 subject
ユーザーとして を証明書
クライアント証明書を使用して認証するには、まず MongoDB ユーザーとしてクライアント証明書から subject
の値を $external
データベースに追加する必要があります。各一意の x.509 クライアント証明書は、単一の MongoDB ユーザーに対応します。1 つのクライアント証明書を使用して複数の MongoDB ユーザーを認証することはできません。
注意
ユーザー名の要件
$external
認証ユーザー(Kerberos、LDAP、または x.509 ユーザー)でクライアント セッションと因果整合性の保証を使用するには、ユーザー名を 10k バイトより大きくすることはできません。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認証については、「 x を使用する 」を参照してください。自己管理型 MongoDB によるメンバーシップ認証の509証明書。