Docs Menu
Docs Home
/ / /
PHP ライブラリ マニュアル
/

認証メカニズム

項目一覧

  • Overview
  • SCRAM-SHA-256
  • SCRAM-SHA-1
  • MONGODB-X509
  • MongoDB-AWS
  • MongoDB $ Client 認証情報
  • 環境変数
  • AssumeRoleWithWebIdentity requests
  • ECS Metadata
  • EC 2インスタンス メタデータ
  • 詳細情報
  • API ドキュメント

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

重要

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

パーセント エンコード する 必要があります MongoDB URI に含める前に、ユーザー名とパスワードを入力します。RFC 3986で指定されている URI構文に従ってこれらの値をエンコードするには、 rawurlencode()メソッドを使用します。 ユーザー名やパスワードをオプション配列パラメータでMongoDB\Clientコンストラクターに渡す場合、パーセント エンコードしないでください。

詳細については、以下のリソースを参照してください。

  • RFC 3986

  • ローリングコード PHPマニュアルの

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 ( 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'に変更します。

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 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の認証情報をリストされている順序で検索しようとします。

  1. 接続 URI の一部として、またはオプション パラメータとしてMongoDB\Clientに渡されるオプション

  2. 環境変数

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

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

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

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

最初に、ドライバーは、接続 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」を参照してください。 ( のドキュメント)。

アプリケーションが 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ドキュメントを参照してください。

アプリケーションが 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 の例を参照してください。

Amazon Web Servicesドライバーは、Amazon Elastic Cloud compute(EC2 )インスタンスから一時的な の認証情報を自動的に取得できます。EC 2インスタンス内から一時認証情報を使用するには、 authMechanism接続オプションを'MONGODB-AWS'に設定します。 authMechanismオプションを設定する例については、このページのauthMechanism の例を参照してください。

注意

MongoDB PHPライブラリは、「環境変数」セクションで説明されている環境変数が設定されていない場合にのみ、EC 2インスタンスから認証情報を検索します。

MongoDB PHPライブラリで MongoDB\Clientオブジェクトを作成する方法について詳しくは、「 MongoDBクライアントの作成」ガイドを参照してください。

MongoDB\Clientクラスの詳細については、ライブラリAPIドキュメントのMongoDB\Clientを参照してください。

に渡すことができる URI オプションの完全なリストを表示するには、「MongoDB\Client MongoDB $ Driver\Manager::__construct() パラメーター 」を参照してください。 拡張APIドキュメントを参照してください。

戻る

セキュリティ