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

認証メカニズム

項目一覧

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

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

重要

パーセント エンコーディング

MongoDB URI にユーザー名とパスワードを含める前に、 パーセント エンコード する必要があります。

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

SCRAM-SHA- 256 を使用して認証するには、次の接続オプションを設定します。

  • username: 認証するユーザー名。接続 URI に含める前に、この値をパーセント エンコードします。

  • password: 認証するパスワード。接続 URI に含める前に、この値をパーセント エンコードします。

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

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

次のコード例に示すように、接続文字列のパラメーターを使用してこれらのオプションを設定できます。

const char *uri = "mongodb://<percent-encoded username>:<percent-encoded password>@<hostname>:<port>/?authMechanism=SCRAM-SHA-256&authSource=<authentication database>";
mongoc_client_t *client = mongoc_client_new(uri);

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

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

  • username: 認証するユーザー名。接続 URI に含める前に、この値をパーセント エンコードします。

  • password: 認証するパスワード。接続 URI に含める前に、この値をパーセント エンコードします。

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

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

次のコード例に示すように、接続文字列のパラメーターを使用してこれらのオプションを設定できます。

const char *uri = "mongodb://<percent-encoded username>:<percent-encoded password>@<hostname>:<port>/?authMechanism=SCRAM-SHA-1&authSource=<authentication database>";
mongoc_client_t *client = mongoc_client_new(uri);

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

このメカニズムで認証するには、次の手順を実行します。

  1. mongoc_ssl_opt_t 構造を作成します。この構造で、pem_fileフィールドを、クライアント証明書と秘密キーを含む .pemファイルのファイルパスに設定します。

  2. 接続 URI で、authMechanism 接続オプションを "MONGODB-X509" に設定します。

次のコード例は、MONGODB-X 509 メカニズムを使用して認証するMongoDBクライアントを作成する方法を示しています。

mongoc_client_t *client;
mongoc_ssl_opt_t ssl_opts = {0};
ssl_opts.pem_file = "mycert.pem";
const char *uri = "mongodb://<percent-encoded username>@<hostname>:<port>/?authMechanism=MONGODB-X509";
mongoc_client_t *client = mongoc_client_new(uri);
mongoc_client_set_ssl_opts(client, &ssl_opts);

重要

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

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

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

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

  2. 環境変数

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

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

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

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

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

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

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

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

次の例に示すように、接続 URI でこれらのオプションを設定できます。

const char *uri = "mongodb://<AWS IAM access key ID>:<AWS IAM secret access key>@<hostname>:<port>/?authMechanism=MONGODB-AWS");
mongoc_client_t *client = mongoc_client_new(uri);

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

const char *uri = "mongodb://<AWS IAM access key ID>:<AWS IAM secret access key>@<hostname>:<port>/?authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<token>");
mongoc_client_t *client = mongoc_client_new(uri);

接続 URI にユーザー名とパスワードを含めない場合、 Cドライバーは次の環境変数からAWS認証情報を検索しようとします。

  • 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"に設定します。

const char *uri = "mongodb://<hostname>:<port>/?authMechanism=MONGODB-AWS");
mongoc_client_t *client = mongoc_client_new(uri);

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

export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<URI of the ECS endpoint>

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

const char *uri = "mongodb://<hostname>:<port>/?authMechanism=MONGODB-AWS");
mongoc_client_t *client = mongoc_client_new(uri);

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

const char *uri = "mongodb://<hostname>:<port>/?authMechanism=MONGODB-AWS");
mongoc_client_t *client = mongoc_client_new(uri);

注意

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

Cドライバーでアプリケーションを認証する方法の詳細については、次のAPIドキュメントを参照してください。

戻る

セキュリティ