Docs Menu

Amazon Web Services ID とアクセス管理

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 による認証の設定 」を参照してください。

このページのコード例では、次のプレースホルダーを使用します。

  • <hostname>: MongoDB Atlas配置のネットワークアドレス

  • <awsKeyId>: Amazon Web ServicesアクセスキーID

  • <awsSecretKey>: Amazon Web Servicesシークレット アクセスキー

  • <awsSessionToken>: Amazon Web Servicesセッション トークン

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

Amazon Web Services IAM認証 を使用するには、次の手順を実行します。

  1. MongoDB.Driver.Authentication を追加します。 AWS NuGetパッケージをプロジェクトに。このパッケージを追加するには、IDE を使用するか、ターミナルで次のコマンドを実行中ます。

    dotnet add package MongoDB.Driver.Authentication.AWS
  2. 次のコード行をアプリケーションのブートストラップ コードに追加して、 Amazon WebAmazon Web Services Services認証プロバイダを登録します。

    MongoClientSettings.Extensions.AddAWSAuthentication();

Amazon Web Services認証プロバイダを 登録した後、 Amazon Web Services IAM 認証情報を明示的に指定するか、ドライバーに外部ソースから自動的に取得するように指示できます。 次のセクションでは、これらの両方の方法について説明します。

MongoCredentialオブジェクトを使用するか、接続文字列の一部として、MongoClientSettingsオブジェクトでAmazon Web Services IAM 認証情報を提供できます。 認証情報を指定するための対応する構文を確認するには、Connection String タブまたは MongoCredentialタブを選択します。

var connectionString = "mongodb+srv://<awsKeyId>:<awsSecretKey>@<hostname>?" +
"authSource=$external" +
"&authMechanism=MONGODB-AWS";
var mongoClientSettings = MongoClientSettings.FromConnectionString(connectionString);
var client = new MongoClient(mongoClientSettings);

Amazon Web Servicesセッション トークンを使用している場合は、次に示すように接続stringに authMechanismProperties パラメーターを含めます。

var connectionString = "mongodb+srv://<awsKeyId>:<awsSecretKey>@<hostname>?" +
"authSource=$external" +
"&authMechanism=MONGODB-AWS" +
"&authMechanismProperties=AWS_SESSION_TOKEN:<awsSessionToken>";
var mongoClientSettings = MongoClientSettings
.FromConnectionString("mongodb+srv://<hostname>");
mongoClientSettings.Credential = new MongoCredential(
"MONGODB-AWS",
new MongoExternalIdentity("<awsKeyId>"),
new PasswordEvidence("<awsSecretKey>"));
var client = new MongoClient(mongoClientSettings);

Amazon Web Servicesセッション トークンを使用している場合は、次に示すように、MongoCredential オブジェクトで WithMechanismProperty() メソッドを呼び出します。

mongoClientSettings.Credential = new MongoCredential(
"MONGODB-AWS",
new MongoExternalIdentity("<awsKeyId>"),
new PasswordEvidence("<awsSecretKey>"))
.WithMechanismProperty("AWS_SESSION_TOKEN", "<awsSessionToken>");

MongoClientSettings でAmazon Web Services IAM 認証情報を指定する代わりに、 .NET/ C#ドライバーにAmazon Web Services SDK を使用して外部ソースから認証情報を自動的に取得するように指示できます。

ドライバーに認証情報を取得するよう指示するには、まず認証メカニズムとして MONGODB-AWS を指定し、その認証ソースがMongoDBの外部であることを指定する必要があります。 認証メカニズムとソースは、MongoCredentialオブジェクトを使用するか、接続文字列の一部として指定できます。 Connection String タブまたは MongoCredentialタブを選択すると、MONGODB-AWS認証メカニズムと外部認証ソースを指定するための対応する構文が表示されます。

var connectionString = "mongodb+srv://<hostname>?" +
"authMechanism=MONGODB-AWS" +
"&authSource=$external";
var mongoClientSettings = MongoClientSettings
.FromConnectionString(connectionString);
var client = new MongoClient(mongoClientSettings);
var mongoClientSettings = MongoClientSettings
.FromConnectionString("mongodb+srv://<hostname>");
mongoClientSettings.Credential = new MongoCredential(
"MONGODB-AWS",
new MongoExternalAwsIdentity(),
new ExternalEvidence());
var client = new MongoClient(mongoClientSettings);

認証メカニズムとソースを指定した後、認証情報のタイプに適したロケーションに認証情報を設定する必要があります。 .NET/ C#ドライバーは、ここにリストされている順序で次のロケーションで認証情報をチェックします。

OpenID Connect(OIDC)互換の Web IdPを使用して、 Amazon Elastic Kubernetes Service(EKS)またはその他のサービスを認証できます。 Web IdPを使用するには、OIDC トークンを含むファイルを作成し、次の例に示すように bash または同様のシェル を使用して 環境変数にこのファイルへの絶対パスを設定します。

export AWS_WEB_IDENTITY_TOKEN_FILE=<absolute path to file containing your OIDC token>

共有Amazon Web Services認証情報ファイルのプロファイルを使用して認証するには、テキストエディタ、 .NET用のAmazon Web Services SDK、またはAmazon Web Services CLI を使用して適切な認証情報ファイルを作成します。

環境変数から認証情報を直接検索するには、bash または同様のシェル を使用して次の環境変数を設定します。

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 または同様のシェルを使用して、環境変数に ECS エンドポイントの URI を設定します。 対応する環境変数を指定するための構文を確認するには、Full ECS URI タブまたは Relative ECS URIタブを選択します。

export AWS_CONTAINER_CREDENTIALS_FULL_URI=<full ECS endpoint>
export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<relative ECS endpoint>

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

このページで説明するメソッドやタイプの詳細については、次のAPIドキュメントを参照してください。