Overview
MongoDB は、データベース接続を保護する複数のメカニズムをサポートしています。このページでは、これらのそれぞれのメカニズムを示すコード例が紹介されています。
Tip
このページに記載されているメカニズムの詳細については、各セクションに提供されているリンクを参照してください。
このページの例を使用するには、コード例をサンプルアプリケーションまたは独自のアプリケーションにコピーします。コード例にある、 などのすべてのプレースホルダーを、<hostname> MongoDBデプロイに関連する値に置き換えてください。
サンプル アプリケーション
次のサンプルアプリケーションを使用して、このページのコード例をテストできます。 サンプル アプリケーションを使用するには、次の手順を実行します。
プロジェクトにMongoDB PHPライブラリがインストールされていることを確認してください。 MongoDB PHPライブラリのインストールの詳細については、 「ダウンロードとインストール」のガイドを参照してください。
次のコードをコピーし、新しい
.phpファイルに貼り付けます。このページからコード例をコピーし、 ファイル内の指定された行に貼り付けます。
Tip
サンプルアプリケーションの require ステートメントは、MongoDB PHP ライブラリを読み込み、vendor ディレクトリがアプリケーションファイルと同じディレクトリにあることを前提としています。アプリケーションファイルが別の場所にある場合は、それに応じて vendor/autoload.php へのパスを調整してください。
require __DIR__ . '/vendor/autoload.php';
// Start example code here
// End example code here
try { $client->test->command(['ping' => 1]); echo 'Successfully pinged the MongoDB server.', PHP_EOL;} catch (MongoDB\Driver\Exception\RuntimeException $e) { printf("Failed to ping the MongoDB server: %s\n", $e->getMessage());}SCRAM-SHA-256
次のコードは、 SCRAM-SHA-256認証メカニズムを使用して認証する方法を示しています。
$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-256認証 の詳細については、 認証ガイドの「SCRAM 認証」を参照してください。
x.509
次のコードは、 X.509認証メカニズムを使用して認証するための接続 URI を作成する方法を示しています。
$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);X.509認証の詳細については、 認証ガイドの「X.509 認証」を参照してください。
MongoDB-AWS
次のセクションでは、 MONGODB-AWS認証メカニズムを使用してMongoDBに接続する方法を示します。 MONGODB-AWS メカニズムを使用すると、 MongoDB PHPライブラリは次のソースからAmazon Web Servicesの認証情報をリストされている順序で検索しようとします。
接続stringまたは
$uriOptions配列パラメータの一部としてMongoDB\Clientコンストラクタに渡されるオプション環境変数
Amazon Web Services EKS
AssumeRoleWithWebIdentityリクエストECSコンテナのメタデータ
EC 2インスタンスのメタデータ
各セクションでは、クライアントまたは代替の外部ソースからAmazon Web Servicesの認証情報を取得するときに MONGODB-AWS で認証する方法を示します。
Amazon Web Servicesによる認証の詳細については、 認証ガイドの「 Amazon Web Services IAM 認証 」を参照してください。
MongoDB $ Client 認証情報
次のコードは、 Amazon Web Servicesの認証情報を MongoDB\Client コンストラクターに渡して MONGODB-AWS で認証する方法を示しています。
$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で認証する方法の詳細については、 認証ガイドの「 MongoDB \Client 認証情報」を参照してください。
外部認証情報
次のコードは、環境変数、 AssumeRoleWithWebIdentityリクエスト、 ECSメタデータ、または EC 2インスタンスメタデータから認証情報を取得するときに、 MONGODB-AWSで認証する方法を示しています。
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>', ['authMechanism' => 'MONGODB-AWS'],);$uri = 'mongodb://<hostname>:<port>/?authMechanism=MONGODB-AWS';$client = new MongoDB\Client($uri);外部認証情報を取得してAmazon Web Servicesで認証する方法の詳細については、 認証ガイドの次のセクションを参照してください。
トランスポート層セキュリティ (TLS)
TLS の有効化
次のコードは、 MongoDBインスタンスへの接続に対して TLS を有効にする方法を示しています。
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true],);$uri = 'mongodb://<hostname>:<port>/?tls=true';$client = new MongoDB\Client($uri);TLS を有効にする方法の詳細については、 TLS 構成ガイドの「 TLSを有効にする 」を参照してください。
証明機関(CA)ファイルの指定
次のコードは、 MongoDBインスタンスへの接続用の CAファイルへのパスを指定する方法を示しています。
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true, 'tlsCAFile' => '/path/to/ca.pem'],);$uri = 'mongodb://<hostname>:<port>/?tls=true&tlsCAFile=/path/to/ca.pem';$client = new MongoDB\Client($uri);CAファイルの指定の詳細については、「 TLS 構成ガイドのCA ファイルの指定」を参照してください。
OCSP チェックの無効化
次のコードは、ドライバーが OCSP エンドポイントに接続するのを防ぐ方法を示しています。
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true, 'tlsDisableOCSPEndpointCheck' => true],);$uri = 'mongodb://<hostname>:<port>/?tls=true&tlsDisableOCSPEndpointCheck=true';$client = new MongoDB\Client($uri);OCSP チェックを無効にする方法の詳細については、 TLS 構成ガイドのOCSPを参照してください。
証明書失効リスト(CRL)の指定
次のコードは、CRL に対してサーバーの証明書を検証するようにドライバーに指示する方法を示しています。
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true], ['crl_file' => '/path/to/file.pem'],);CRL の指定の詳細については、TLS 構成ガイドの「証明書失効リスト」を参照してください。
クライアント証明書の提示
次のコードは、ドライバーがMongoDBデプロイに提示するクライアント証明書を指定する方法を示しています。
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true, 'tlsCertificateKeyFile' => '/path/to/client.pem'],);$uri = 'mongodb://<hostname>:<port>/?tls=true&tlsCertificateKeyFile=/path/to/client.pem';$client = new MongoDB\Client($uri);クライアント証明書の指定の詳細については、 TLS 構成ガイドの「クライアント証明書の提示」を参照してください。
証明書鍵ファイルのパスワードの指定
次のコードは、クライアント証明書のパスワードを指定する方法を示しています。
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', [ 'tls' => true, 'tlsCertificateKeyFile' => '/path/to/client.pem', 'tlsCertificateKeyFilePassword' => '<password>', ],);$uri = 'mongodb://<hostname>:<port>/?tls=true&tlsCertificateKeyFile=/path/to/client.pem&tlsCertificateKeyFilePassword=<password>';$client = new MongoDB\Client($uri);キーファイルのパスワードの指定の詳細については、 TLS 構成ガイドの「キー パスワードの指定」を参照してください。
AllowInsecureTls
次のコードは、証明書検証とホスト名検証の両方を無効にするのと同じ効果がある TLS 制約を緩和する方法を示しています。
// Warning: Use the tlsInsecure option only for testing. Don't use it in production.$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true, 'tlsInsecure' => true],);// Warning: Use the tlsInsecure option only for testing. Don't use it in production.$uri = 'mongodb://<hostname>:<port>/?tls=true&tlsInsecure=true';$client = new MongoDB\Client($uri);安全でない TLS の許可の詳細については、 TLS 構成ガイドの「 安全でない TLS を許可する 」を参照してください。
証明書検証の無効化
次のコードは、証明書の検証を無効にする方法を示しています。
// Warning: Use the tlsAllowInvalidCertificates option only for testing. Don't use it in production.$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true, 'tlsAllowInvalidCertificates' => true],);// Warning: Use the tlsAllowInvalidCertificates option only for testing. Don't use it in production.$uri = 'mongodb://<hostname>:<port>/?tls=true&tlsAllowInvalidCertificates=true';$client = new MongoDB\Client($uri);証明書検証を無効にする方法の詳細については、 TLS 構成ガイドの「 安全でない TLS の許可」を参照してください。
ホスト名検証を無効化する
次のコードは、ホスト名検証を無効にする方法を示しています。
// Warning: Use the tlsAllowInvalidHostnames option only for testing. Don't use it in production.$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true, 'tlsAllowInvalidHostnames' => true],);// Warning: Use the tlsAllowInvalidHostnames option only for testing. Don't use it in production.$uri = 'mongodb://<hostname>:<port>/?tls=true&tlsAllowInvalidHostnames=true';$client = new MongoDB\Client($uri);ホスト名検証を無効にする方法の詳細については、 TLS 構成ガイドの「 安全でない TLS の許可」を参照してください。
警告
本番環境では を使用しないでください
本番環境では、tlsInsecure、tlsAllowInvalidCertificates、tlsAllowInvalidHostnames のオプションは常に false に設定します。コードをテストするときにこれらのオプションを有効にできます。
本番環境でこれらのオプションのいずれかを true に設定すると、アプリは安全でなくなります。アプリは、期限切れの証明書や、有効なクライアントインスタンスをみなした外部プロセスに対して脆弱になります。