認証メカニズム
項目一覧
Overview
このガイドでは、 PHPライブラリでユーザーを認証するために使用できるメカニズムについて説明します。
SCRAM-SHA-256
SCRAM-SHA-256 ( RFC7677 で定義) は、 MongoDB Server v を実行中しているMongoDB配置のデフォルトの認証メカニズムです。40以降に更新します。
このメカニズムで認証するには、次の接続オプションを設定します。
username
: 認証するユーザー名。 接続 URI に含める前に、この値をパーセント エンコードします。password
: 認証するパスワード。 接続 URI に含める前に、この値をパーセント エンコードします。authSource
: 認証するMongoDBデータベース 。 デフォルトでは 、 MongoDB PHPライブラリは接続 URI にデータベースに対して認証を行います(接続 URI を含めている場合)。 再試行しない場合、admin
データベースに対して認証が行われます。authMechanism
:'SCRAM-SHA-256'
に設定します。 MongoDB Server v 4.0に接続すると、authMechanism
の設定は任意です。
これらのオプションは、オプション配列をMongoDB\Client
コンストラクターに渡す方法と、接続 URI のパラメーターを使用する方法の 2 通りがあります。
$uriOptions = [ 'username' => '<username>', 'password' => '<password>', 'authSource' => '<authentication database>', 'authMechanism' => 'SCRAM-SHA-256', ]; $client = new MongoDB\Client( 'mongodb://<hostname>:<port>', $uriOptions, );
$uri = 'mongodb://<username>:<password>@<hostname>:<port>/?authSource=admin&authMechanism=SCRAM-SHA-256'; $client = new MongoDB\Client($uri);
SCRAM-SHA-1
SCRAM-SHA-1 ( RFC5802 で定義) は、 MongoDB Server v を実行中しているMongoDB配置のデフォルトの認証メカニズムです。 。36
注意
MongoDB PHPライブラリ v 1.20 MongoDB Server v 3.6のサポートを廃止します。 ライブラリの v 1.20 + を使用する場合、サポートされているすべてのサーバーバージョンはデフォルトで SCRAM-SHA- 256認証メカニズムになります。
このメカニズムで認証するには、 SCRAM-SHA- 256と同じ構文を使用しますが、 authMechanism
オプションの値を'SCRAM-SHA-1'
に変更します。
MONGODB-X509
TLS を有効にすると、TLS ハンドシェイク中にMongoDB PHPライブラリは X. 509クライアント証明書をMongoDBに提示して、ID を証明できます。 MONGODB-X 509認証メカニズムは、この証明書を使用してクライアントを認証します。
このメカニズムで認証するには、次の接続オプションを設定します。
tls
:true
に設定します。tlsCertificateKeyFile
: クライアント証明書と秘密キーを含む.pem
ファイルのファイル パス。authMechanism
:'MONGODB-X509'
に設定します。
これらのオプションは、オプション配列をMongoDB\Client
コンストラクターに渡す方法と、接続 URI のパラメーターを使用する方法の 2 通りがあります。
$uriOptions = [ 'tls' => true, 'tlsCertificateKeyFile' => '<file path>', 'authMechanism' => 'MONGODB-X509', ]; $client = new MongoDB\Client( 'mongodb://<hostname>:<port>', $uriOptions, );
$uri = 'mongodb://<hostname>:<port>/?tls=true&tlsCertificateKeyFile=<file path>&authMechanism=MONGODB-X509'; $client = new MongoDB\Client($uri);
MongoDB-AWS
重要
MONGODB- AWS認証メカニズムには、 MongoDB Server v 4.4以降が必要です。
MONGODB- Amazon Web Services認証メカニズムは、 Amazon Web Services IAM( Amazon Web Services Identity と Access Management)またはAmazon Web Services Lambdaの認証情報を使用してアプリケーションを認証します。 この方法で認証するには、 authMechanism
接続オプションの値として'MONGODB-AWS'
を指定する必要があります。
注意
MongoDB PHPライブラリは、libmongoc の MONGODB- AWS認証メカニズムの実装を使用します。 この認証メカニズムを libmongoc で使用する方法の詳細については、 Cドライバーのドキュメントの「 Amazon Web Services IAM による認証」を参照してください。
MONGODB- Amazon Web Servicesメカニズムを使用すると、ドライバーは次のソースからAmazon Web Servicesの認証情報をリストされている順序で検索しようとします。
接続 URI の一部として、またはオプション パラメータとして
MongoDB\Client
に渡されるオプション環境変数
Amazon Web Services EKS
AssumeRoleWithWebIdentity
リクエストECSコンテナのメタデータ
EC 2インスタンスのメタデータ
次のセクションでは、これらのソースから認証情報を取得し、その認証情報を使用してPHPアプリケーションを認証する方法について説明します。
MongoDB $ Client 認証情報
最初に、ドライバーは、接続 URI または $uriOptions
配列パラメータの一部として、MongoDB\Client
コンストラクターにAmazon Web Servicesの認証情報を渡しているかどうかを確認します。 認証情報をMongoDB\Client
に渡すには、次の接続オプションを設定します。
username
: 認証するAmazon Web Services IAM アクセスキーID 。 接続 URI に含める前に、この値をパーセント エンコードします。password
: Amazon Web Services IAM シークレット アクセス キー。 接続 URI に含める前に、この値をパーセント エンコードします。authMechanism
:'MONGODB-AWS'
に設定します。
これらのオプションは、オプション配列をMongoDB\Client
コンストラクターに渡す方法と、接続 URI のパラメーターを使用する方法の 2 通りがあります。
$uriOptions = [ 'username' => '<AWS IAM access key ID>', 'password' => '<AWS IAM secret access key>', 'authMechanism' => 'MONGODB-AWS', ]; $client = new MongoDB\Client( 'mongodb://<hostname>:<port>', $uriOptions, );
$uri = 'mongodb://<AWS IAM access key ID>:<AWS IAM secret access key>@<hostname>:<port>/?authMechanism=MONGODB-AWS'; $client = new MongoDB\Client($uri);
環境変数
MongoDB\Client
オブジェクトを構築するときにユーザー名とパスワードを指定しない場合、ドライバーは次の環境変数からAmazon Web Servicesの認証情報を検索しようとします。
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SESSION_TOKEN
これらの環境変数を使用してアプリケーションを認証 するには、まず認証に必要なAmazon Web Services IAM 値に設定します。 次のコード例に示すように、 shellで export
コマンドを実行することも、 .env
ファイルに変数を追加することもできます。
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>
AWS_ACCESS_KEY_ID=<AWS IAM access key ID> AWS_SECRET_ACCESS_KEY=<AWS IAM secret access key> AWS_SESSION_TOKEN=<AWS session token>
重要
これらの環境変数の値をパーセント エンコードしないでください。
これらの環境変数を設定したら、 authMechanism
接続オプションを'MONGODB-AWS'
に設定します。
例
次の例では、 authMechanism
接続オプションを設定します。 このオプションは、オプション配列をMongoDB\Client
コンストラクターに渡す方法と、接続 URI のパラメーターを使用する方法の 2 通りがあります。
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>', ['authMechanism' => 'MONGODB-AWS'] );
$uri = 'mongodb://<hostname>:<port>/?authMechanism=MONGODB-AWS'; $client = new MongoDB\Client($uri);
Tip
AWS Lambda
Amazon Web Services Lambdaランタイムは、初期化中にこれらの環境変数を自動的に設定できます。 環境で環境変数を使用する方法の詳細については、「Amazon Web ServicesLambda Lambda環境変数の使用 Amazon Web Services」を参照してください。 ( のドキュメント)。
AssumeRoleWithWebIdentity requests
アプリケーションが OpenID Connect(OIDC) IdPから EKS クラスターのユーザーを認証する場合、ドライバーは AssumeRoleWithWebIdentity
リクエストを実行して、アプリケーションの一時的なAmazon Web Services認証情報の OIDC トークンを交換できます。
AssumeRoleWithWebIdentity
リクエストによって返された一時的なAmazon Web Services IAM 認証情報を使用して認証するには、 Amazon Web Servicesの設定ファイルが環境内に存在し、正しく構成されていることを確認します。 Amazon Web Servicesの設定ファイルの作成および構成方法については、「 構成 Amazon Web Services」を参照してください。 ( のドキュメント)。
AssumeRoleWithWebIdentity
リクエストの環境を構成したら、 authMechanism
接続オプションを'MONGODB-AWS'
に設定します。 authMechanism
オプションを設定する例については、このページのauthMechanism の例を参照してください。
Tip
AssumeRoleWithWebIdentity
リクエストを使用してアプリケーションを認証する方法の詳細については、次のAmazon Web Servicesドキュメントを参照してください。
ECS Metadata
アプリケーションが Elastic Container Service(ECS)コンテナで実行されている場合、ドライバーは ECS エンドポイントから一時的なAmazon Web Servicesの認証情報を自動的に検索できます。 そのためには、 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
という環境変数で ECS エンドポイントの URI を指定します。 この変数は、次の例に示すように、export
shellコマンドを実行中するか、.env
ファイルに追加することで設定できます。
export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<URI of the ECS endpoint>
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<URI of the ECS endpoint>
環境変数を設定したら、 authMechanism
接続オプションを'MONGODB-AWS'
に設定します。 authMechanism
オプションを設定する例については、このページのauthMechanism の例を参照してください。
EC 2インスタンス メタデータ
Amazon Web Servicesドライバーは、Amazon Elastic Cloud compute(EC2 )インスタンスから一時的な の認証情報を自動的に取得できます。EC 2インスタンス内から一時認証情報を使用するには、 authMechanism
接続オプションを'MONGODB-AWS'
に設定します。 authMechanism
オプションを設定する例については、このページのauthMechanism の例を参照してください。
注意
MongoDB PHPライブラリは、「環境変数」セクションで説明されている環境変数が設定されていない場合にのみ、EC 2インスタンスから認証情報を検索します。
詳細情報
MongoDB PHPライブラリで MongoDB\Client
オブジェクトを作成する方法について詳しくは、「 MongoDBクライアントの作成」ガイドを参照してください。
API ドキュメント
MongoDB\Client
クラスの詳細については、ライブラリAPIドキュメントのMongoDB\Client
を参照してください。
に渡すことができる URI オプションの完全なリストを表示するには、「MongoDB\Client
MongoDB $ Driver\Manager::__construct() パラメーター 」を参照してください。 拡張APIドキュメントを参照してください。