Docs Menu
Docs Home
/ / /
C++ ドライバー
/

認証メカニズム

項目一覧

  • Overview
  • SCRAM-SHA-256
  • SCRAM-SHA-1
  • MONGODB X.509
  • MongoDB-AWS
  • 接続URI
  • 環境変数
  • AssumeRoleWithWebIdentity requests
  • ECS Metadata
  • EC 2インスタンス メタデータ
  • API ドキュメント

このガイドでは、 C++ドライバーでユーザーを認証するために使用できるメカニズムについて説明します。

SCRAM-SHA-256 ( RFC7677 で定義されている)は、 MongoDB v を実行中しているMongoDB配置のデフォルトの認証メカニズムです。40以降に更新します。

このメカニズムで認証するには、次の接続オプションを設定します。

  • db_username: 認証するデータベースのユーザー名。

  • db_password: 認証するデータベースのパスワード。

  • authSource: 認証するMongoDBデータベース 。 デフォルトでは 、 C++ドライバーは接続 URI にデータベースに対して認証を行います(接続 URI を含めている場合)。 再試行しない場合、 adminデータベースに対して認証が行われます。

  • authMechanism: "SCRAM-SHA-256"に設定します。

次の例に示すように、 mongocxx::clientオブジェクトを作成するときに接続stringでこれらのオプションを設定できます。

auto uri = mongocxx::uri("mongodb://<db_username>:<db_password>@<hostname>:<port>/?"
"authSource=admin&authMechanism=SCRAM-SHA-256");
auto client = mongocxx::client(uri);

SCRAM-SHA-1 ( RFC5802 で定義) は、 MongoDB v を実行している MongoDB 配置のデフォルトの認証メカニズムです。 。36

このメカニズムで認証するには、次の接続オプションを設定します。

  • db_username: 認証するユーザー名。

  • db_password: 認証するパスワード。

  • authSource: 認証するMongoDBデータベース 。 デフォルトでは 、 C++ドライバーはadminデータベースに対して認証します。

  • authMechanism: "SCRAM-SHA-1"に設定します。

次の例に示すように、 mongocxx::clientオブジェクトを作成するときに接続stringでこれらのオプションを設定できます。

auto uri = mongocxx::uri("mongodb://<db_username>:<db_password>@<hostname>:<port>/?"
"authSource=admin&authMechanism=SCRAM-SHA-1");
auto client = mongocxx::client(uri);

TLS を有効にすると、TLS ハンドシェイク中に、 C++ドライバーは X. 509クライアント証明書をMongoDBに提示して、ID を証明できます。 MONGODB-X509認証メカニズムはこの証明書を使用してクライアントを認証します。

このメカニズムで認証するには、次の接続オプションを設定します。

  • tls: Trueに設定します。

  • tlsCertificateKeyFile: クライアント証明書と秘密キーを含む.pemファイルのファイル パス。

  • authMechanism: "MONGODB-X509"に設定します。

次の例に示すように、 mongocxx::clientオブジェクトを作成するときに接続stringでこれらのオプションを設定できます。

auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?"
"tls=true&tlsCertificateKeyFile=path/to/client.pem&authMechanism=MONGODB-X509");
auto client = mongocxx::client(uri);

TLS を有効にする方法の詳細については、 トランスポート層セキュリティ(TLS)の構成 」を参照してください。

重要

MONGODB-AWS 認証メカニズムには、MongoDB v 4.4以降が必要です。

MONGODB-AWS認証メカニズムは、 Amazon Web Services IAM( Amazon Web Services Identity and Access Management、 Amazon Web Services Lambdaの認証情報)を使用してアプリケーションを認証します。 このメカニズムを使用して認証するには、まず$externalデータベースに関連付けられたAmazonリソース名(ARN) を持つユーザーを作成し、次に URI でMONGODB-AWS authMechanism を指定します。

MONGODB-AWS メカニズムを使用すると、 C++ドライバーは次のソースからAmazon Web Servicesの認証情報をリストされている順序で検索しようとします。

  1. 接続 URI に渡される名前付きパラメータ

  2. 環境変数

  3. Amazon Web Services EKS AssumeRoleWithWebIdentityリクエスト

  4. ECSコンテナのメタデータ

  5. EC 2インスタンスのメタデータ

次のセクションでは、 C++ドライバーを使用してこれらのソースから認証情報を検索し、その情報を使用してアプリケーションを認証する方法について説明します。

まず、 C++ドライバーは、接続 URI の一部としてAmazon Web Servicesの認証情報を MongoClient コンストラクターに渡したかどうかを確認します。 接続 URI で認証情報を渡すには、次の接続オプションを設定します。

  • username: 認証するAmazon Web Services IAM アクセスキーID 。

  • password: Amazon Web Services IAM シークレット アクセス キー。

  • authMechanism: "MONGODB-AWS"に設定します。

