Docs Menu
Docs Home
/ / /
Kotlin コルーチン
/

認証メカニズム

項目一覧

  • Overview
  • 認証メカニズムを指定する
  • メカニズム
  • default
  • SCRAM-SHA-256
  • SCRAM-SHA-1
  • MONGODB-CR
  • MONGODB-AWS
  • X.509

このガイドでは、MongoDB Community Edition で利用可能な各認証メカニズムを使用して MongoDB で 認証 する方法を説明します。 認証メカニズムは、ドライバーとサーバーが ID を確認し、信頼を確立してセキュリティを確保するためのプロセスです。

MongoDB Community Edition の最新バージョンで使用できるメカニズムは次のとおりです。

  • default

  • SCRAM-SHA-256

  • SCRAM-SHA-1

  • MONGODB-CR

  • MongoDB-AWS

  • x.509

KerberosまたはLDAPを使用して認証するには、 エンタープライズ認証メカニズムのガイドを参照してください。

MongoDB クラスターへの接続を確立する方法の詳細については、接続ガイド をお読みください。

次のいずれかを使用して MongoDB に接続するときに、認証メカニズムと認証情報を指定できます。

  • 接続string

  • MongoCredentialファクトリー メソッド

接続string接続 URIとも呼ばれます)は、 MongoDBクラスターへの接続と認証の方法を指定します。

