認証メカニズム
項目一覧
Overview
このガイドでは、 C++ドライバーでユーザーを認証するために使用できるメカニズムについて説明します。
SCRAM-SHA-256
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
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);
MONGODB X.509
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-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の認証情報をリストされている順序で検索しようとします。
接続 URI に渡される名前付きパラメータ
環境変数
Amazon Web Services EKS AssumeRoleWithWebIdentityリクエスト
ECSコンテナのメタデータ
EC 2インスタンスのメタデータ
次のセクションでは、 C++ドライバーを使用してこれらのソースから認証情報を検索し、その情報を使用してアプリケーションを認証する方法について説明します。
接続URI
まず、 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);
AssumeRoleWithWebIdentity requests
アプリケーションが OpenID Connect(OIDC) IdPから EKS クラスターのユーザーを認証する場合、 C++ドライバーは AssumeRoleWithWebIdentity
リクエストを実行して、アプリケーションの一時的なAmazon Web Services認証情報の OIDC トークンを交換できます。
AssumeRoleWithWebIdentity
リクエストによって返された一時的なAmazon Web Services IAM 認証情報を使用して認証するには、 Amazon Web Servicesの設定ファイルが環境内に存在し、かつ AWS_WEB_IDENTITY_TOKEN_FILE
と AWS_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ドキュメントを参照してください。
ECS Metadata
アプリケーションが 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);
EC 2インスタンス メタデータ
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インスタンスからのみ認証情報を取得するには、環境変数が設定されていないことを確認します。
API ドキュメント
C++ドライバーでmongocxx::client
オブジェクトを作成する方法の詳細については、次のAPIドキュメントを参照してください。