Docs Menu
Docs Home
/
データベース マニュアル
/ / /

自己管理型内部認証とメンバーシップ認証

レプリカセットシャーディングされたクラスターのノードが相互に認証するように要求できます。メンバーの内部認証にMongoDB はキーファイルまたはX.509 証明書のいずれかを使用できます。

選択した方法は、すべての内部通信に使用されます。 たとえば、クライアントがサポートされているmongos mongos認証メカニズム のいずれかを使用してmongod に対して認証を行うと、 は構成された内部認証方法を使用して必要な プロセスに接続します。

注意

内部認証 を有効にすると、クライアントの認可も有効になります。

キーファイル はSCRAMのチャレンジ レスポンス認証メカニズムを使用し、キーファイルにはメンバーの共有パスワードが含まれます。

キーの長さは 6 文字から 1024 文字の間で、base64 セット内の文字のみを含めることができます。 MongoDB は空白文字(例: x0dx09x20 )を使用して、複数のプラットフォームにまたがって使用します。 その結果、次の操作は同一のキーを生成します。

echo -e "mysecretkey" > key1
echo -e "my secret key" > key1
echo -e "my secret key\n" > key2
echo -e "my secret key" > key3
echo -e "my\r\nsecret\r\nkey\r\n" > key4

内部メンバーシップ認証用のキーファイル では、キーファイル内に複数のキーを含めるために YAML 形式が使用されます。 YAML 形式は次のいずれかを受け入れます。

  • 1 つのキー文字列(以前のバージョンと同じ)

  • キー文字列のシーケンス

YAML 形式は、テキストファイル形式を使用する既存の単一のキー キーファイルと互換性があります。

たとえば、

キーファイルに単一のキーが含まれている場合は、引用符の有無にかかわらず、キー string を指定できます。

my old secret key1

複数のキー文字列[ 1 ]をキー文字列のシーケンスとして指定できます(任意で引用符で囲む)。

- my old secret key1
- my new secret key2

ファイルに複数のキーを指定できるため、ダウンタイムなしでキーの順次アップグレードを行うことができます。 「自己管理型レプリカセットのキーのローテーション 」および「 自己管理型シャーディングされたクラスターのキーのローテーション 」を参照してください。

配置のすべてのmongodインスタンスとmongosインスタンスは、少なくとも 1 つの共通キーを共有する必要があります。

UNIX システムでは、キーファイルにグループ権限またはワールド権限があってはなりません。Windows システムでは、キーファイルの権限はチェックされません。

レプリカセットまたはシャーディングされたクラスターのノードをホストしている各サーバーにキー ファイルを保存する必要があります。

[1] MongoDB の 暗号化ストレージ エンジン の場合、ローカル キー管理に使用されるキーファイル には1つの キー しか含めることができません。

キーファイルを指定するには、 security.keyFile設定または--keyFileコマンドライン オプションを使用します。

キーファイルによる内部認証の例については、 「 キーファイル認証への自己管理型レプリカセットの更新 」を参照してください。

レプリカセットまたはシャーディングされたクラスターのノードは、キーファイルを使用する代わりに、X.509 証明書を内部認証に使用できます。これは、相互 TLS または mTLS とも呼ばれます。MongoDB は、安全な TLS/SSL 接続で使用するための X.509 証明書認証をサポートしています。

注意

MongoDB は、TLS 1.1 + が利用可能なシステムで TLS 1.0暗号化のサポートを無効にします。

