Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/ / /
Java Sync Driver
/ /

Amazon Web Services ID とアクセス管理

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配置のポート

このページのコード例を使用するには、これらのプレースホルダーを独自の値に置き換えます。

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

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

重要

MONGODB-AWS 認証情報を提供するこの方法は、 Javaドライバー v4.8 以降でのみ使用できます。

認証情報を指定するには、次の機能を提供するJava用Amazon Web Services SDK の v1 または v2 を使用します。

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

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

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

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

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ドキュメントを参照してください。

  • AWS SDK for Java v2 については、 セットアップガイドを参照してください。

  • AWS 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ドキュメントを参照してください。

注意

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

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

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

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

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

接続文字列で 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 インスタンスのメタデータ エンドポイントから認証情報を取得します。

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

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

MONGODB-AWS認証に MongoCredential を使用するには、次のアクションを実行する必要があります。

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

  2. 認証情報を提供する

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ドキュメントを参照してください。

戻る

x.509

項目一覧