接続文字列 を使用して認証するには、接続string stringに設定を含め、それを MongoClient.create() メソッドに渡して MongoClient をインスタンス化します。 Connection String各セクションの {2 タブには、 接続string を使用して認証するための構文が記載されています。

あるいは、 MongoCredentialクラスを使用して認証の詳細を指定することもできます。 MongoCredentialクラスには、認証メカニズムと認証情報を含む インスタンスを構築する静的ファクトリー メソッドが含まれています。 MongoCredentialヘルパー クラスを使用する場合は、 MongoClientの構築時に接続設定を構成するためにMongoClientSettings.Builderクラスを使用する必要があります。 各セクションのMongoCredentialタブには、 MongoCredentialを使用して認証するための構文が記載されています。

これらのクラスとメソッドの詳細については、次の API ドキュメントを参照してください。

デフォルトの認証メカニズム設定では、MongoDB サーバーがサポートする内容に応じて、次のいずれかの認証メカニズムが使用されます。

  1. SCRAM-SHA-256

  2. SCRAM-SHA-1

  3. MONGODB-CR

サーバー バージョン 3.6 以前では、デフォルト メカニズムとしてMONGODB-CRが使用されています。 新しいバージョンのサーバーは、サポートを広告するメカニズムの 1 つを使用します。

次のコード スニペットは、次のプレースホルダーを使用して認証メカニズムを指定する方法を示しています。

  • db_username - MongoDB database のユーザー名

  • db_password - MongoDB database ユーザーのパスワード

  • hostname - クライアントからアクセス可能な MongoDB サーバーのネットワーク アドレス

  • port - MongoDB サーバーのポート番号

  • authenticationDb - ユーザーの認証データが含まれる MongoDB database。 このパラメータを省略すると、ドライバーはデフォルト値のadminを使用します。

この認証メカニズムを指定するための手順とサンプル コードについては、以下の [ ] タブまたは [Connection String ] タブを選択してください。MongoCredential

接続stringを使用してデフォルトの認証メカニズムを指定するには、 メカニズムを省略します。 MongoClientをインスタンス化するコードは次のようになります。

val mongoClient =
MongoClient.create("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>")

MongoCredentialクラスを使用してデフォルトの認証メカニズムを指定するには、 createCredential()メソッドを使用します。 MongoClientをインスタンス化するコードは次のようになります。

val credential = MongoCredential.createCredential(
"<db_username>", "<authenticationDb>", "<db_password>".toCharArray()
)
val settings = MongoClientSettings.builder()
.applyToClusterSettings { builder: ClusterSettings.Builder ->
builder.hosts(
listOf(ServerAddress("<hostname>", "<port>"))
)
}
.credential(credential)
.build()
val mongoClient = MongoClient.create(settings)

MongoDB がサポートするチャレンジ レスポンス (CR) および Salted Challenge Response 認証メカニズム (SCRAM) の詳細については、サーバー マニュアルの「 SCRAM 」セクションを参照してください。

注意

SCRAM-SHA-256 は、MongoDB 4.0 以降の MongoDB のデフォルトの認証方法です。

SCRAM-SHA-256 は、 SHA-256アルゴリズムで暗号化されたユーザー名とパスワードを使用してユーザーを認証する、Salted Challenge Response 認証メカニズム(SCRAM)です。

次のコード スニペットは、次のプレースホルダーを使用して認証メカニズムを指定する方法を示しています。

  • db_username - MongoDB database のユーザー名。

  • db_password - MongoDB database ユーザーのパスワード。

  • hostname - クライアントからアクセス可能な MongoDB サーバーのネットワーク アドレス。

  • port - MongoDB サーバーのポート番号。

  • authenticationDb - ユーザーの認証データが含まれる MongoDB database。 このパラメータを省略すると、ドライバーはデフォルト値のadminを使用します。

この認証メカニズムを指定するための手順とサンプル コードについては、以下の [ ] タブまたは [Connection String ] タブを選択してください。MongoCredential

接続文字列 を使用して SCRAM-SHA-256 認証メカニズムを指定するには、 接続stringで、authMechanism パラメータに値 SCRAM-SHA-256 を割り当てstring 。 MongoClientをインスタンス化するコードは次のようになります。

val mongoClient =
MongoClient.create("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>&authMechanism=SCRAM-SHA-256")

MongoCredentialクラスを使用してデフォルトの認証メカニズムを指定するには、 createScrimSha256 Credential() を使用します 使用して複数のドキュメントを挿入できます。MongoClientをインスタンス化するコードは次のようになります。

val credential = MongoCredential.createScramSha256Credential(
"<db_username>", "<authenticationDb>", "<db_password>".toCharArray()
)
val settings = MongoClientSettings.builder()
.applyToClusterSettings { builder: ClusterSettings.Builder ->
builder.hosts(
listOf(ServerAddress("<hostname>", "<port>"))
)
}
.credential(credential)
.build()
val mongoClient = MongoClient.create(settings)

注意

SCRAM-SHA-1 は、MongoDB バージョン 3.0、3.2、3.4、および 3.6 のデフォルトの認証方法です。

SCRAM-SHA-1 は、 SHA-1アルゴリズムで暗号化されたユーザー名とパスワードを使用してユーザーを認証する、Salted Challenge Response Authentication Mechanism(SCRAM)です。

次のコード スニペットは、次のプレースホルダーを使用して認証メカニズムを指定する方法を示しています。

  • db_username - MongoDB database のユーザー名。

  • db_password - MongoDB database ユーザーのパスワード。

  • hostname - クライアントからアクセス可能な MongoDB サーバーのネットワーク アドレス。

  • port - MongoDB サーバーのポート番号。

  • authenticationDb - ユーザーの認証データが含まれる MongoDB database。 このパラメータを省略すると、ドライバーはデフォルト値のadminを使用します。

この認証メカニズムを指定するための手順とサンプル コードについては、以下の [ ] タブまたは [Connection String ] タブを選択してください。MongoCredential

接続文字列 を使用して SCRAM-SHA-1 認証メカニズムを指定するには、 接続stringで、authMechanism パラメータに値 SCRAM-SHA-1 を割り当てstring 。 MongoClientをインスタンス化するコードは次のようになります。

val mongoClient =
MongoClient.create("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>&authMechanism=SCRAM-SHA-1")

MongoCredentialクラスを使用してデフォルトの認証メカニズムを指定するには、 createScrimSha1 Credential() を使用します 使用して複数のドキュメントを挿入できます。MongoClientをインスタンス化するコードは次のようになります。

val credential = MongoCredential.createScramSha1Credential(
"<db_username>", "<authenticationDb>", "<db_password>".toCharArray()
)
val settings = MongoClientSettings.builder()
.applyToClusterSettings { builder: ClusterSettings.Builder ->
builder.hosts(
listOf(ServerAddress("<hostname>", "<port>"))
)
}
.credential(credential)
.build()
val mongoClient = MongoClient.create(settings)

MONGODB-CR ユーザー名とパスワードを使用してユーザーを認証するチャレンジレスポンスタイプの認証メカニズムです。 この認証メカニズムは MongoDB 3.6 以降、非推奨となり、MongoDB 4.0 ではサポートされなくなりました。

このメソッドを明示的に指定することはできません。 MONGODB-CRを使用して接続するには、デフォルトの認証メカニズムが提供するフォールバックを参照してください。

注意

MONGODB-AWS 認証メカニズムは、MongoDB Atlas 上の MongoDB 配置で利用できます。

MONGODB-AWS 認証メカニズムは、 Amazon Web Services Identity and Access Management( Amazon Web Services IAM)認証情報を使用してユーザーを認証します。 MongoDB Atlasの設定の詳細については、「 Amazon Web Services IAM ロールを使用したパスワードレス認証の設定 」ガイドを参照してください。

この認証メカニズムを使用するようにドライバーに指示するには、接続stringのパラメーターとして、または MongoCredential.createAwsCredential() ファクトリー メソッドを使用して MONGODB-AWS を指定できます。

この認証メカニズムを指定する方法と、 Amazon Web Services IAM 認証情報を提供するためのさまざまな方法については、次のセクションを参照してください。

これらのセクションには、次のプレースホルダーを使用するコード例が含まれています。

  • awsKeyId - Amazon Web ServicesアクセスキーIDの値

  • awsSecretKey - Amazon Web Servicesシークレット アクセス キーの値

  • atlasUri - MongoDB Atlas 配置のネットワークアドレス

  • hostname - MongoDB Atlas 配置のホスト名

  • port - MongoDB Atlas 配置のポート

  • awsSessionToken - Amazon Web Servicesセッション トークンの値

認証情報を指定するには、 v1 または v2 用のAmazon Web Services SDK のいずれかを使用できます。Javaこのメソッドは、次の機能を提供します。

MONGODB-AWS 認証にAmazon Web Services SDK for Javaを使用するには、次の手順を実行する必要があります。

  1. 認証メカニズムを指定する

  2. SDK を依存関係としてプロジェクトに追加する

  3. 認証情報プロバイダー チェーンのいずれかの方法を使用して認証情報を提供する

MongoCredentialを使用して認証メカニズムを指定するには、 MongoCredential.createAwsCredential()ファクトリー メソッドを使用し、次の例に示すようにMongoCredentialインスタンスをMongoClientに追加します。

val credential = MongoCredential.createAwsCredential(null, null)
val settings = MongoClientSettings.builder()
.applyToClusterSettings { builder: ClusterSettings.Builder ->
builder.hosts(
listOf(ServerAddress("<atlasUri>"))
)
}
.credential(credential)
.build()
val mongoClient = MongoClient.create(settings)

接続stringで認証メカニズムを指定するには、次の例に示すように、それをパラメーターとして追加します。

val mongoClient =
MongoClient.create("mongodb://<atlasUri>?authMechanism=MONGODB-AWS")

Amazon Web Services SDK を依存関係としてプロジェクトに追加するには、必要なバージョンの次のAmazon Web Servicesドキュメントを参照してください。

  • Amazon Web ServicesSDK forJava v2 については、 設定 を参照してください ガイドを参照してください。

  • Amazon Web ServicesSDK forJava v1 については、 はじめ に を参照してください。 ガイドを参照してください。

注意

Amazon Web Services SDK for Java v2 の場合、 Javaドライバーは現在、software.amazon.awssdk:auth:2.18.9 依存関係を使用してテストしています。

Amazon Web Services SDK for Java v1 の場合、 Javaドライバーは現在、com.amazonaws:aws-java-sdk-core:1.12.337 依存関係を使用してテストしています。

認証情報を提供するには、必要なバージョンの次のAmazon Web Servicesドキュメントを参照してください。

注意

プロジェクトにAmazon Web Services SDK for Javaの v1 と v2 の両方を含める場合は、認証情報を提供するために v2 メソッドを使用する必要があります。

MONGODB-AWS 認証メカニズムを使用するようにドライバーに指示し、適切な環境変数を設定することで、 Amazon Web Services IAM 認証情報を提供できます。

環境変数を使用して認証情報を提供するには、次の操作を実行する必要があります。

  1. 認証メカニズムを指定する

  2. 適切な環境変数を追加する

認証メカニズムを指定するには、 接続stringで MongoCredential または を使用します。

MongoCredentialを使用して認証メカニズムを指定するには、 MongoCredential.createAwsCredential()ファクトリー メソッドを使用し、次の例に示すようにMongoCredentialインスタンスをMongoClientに追加します。

val credential = MongoCredential.createAwsCredential(null, null)
val settings = MongoClientSettings.builder()
.applyToClusterSettings { builder: ClusterSettings.Builder ->
builder.hosts(
listOf(ServerAddress("<atlasUri>"))
)
}
.credential(credential)
.build()
val mongoClient = MongoClient.create(settings)

接続stringで認証メカニズムを指定するには、次の例に示すように、それをパラメーターとして追加します。

val mongoClient =
MongoClient.create("mongodb://<atlasUri>?authMechanism=MONGODB-AWS")

次の例では、次のタイプの認証の環境変数を設定して認証情報を提供する方法を示します。

  • プログラムによるアクセス キー

  • ECS コンテナの認証情報

  • EC2 コンテナの認証情報

次の例は、 bashまたは同様の shell を使用して、環境変数にプログラムによるアクセス キーを設定する方法を示しています。

export AWS_ACCESS_KEY_ID=<awsKeyId>
export AWS_SECRET_ACCESS_KEY=<awsSecretKey>
export AWS_SESSION_TOKEN=<awsSessionToken>

そのロールにAmazon Web Servicesのセッショントークンが必要ない場合は、AWS_SESSION_TOKEN を含む行を省略します。

ECS コンテナ認証情報を使用して認証するには、次の例に示すように、 bashまたは同様の shell を使用して、環境変数に ECS エンドポイントの相対的 URI を設定します。

export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<your ECS endpoint>

EC2 コンテナの認証情報を使用して認証するには、前述の環境変数がいずれも設定されていないことを確認してください。 ドライバーは、デフォルトの IPv4 EC2 インスタンスのメタデータ エンドポイントから認証情報を取得します。

MongoCredential インスタンスを使用して、MongoClient にAmazon Web Services IAM 認証情報を提供できます。 MongoCredential認証用のMONGODB-AWS インスタンスを構築するには、 createAwsCredential() ファクトリー メソッド。

MongoCredential.createAwsCredential()メソッドにはプログラムによるアクセスキーのみを指定できます。 ECS または EC2 コンテナの認証情報を指定する必要がある場合は、「 環境またはAmazon Web Services SDK で認証情報を指定する 」の手順を使用します。

MONGODB-AWS認証にMongoCredentialを使用するには、次の操作を実行する必要があります。

  1. 認証メカニズムを指定する

  2. 認証情報を提供する

MongoCredentialを使用して認証メカニズムを指定するには、 MongoCredential.createAwsCredential()ファクトリー メソッドを使用し、次の例に示すようにMongoCredentialインスタンスをMongoClientに追加します。

val credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray())
val settings = MongoClientSettings.builder()
.applyToClusterSettings { builder: ClusterSettings.Builder ->
builder.hosts(
listOf(ServerAddress("<atlasUri>"))
)
}
.credential(credential)
.build()
val mongoClient = MongoClient.create(settings)