次の例に示すように、 mongocxx::clientオブジェクトを作成するときに接続stringでこれらのオプションを設定できます。

auto uri = mongocxx::uri("mongodb://<AWS IAM access key ID>:<AWS IAM secret access key>@<hostname>:<port>/?"
"authMechanism=MONGODB-AWS");
auto client = mongocxx::client(uri);

また、 Amazon Web Servicesセッション トークンを authMechanismProperties パラメーターに渡して含めることもできます。

auto uri = mongocxx::uri("mongodb://<AWS IAM access key ID>:<AWS IAM secret access key>@<hostname>:<port>/?"
"authMechanism=MONGODB-AWSS&authMechanismProperties=AWS_SESSION_TOKEN:<token>");
auto client = mongocxx::client(uri);

MongoClientオブジェクトを構築するときにユーザー名とパスワードを指定しない場合、 C++ドライバーは次の環境変数からAmazon Web Servicesの認証情報を検索しようとします。

  • AWS_ACCESS_KEY_ID

  • AWS_SECRET_ACCESS_KEY

  • AWS_SESSION_TOKEN (任意)

これらの環境変数を使用してアプリケーションを認証するには、まず、次のコード例に示すように、認証に必要なAmazon Web Services IAM 値に設定します。

export AWS_ACCESS_KEY_ID=<AWS IAM access key ID>
export AWS_SECRET_ACCESS_KEY=<AWS IAM secret access key>
export AWS_SESSION_TOKEN=<AWS session token>

これらの環境変数を設定したら、次の例に示すように、接続 URI のauthMechanismパラメータを"MONGODB-AWS"に設定します。

auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?"
"authMechanism=MONGODB-AWS");
auto client = mongocxx::client(uri);

アプリケーションが OpenID Connect(OIDC) IdPから EKS クラスターのユーザーを認証する場合、 C++ドライバーは AssumeRoleWithWebIdentityリクエストを実行して、アプリケーションの一時的なAmazon Web Services認証情報の OIDC トークンを交換できます。

AssumeRoleWithWebIdentityリクエストによって返された一時的なAmazon Web Services IAM 認証情報を使用して認証するには、 Amazon Web Servicesの設定ファイルが環境内に存在し、かつ AWS_WEB_IDENTITY_TOKEN_FILEAWS_ROLE_ARN 環境変数で構成されていることを確認します。 Amazon Web Servicesの設定ファイルの作成および構成方法については、「 構成 Amazon Web Services」を参照してください。 ( のドキュメント)。

AssumeRoleWithWebIdentityリクエスト用に環境を構成したら、次の例に示すように、接続 URI のauthMechanismパラメータを"MONGODB-AWS"に設定します。

auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?"
"authMechanism=MONGODB-AWS");
auto client = mongocxx::client(uri);

AssumeRoleWithWebIdentity リクエストを使用してアプリケーションを認証する方法の詳細については、次のAmazon Web Servicesドキュメントを参照してください。

アプリケーションが Elastic Container Service(ECS)コンテナで実行される場合、 C++ドライバーは ECS エンドポイントから一時的なAmazon Web Servicesの認証情報を自動的に検索できます。 そのためには、次の例に示すように、 AWS_CONTAINER_CREDENTIALS_RELATIVE_URIという環境変数で ECS エンドポイントの URI を指定します。

export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<URI of the ECS endpoint>

環境変数を設定したら、次の例に示すように、接続 URI のauthMechanismパラメータを"MONGODB-AWS"に設定します。

auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?"
"authMechanism=MONGODB-AWS");
auto client = mongocxx::client(uri);

C++Amazon Web Servicesドライバーは、Amazon Elastic Cloud compute (EC)インスタンスから一時的な2 の認証情報を自動的に取得できます。EC 2インスタンス内から一時認証情報を使用するには、次の例に示すように、接続 URI のauthMechanismパラメータを"MONGODB-AWS"に設定します。

auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?"
"authMechanism=MONGODB-AWS");
auto client = mongocxx::client(uri);

注意

前述のAmazon Web Services認証メソッドから環境変数のいずれかを設定すると、 C++ドライバーは EC2インスタンスから認証情報を取得する前に、それらのメソッドを使用して認証情報を取得しようとします。 EC 2インスタンスからのみ認証情報を取得するには、環境変数が設定されていないことを確認します。

C++ドライバーでmongocxx::clientオブジェクトを作成する方法の詳細については、次のAPIドキュメントを参照してください。

戻る

セキュリティ