Overview
MONGODB-AWS
認証メカニズムは、 Amazon Web Services Identity and Access Management(Amazon Web Services IAM)認証情報を使用してMongoDBに対してユーザーを認証します。 このメカニズムは、 MongoDB Atlasに認証するときにのみ使用できます。
Tip
Amazon Web Services IAM 認証のための Atlas の設定
MongoDB Atlas をAmazon Web Services IAM認証用に構成する方法の詳細については、Atlas ドキュメントの 「Amazon Web Services IAM による認証の設定 」を参照してください。
MONGODB- AWS認証の指定
MONGODB-AWS
認証メカニズムは、Amazon Web Services Identity and Access Management (AWS IAM) 認証情報を使用してユーザーを認証します。AWS 署名ライブラリをまだ持っていない場合は、次の npm
コマンドを使用してインストールします。
npm install aws4
MONGODB-AWS
認証が有効な状態の MongoDB インスタンスに接続するには、MONGODB-AWS
認証メカニズムを指定します。
ドライバーは、次のソースで認証情報を順番に確認します。
接続文字列
環境変数
Web ID トークン ファイル
次の場所で指定されたAWS ECSエンドポイント:
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
Amazon Web Services EC2 エンドポイント。 詳しくは、「 タスクの IAM ロール 」を 参照してください。 。
重要
ドライバーは、前述のリストで指定された順序で、最初に検出した方法からのみ認証情報を読み取ります。たとえば、接続文字列で AWS 認証情報を指定すると、ドライバーは環境変数で指定した認証情報を無視します。
接続文字列を使用して MongoDB インスタンスに接続するには、接続時に認証情報 AWS_ACCESS_KEY_ID
と AWS_SECRET_ACCESS_KEY
をドライバーに渡します。AWS ログインにセッション トークンが必要な場合は、AWS_SESSION_TOKEN
も含めます。
次は、接続文字列で MONGODB-AWS
認証メカニズムと認証情報を指定するコード例です。
重要
正しく解析されるようにするには、encodeURIComponent
メソッドを使用して、ユーザー名と証明書ファイルのパスを常に URI エンコードします。
const { MongoClient } = require("mongodb"); // Replace the following with values for your environment. const accessKeyId = encodeURIComponent("<AWS_ACCESS_KEY_ID>"); const secretAccessKey = encodeURIComponent("<AWS_SECRET_ACCESS_KEY>"); const clusterUrl = "<cluster_url>"; const authMechanism = "MONGODB-AWS"; let uri = `mongodb+srv://${accessKeyId}:${secretAccessKey}@${clusterUrl}/?authSource=%24external&authMechanism=${authMechanism}`; // Uncomment the following lines if your AWS authentication setup requires a session token. // const sessionToken = encodeURIComponent("<AWS_SESSION_TOKEN>"); // uri = uri.concat(`&authMechanismProperties=AWS_SESSION_TOKEN:${sessionToken}`); // Create a new MongoClient. const client = new MongoClient(uri); async function run() { try { // Establish and verify connection. await client.db("admin").command({ ping: 1 }); console.log("Connected successfully to server."); } finally { // Ensure that the client closes when it finishes/errors. await client.close(); } } run().catch(console.dir);
MongoDBAmazon Web Services環境変数に保存されている の認証情報を使用して インスタンスに対して認証するには、shell を使用して次の変数を設定します。
export AWS_ACCESS_KEY_ID=<awsKeyId> export AWS_SECRET_ACCESS_KEY=<awsSecretKey> export AWS_SESSION_TOKEN=<awsSessionToken>
注意
そのロールにAmazon Web Servicesのセッショントークンが必要ない場合は、AWS_SESSION_TOKEN
を含む行を省略します。
AWS は、レイテンシを低減し、組み込みの冗長性を向上させ、セッショントークンの有効性を向上させるために、グローバルエンドポイントの代わりにリージョナル AWS STS エンドポイントを使用することを推奨しています。AWS リージョンを設定するには、次の例に示すように、AWS_REGION と AWS_STS_REGIONAL_ENDPOINTS を環境変数として設定します。
export AWS_STS_REGIONAL_ENDPOINTS=regional // Enables regional endpoints export AWS_REGION=us-east-1 // Sets your AWS region
これらの環境変数の両方が設定されていない場合、デフォルトのリージョンは us-east-1
です。利用可能な AWS リージョンの一覧については、AWS ドキュメントの AWS サービスエンドポイント リファレンスにある「リージョン エンドポイント」セクションをご覧ください。
上記の環境変数を設定したら、次の例に示すように接続stringで MONGODB-AWS
認証メカニズムを指定します。
const { MongoClient } = require("mongodb"); // Remember to specify your AWS credentials in environment variables. const clusterUrl = "<cluster_url>"; const authMechanism = "MONGODB-AWS"; let uri = `mongodb+srv://${clusterUrl}/?authSource=%24external&authMechanism=${authMechanism}`; // Create a new MongoClient. const client = new MongoClient(uri); async function run() { try { // Establish and verify connection. await client.db("admin").command({ ping: 1 }); console.log("Connected successfully to server."); } finally { // Ensure that the client closes when it finishes/errors. await client.close(); } } run().catch(console.dir);
Web IDP から取得した OpenID Connect(OIDC)トークンを使用して、Amazon Elastic Kubernetes Service(EKS)またはその他のサービスを認証できます。
OIDC トークンで認証するには、まず @aws-sdk/credential-providers を インストールする必要があります 。この依存関係は、次のnpm
コマンドを使用してインストールできます。
npm install @aws-sdk/credential-providers
次に、OIDC トークンを含む ファイルを作成します。 次に、次の例に示すように shell を使用して、環境変数内のこのファイルへの絶対パスを設定します。
export AWS_WEB_IDENTITY_TOKEN_FILE=<absolute path to file containing your OIDC token>
上記の環境変数を設定したら、次の例に示すように接続stringで MONGODB-AWS
認証メカニズムを指定します。
const { MongoClient } = require("mongodb"); // Remember to specify your AWS credentials in environment variables. const clusterUrl = "<cluster_url>"; const authMechanism = "MONGODB-AWS"; let uri = `mongodb+srv://${clusterUrl}/?authSource=%24external&authMechanism=${authMechanism}`; // Create a new MongoClient. const client = new MongoClient(uri); async function run() { try { // Establish and verify connection. await client.db("admin").command({ ping: 1 }); console.log("Connected successfully to server."); } finally { // Ensure that the client closes when it finishes/errors. await client.close(); } } run().catch(console.dir);
Amazon Web Services認証情報の指定
オプションの aws-sdk/credential-providers
依存関係をインストールすると、ドライバーはAmazon Web Services SDK で定義された優先順位順位で認証情報を検索します。 共有Amazon Web Services認証情報ファイルまたは 設定ファイルがある場合、ドライバーはデフォルトでそれらの認証情報を使用します。
Tip
aws-sdk/credential-providers
依存関係が認証情報を検索する方法の詳細については、Amazon Web Services SDK ドキュメントを参照してください。
取得するAmazon Web Services認証情報を手動で指定するには、 Amazon Web Services SDK から定義済みの認証情報プロバイダーに AWS_CREDENTIAL_PROVIDER
プロパティを設定します。 次の例では、プロバイダー チェーンをAmazon Web Services SDK からAmazon Web Services認証メカニズムに渡します。
const { MongoClient } = require('mongodb'); const { fromNodeProviderChain } = require('@aws-sdk/credential-providers'); const client = new MongoClient('<cluster_url>?authMechanism=MONGODB-AWS', { authMechanismProperties: { AWS_CREDENTIAL_PROVIDER: fromNodeProviderChain() } });
カスタム プロバイダーを使用するには、認証情報を返す非同期関数を AWS_CREDENTIAL_PROVIDER
認証メカニズムのプロパティに渡します。次の例は、環境変数から認証情報を取得するカスタム プロバイダー関数をAmazon Web Services認証メカニズムに渡す方法を示しています。
const { MongoClient } = require('mongodb'); const client = new MongoClient('<cluster_url>?authMechanism=MONGODB-AWS', { authMechanismProperties: { AWS_CREDENTIAL_PROVIDER: async () => { return { accessKeyId: process.env.ACCESS_KEY_ID, secretAccessKey: process.env.SECRET_ACCESS_KEY } } } });
API ドキュメント
このページで説明するメソッドやタイプの詳細については、次のAPIドキュメントを参照してください。