Amazon Web Servicesセッション トークンを指定する必要がある場合は、それを withMechanismProperty() メソッド に 次の例に示すように、メソッドを使用します。

val credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray())
.withMechanismProperty("AWS_SESSION_TOKEN", "<awsSessionToken>")
val settings = MongoClientSettings.builder()
.applyToClusterSettings { builder: ClusterSettings.Builder ->
builder.hosts(
listOf(ServerAddress("<atlasUri>"))
)
}
.credential(credential)
.build()
val mongoClient = MongoClient.create(settings)

認証情報を更新するには、次の例に示すように、新しい認証情報を返す Supplier Lambda式を宣言します。

val awsFreshCredentialSupplier: Supplier<AwsCredential> = Supplier {
// Add your code here to fetch new credentials
// Return the new credentials
AwsCredential("<awsKeyId>", "<awsSecretKey>", "<awsSessionToken>")
}
val credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray())
.withMechanismProperty(MongoCredential.AWS_CREDENTIAL_PROVIDER_KEY, awsFreshCredentialSupplier)
val settings = MongoClientSettings.builder()
.applyToClusterSettings { builder ->
builder.hosts(listOf(ServerAddress("<hostname>", "<port>")))
}
.credential(credential)
.build()
val mongoClient = MongoClient.create(settings)

