Overview
注意
MONGODB-AWS 認証メカニズムは、MongoDB Atlas 上の MongoDB 配置で利用できます。
MONGODB-AWS認証メカニズムは、 Amazon Web Services Identity and Access Management(AWS IAM)認証情報を使用してユーザーを認証します。MongoDB Atlasの構成の詳細については、AWS IAM ロールを使用したパスワードレス認証の設定ガイドを参照してください。
この認証メカニズム を使用するようドライバーに指定するには、接続文字列のパラメーターとして、または MongoCredential.createAwsCredential() ファクトリー メソッドを使用して MONGODB-AWS を指定します。
コード プレースホルダー
このページのコード例では、次のプレースホルダーを使用します。
awsKeyId- Amazon Web ServicesアクセスキーIDの値awsSecretKey- Amazon Web Servicesシークレット アクセス キーの値atlasUri- MongoDB Atlas 配置のネットワークアドレスhostname- MongoDB Atlas 配置のホスト名port- MongoDB Atlas 配置のポートawsSessionToken- Amazon Web Servicesセッション トークンの値
Amazon Web Services SDK
認証情報を指定するには、 v1 または v2 用のAmazon Web Services SDK のいずれかを使用できます。Javaこのメソッドは、次の機能を提供します。
認証情報を取得するための複数のオプション
アプリケーションがレート制限を回避するのに役立つ認証情報キャッシュ
Elastic Kubernetes Service で使用するための認証情報プロバイダー管理。
MONGODB-AWS 認証にAmazon Web Services SDK for Javaを使用するには、次の手順を実行する必要があります。
認証メカニズムを指定する
SDK を依存関係としてプロジェクトに追加する
認証情報プロバイダー チェーンのいずれかの方法を使用して認証情報を提供する
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 Services SDK for Java v1 については、使用開始ガイドを参照してください。
注意
Amazon Web Services SDK for Java v2 の場合、 Javaドライバーは現在、software.amazon.awssdk:auth:2.30.31 依存関係を使用してテストしています。
Amazon Web Services SDK for Java v1 の場合、 Javaドライバーは現在、com.amazonaws:aws-java-sdk-core:1.12.782 依存関係を使用してテストしています。
認証情報を提供するには、必要なバージョンの次のAmazon Web Servicesドキュメントを参照してください。
ドライバーが認証情報を取得するために使用するJava v クラスのAmazon Web Services SDK2 の詳細については、 DefaultCredentialsProvider APIドキュメントを参照してください。
「 デフォルトの認証情報プロバイダー チェーンの使用 」セクションから、このクラスに認証情報を提供する方法について学びます。
ドライバーが認証情報を取得するために使用するJava v クラスのAmazon Web Services SDK1 の詳細については、 デフォルトの AWSCredentialsProviderCheckAPIを参照してください。
「 デフォルトの認証情報プロバイダー チェーンの使用 」セクションから、このクラスに認証情報を提供する方法について学びます。
注意
プロジェクトにAmazon Web Services SDK for Javaの v1 と v2 の両方を含める場合は、認証情報を提供するために v2 メソッドを使用する必要があります。
環境で認証情報を指定する
MONGODB-AWS 認証メカニズムを使用するようにドライバーに指示し、適切な環境変数を設定することで、 Amazon Web Services IAM 認証情報を提供できます。
環境変数を使用して認証情報を提供するには、次の操作を実行する必要があります。
認証メカニズムを指定する
適切な環境変数を追加する
認証メカニズムを指定するには、 接続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 で認証情報を指定する
Amazon Web Services IAM 認証情報を MongoCredentialインスタンスを使用して MongoClient に提供できます。 MONGODB-AWS認証用の MongoCredentialインスタンスを構築するには、 createAwsCredential() ファクトリー メソッドを使用します。
MongoCredential.createAwsCredential()メソッドにはプログラムによるアクセスキーのみを指定できます。 ECS または EC2 コンテナの認証情報を指定する必要がある場合は、「 環境またはAmazon Web Services SDK で認証情報を指定する 」の手順を使用します。
MONGODB-AWS認証にMongoCredentialを使用するには、次の操作を実行する必要があります。
認証メカニズムを指定する
認証情報を提供する
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 認証情報を提供する必要がある場合は、MongoClientSettings applyConnectionString() メソッドを呼び出すことで、それを に追加できます。
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)