Overview
MONGODB-AWS
認証メカニズムは、 Amazon Web Services Identity and Access Management(Amazon Web Services IAM)認証情報を使用してMongoDBに対してユーザーを認証します。 このメカニズムは、 MongoDB Atlasに認証するときにのみ使用できます。
MongoDB Atlas をAmazon Web Services IAM認証用に構成する方法の詳細については、Atlas ドキュメントの 「Amazon Web Services IAM による認証の設定 」を参照してください。
注意
Amazon Web Services SDK テスト
MONGODB-AWS
は、Amazon Web Services SDK のバージョン 2.30.31 と 1.12.782 でテストされています。
コード プレースホルダー
このページのコード例では、次のプレースホルダーを使用します。
<awsKeyId>
: Amazon Web ServicesアクセスキーID<atlasUri>
: MongoDB Atlas配置のネットワークアドレス<awsSecretKey>
: Amazon Web Servicesシークレット アクセスキー<awsSessionToken>
: Amazon Web Servicesセッション トークン<hostname>
: MongoDB Atlas配置のホスト名<port>
: MongoDB Atlas配置のポート
このページのコード例を使用するには、これらのプレースホルダーを独自の値に置き換えます。
MONGODB- AWS認証の指定
この認証メカニズムを使用するようにドライバーに指示するには、接続stringのパラメーターとして、または MongoCredential.createAwsCredential()
ファクトリー メソッドを使用して MONGODB-AWS
を指定できます。
このセクションでは、この認証メカニズムを指定する方法と、 Amazon Web Services IAM 認証情報を提供するためのさまざまな方法について説明します。
Java用のAmazon Web Services SDK を使用
重要
MONGODB-AWS
認証情報を提供するこの方法は、 Javaドライバー v4.8 以降でのみ使用できます。
認証情報を指定するには、次の機能を提供するJava用Amazon Web Services SDK の v1 または v2 を使用します。
認証情報を取得するための複数のオプション
アプリケーションがレート制限を回避するのに役立つ認証情報キャッシュ
MONGODB-AWS
認証にAmazon Web Services SDK for Javaを使用するには、次のアクションを実行する必要があります。
認証メカニズムを指定する
SDK を依存関係としてプロジェクトに追加する
認証情報プロバイダー チェーンのいずれかの方法を使用して認証情報を提供する
MongoCredential
を使用して認証メカニズムを指定するには、 MongoCredential.createAwsCredential()
ファクトリー メソッドを使用し、次の例に示すようにMongoCredential
インスタンスをMongoClient
に追加します。
MongoCredential credential = MongoCredential.createAwsCredential(null, null); // Creates a MongoClient that receives configuration information from a MongoCredential and environment variables MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Arrays.asList(new ServerAddress("<hostname>")))) .credential(credential) .build());
接続stringで認証メカニズムを指定するには、次の例に示すように、それをパラメーターとして追加します。
MongoClient mongoClient = MongoClients.create("mongodb://<atlasUri>?authMechanism=MONGODB-AWS");
Amazon Web Services SDK を依存関係としてプロジェクトに追加するには、必要なバージョンの次のAmazon Web Servicesドキュメントを参照してください。
注意
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 v2 クラスの詳細については、 AWS APIドキュメントを参照してください。
「 デフォルトの認証情報プロバイダー チェーンの使用 」セクションから、このクラスに認証情報を提供する方法について学びます。
ドライバーが認証情報を取得するために使用するJava v1 クラスの詳細については、 デフォルトのAWS APIドキュメントを参照してください。
「 デフォルトの認証情報プロバイダー チェーンの使用 」セクションから、このクラスに認証情報を提供する方法について学びます。
注意
プロジェクトにAmazon Web Services SDK for Javaの v1 と v2 の両方を含める場合は、認証情報を提供するために v2 メソッドを使用する必要があります。
環境変数を使用する
MONGODB-AWS
認証メカニズムを使用するようにドライバーに指示し、適切な環境変数を設定することで、 Amazon Web Services IAM 認証情報を提供できます。
環境変数を使用して認証情報を提供するには、次のアクションを実行する必要があります。
認証メカニズムを指定する
適切な環境変数を追加する
接続文字列で MongoCredential
または を使用して認証メカニズムを指定できます。
MongoCredential
を使用して認証メカニズムを指定するには、 MongoCredential.createAwsCredential()
ファクトリー メソッドを使用し、次の例に示すようにMongoCredential
インスタンスをMongoClient
に追加します。
MongoCredential credential = MongoCredential.createAwsCredential(null, null); // Creates a MongoClient that receives configuration information from a MongoCredential and environment variables MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Arrays.asList(new ServerAddress("<hostname>")))) .credential(credential) .build());
接続stringで認証メカニズムを指定するには、次の例に示すように、それをパラメーターとして追加します。
MongoClient mongoClient = MongoClients.create("mongodb://<atlasUri>?authMechanism=MONGODB-AWS");
また、環境変数を設定して、次のタイプの認証を有効にすることもできます。
プログラムによるアクセス キー
Web ID プロバイダー
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
を含む行を省略します。
OpenID Connect(OIDC)互換のWeb ID プロバイダーを使用して、Amazon Elastic Kubernetes Service(EKS)またはその他のサービスを認証できます。
重要
プロジェクトには、Web IdP を使用して認証するためのAmazon Web Services SDK の v1 または v2 を依存関係として含める必要があります。
Web ID プロバイダーを使用するには、OIDC トークンを含む ファイルを作成します。 次に、次の例に示すように、 bash
または同様の shell を使用して、環境変数をこのファイルへの絶対パスに設定します。
export AWS_WEB_IDENTITY_TOKEN_FILE=<absolute path to file containing your OIDC 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 コンテナの認証情報を指定する必要がある場合は、「 環境変数の使用 」または「 Java用のAmazon Web Services SDK の使用 」セクションの手順を使用します。
MONGODB-AWS
認証に MongoCredential
を使用するには、次のアクションを実行する必要があります。
認証メカニズムを指定する
認証情報を提供する
MongoCredential
を使用して認証メカニズムを指定するには、 MongoCredential.createAwsCredential()
ファクトリー メソッドを使用し、次の例に示すようにMongoCredential
インスタンスをMongoClient
に追加します。
MongoCredential credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray()); // Creates a MongoClient that receives AWS credentials from the MongoCredential instance MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Arrays.asList(new ServerAddress("<hostname>")))) .credential(credential) .build());
AWSセッショントークンを指定する必要がある場合は、次の例に示すように、それを withMechanismProperty() メソッドに渡します。
MongoCredential credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray()).withMechanismProperty("AWS_SESSION_TOKEN", "<awsSessionToken>"); // Creates a MongoClient that receives configuration information from a MongoCredential instance MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Arrays.asList(new ServerAddress("<hostname>")))) .credential(credential) .build());
認証情報を更新するには、次の例に示すように、新しい認証情報を返す Supplier
Lambda式を宣言します。
Supplier<AwsCredential> awsFreshCredentialSupplier = () -> { // Add your code to fetch new credentials return new AwsCredential("<awsKeyId>", "<awsSecretKey>", "<awsSessionToken>"); }; // Creates a MongoCredential instance to specify the new AWS credentials MongoCredential credential = MongoCredential.createAwsCredential(null, null) .withMechanismProperty(MongoCredential.AWS_CREDENTIAL_PROVIDER_KEY, awsFreshCredentialSupplier); // Creates a MongoClient that receives new configuration information from a MongoCredential instance MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Collections.singletonList(new ServerAddress("<hostname>", <port>)))) .credential(credential) .build());
注意
接続文字列でAmazon Web Services IAM 認証情報を提供する必要がある場合は、 v4.7 またはそれ以前のJavaドライバーのドキュメントを参照してください。
API ドキュメント
このページで説明するメソッドやタイプの詳細については、次のAPIドキュメントを参照してください。