Amazon Web Services接続 で IAM 認証情報を提供する必要がある場合は、string MongoClientSettingsapplyConnectionString() メソッドを呼び出して に追加できます。 メソッド:

val credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray())
val connectionString = ConnectionString("mongodb://<atlasUri>/?authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<awsSessionToken>")
val settings = MongoClientSettings.builder()
.applyConnectionString(connectionString)
.credential(credential)
.build()
val mongoClient = MongoClient.create(settings)

X.509認証メカニズムは TLS を使用する X.509 証明書と併用して、クライアント証明書の相対的識別名(RDN)によって識別されるユーザーを認証できます。X.509認証メカニズムを指定すると、サーバーはクライアント証明書のサブジェクト名を使用して接続を認証します。

次のコード スニペットは、次のプレースホルダーを使用して認証メカニズムを指定する方法を示しています。

  • hostname - クライアントからアクセス可能な MongoDB サーバーのネットワーク アドレス。

  • port - MongoDB サーバーのポート番号。

  • authenticationDb - ユーザーの認証データが含まれる MongoDB database。 このパラメータを省略すると、ドライバーはデフォルト値のadminを使用します。

この認証メカニズムを指定するための手順とサンプル コードについては、以下の [ ] タブまたは [Connection String ] タブを選択してください。MongoCredential

