認証メカニズム
項目一覧
Overview
このガイドでは、 Cドライバーで使用してMongoDB. にユーザーを認証するメカニズムについて説明します。
SCRAM-SHA-256
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
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);
MONGODB-X509
Cドライバーを TLS サポートでコンパイルすると、 Cドライバーは TLS ハンドシェイク中に ID を証明するために、X. 509クライアント証明書をMongoDBに提示できます。 MONGODB-X 509認証メカニズムは、この証明書を使用してクライアントを認証します。
このメカニズムで認証するには、次の手順を実行します。
mongoc_ssl_opt_t
構造を作成します。この構造で、pem_file
フィールドを、クライアント証明書と秘密キーを含む.pem
ファイルのファイルパスに設定します。接続 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-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認証情報を登録されている順序で検索しようとします。
接続 URI に渡される名前付きパラメータ
環境変数
Amazon Web Services EKS AssumeRoleWithWebIdentityリクエスト
ECSコンテナのメタデータ
EC 2インスタンスのメタデータ
次のセクションでは、 Cドライバーを使用してこれらのソースから認証情報を取得し、その情報を使用してアプリケーションを認証する方法について説明します。
接続URI
まず、 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);
ECS Metadata
アプリケーションが 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);
EC 2インスタンス メタデータ
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インスタンスからのみ認証情報を取得するには、環境変数が設定されていないことを確認します。
API ドキュメント
Cドライバーでアプリケーションを認証する方法の詳細については、次のAPIドキュメントを参照してください。