TLSが有効になっている場合、メンバー証明書を使用して、シャーディングされたクラスターまたはレプリカセットの内部接続へのメンバーシップを検証します。net.tls.clusterFileおよびnet.tls.certificateKeyFileのオプションを使用して、メンバー証明書ファイルのパスを構成できます。メンバーには次の構成要件があります。

  • クラスター ノードの設定では、認証に使用される属性の少なくとも 1 つに空でない値を指定する必要があります。デフォルトで MongoDB は次のものを受け入れます。

    • 組織 (O)

    • 組織単位 (OU)

    • ドメインコンポーネント (DC)

    MongoDB は、エントリがすべてのノード証明書にわたって完全に一致することを確認します。複数の OU 値を指定する場合、すべての証明書で同一のリストを使用する必要があります。

    net.tls.clusterAuthX509.extensionValue を設定することで、認証に使用する代替属性を指定できます。

  • クラスター ノード設定には同じ net.tls.clusterAuthX509.attributes を含み、一致する値を使用する必要があります。属性の順序は関係ありません。次の例えでは OOU を設定しますが、 DC は設定しません。

    net:
    tls:
    clusterAuthX509:
    attributes: O=MongoDB, OU=MongoDB Server

注意

enforceUserClusterSeparation パラメータを false に設定すると、次の動作が適用されます。

  • clusterAuthMode を X.509 を許可するオプションに設定することはできません。そうしないと、サーバーが起動しません。サーバーは、clusterAuthModekeyFile の場合にのみ起動します。

  • クライアントは、クラスター$external O/OU/DCメンバーシップ用にサーバーの構成済み属性と一致するユーザーを データベースに作成できます。

  • ノード証明書を提示するクライアントは、 データベースのユーザーとして MONGODB-X509$external 認証を試行できるようになりました。

enforceUserClusterSeparationパラメータをfalseに設定するには、起動時に次のコマンドを実行します。

mongod --setParameter enforceUserClusterSeparation=false

証明書には次の要件があります。

  • 単一の認証局(CA)が、シャーディングされたクラスターまたはレプリカセットのノードに対してすべての X.509 証明書を発行する必要があります。

  • サブジェクト代替名 (SAN) エントリの少なくとも 1 つは、他のクラスター ノードが使用するサーバー ホスト名と一致する必要があります。SAN を比較する際に、MongoDB は DNS 名または IP アドレスのいずれかを比較できます。

    subjectAltNameを指定しない場合、MongoDB は代わりに共通名(CN)を比較します。 ただし、CN のこの使用は RFC に従って非推奨となります。2818

  • certificateKeyFile として使用される証明書に extendedKeyUsage が含まれている場合、値には clientAuth(「TLS Web クライアント認証」)と serverAuth(「TLS Web サーバー認証」)の両方を含める必要があります。

    extendedKeyUsage = clientAuth, serverAuth
  • clusterFile として使用される証明書に extendedKeyUsage が含まれている場合、値には clientAuth が含まれている必要があります。

    extendedKeyUsage = clientAuth

TLS は、レプリカセットの各ノード(各 mongod インスタンス)間、またはシャーディングされたクラスター(各 mongod インスタンスと mongos インスタンス)間の認証に使用できます。

内部認証に TLS を使用するには、次の設定を使用します。

重要

--tlsModedisabled以外の値に設定した場合、MongoDB では内部レプリカセット接続のサーバーとクライアント認証の両方に net.tls.certificateKeyFileで指定された証明書が使用されます。この証明書設定は、security.clusterAuthModeX.509 に設定されているかどうかに関係なく適用されます。

mongodインスタンスとmongosインスタンスは証明書鍵ファイルを使用してクライアントに ID を証明しますが、証明書鍵ファイルはメンバーシップ認証に使用することもできます。 クラスター ファイルを指定しない場合、メンバーはメンバーシップ認証に証明書鍵ファイルを使用します。 net.tls.certificateKeyFileまたは--tlsCertificateKeyFileを使用して証明書鍵ファイルを指定します。

証明書キーファイルをクライアント認証とメンバーシップ認証の両方に使用するには、証明書は次のいずれかを行う必要があります。

  • extendedKeyUsage を省略する、または

  • 特定 extendedKeyUsage = serverAuth, clientAuth

X.509 内部認証の例については、自己管理型MongoDBでのメンバーシップ認証に X.509 証明書を使用 を参照してください。

鍵ファイルによる内部認証から X.509 内部認証にアップグレードするには、「 自己管理型MongoDB を鍵ファイル認証から X. 認証にアップグレードする509 」を参照してください。

戻る

Workload Identity Federation によるユーザーの認証

項目一覧