接続stringを使用して X.509 認証メカニズムを指定するには、authMechanism パラメータに値 MONGODB-X509 を割り当て、tls パラメータに true 値を割り当てて TLS を有効にします。 MongoClientをインスタンス化するコードは次のようになります。

val mongoClient =
MongoClient.create("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>&authMechanism=MONGODB-X509&tls=true")

クラスを使用して 認証メカニズムを指定するには、 createMongoX509 認証情報() X.509を使用しますMongoCredential 使用して複数のドキュメントを挿入できます。また、 applyToSslSettings() メソッド を呼び出して TLS を有効にしますenabled メソッドを使用して、true SslSettings.Builder で プロパティを に設定する。 ブロック。MongoClientをインスタンス化するコードは次のようになります。

val credential = MongoCredential.createMongoX509Credential()
val settings = MongoClientSettings.builder()
.applyToClusterSettings { builder ->
builder.hosts(listOf(
ServerAddress("<hostname>", "<port>"))
)
}
.applyToSslSettings { builder ->
builder.enabled(true)
}
.credential(credential)
.build()
val mongoClient = MongoClient.create(settings)

証明書と TLS/SSL オプションを使用するようにアプリケーションを構成する方法の詳細については、 TLS/SSL ガイド を参照してください。

戻る

SOCKS5 プロキシ接続