Overview
MongoDB admite varios mecanismos que protegen la conexión a la base de datos. Esta página contiene ejemplos de código que demuestran cada uno de estos mecanismos.
Tip
Para obtener más información sobre cualquiera de los mecanismos que se muestran en esta página, consulte el enlace proporcionado en cada sección.
Para utilizar un ejemplo de esta página, copie el ejemplo de código en el
Aplicación de muestra o su propia aplicación. Asegúrese de reemplazar todos los marcadores de posición en los ejemplos de código, como <hostname>, con los valores relevantes para su implementación de MongoDB.
Aplicación de muestra
Puede utilizar la siguiente aplicación de muestra para probar los ejemplos de código en esta página. Para usar la aplicación de muestra, siga los siguientes pasos:
Asegúrese de tener la biblioteca PHP de MongoDB instalada en su proyecto. Para obtener más información sobre la instalación de la biblioteca PHP de MongoDB, consulte Guíade descarga e instalación.
Copia el siguiente código y pégalo en un nuevo archivo
.php.Copia un ejemplo de código de esta página y pégalo en las líneas especificadas del archivo.
1 2 3 require __DIR__ . '/../vendor/autoload.php'; 4 5 // Start example code here 6 7 // End example code here 8 9 try { 10 $client->test->command(['ping' => 1]); 11 echo 'Successfully pinged the MongoDB server.', PHP_EOL; 12 } catch (MongoDB\Driver\Exception\RuntimeException $e) { 13 printf("Failed to ping the MongoDB server: %s\n", $e->getMessage()); 14 }
SCRAM-SHA-256
El siguiente código muestra cómo autenticarse utilizando el mecanismo de autenticación 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);
Para obtener más información sobre la autenticación SCRAM-SHA-256, consulta Autenticación SCRAM en la guía de Autenticación.
MONGODB X.509
El siguiente código muestra cómo crear una URI de conexión para autenticar mediante el mecanismo de autenticación X.509:
$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);
Para obtener más información sobre la autenticación X.509, consulta X.509 Autenticación en la guía de Autenticación.
MONGODB-AWS
Las siguientes secciones muestran cómo conectarse a MongoDB mediante el mecanismo de autenticación MONGODB-AWS. Al usar el mecanismo MONGODB-AWS, la biblioteca PHP de MongoDB intenta recuperar sus credenciales de AWS de las siguientes fuentes, en el orden indicado:
Opciones pasadas al constructor
MongoDB\Client, ya sea como parte de la cadena de conexión o del parámetro de matriz$uriOptionsVariables de entorno
Solicitud de AWS EKS
AssumeRoleWithWebIdentityMetadatos del contenedor ECS
Metadatos de la instancia EC2
Cada sección muestra cómo autenticarse con MONGODB-AWS al recuperar sus credenciales de AWS de las opciones pasadas a su cliente o de las fuentes externas alternativas.
Para obtener más información sobre la autenticación con AWS, consulte Autenticación de AWS IAM en la guía de autenticación.
Credenciales del cliente de MongoDB
El siguiente código muestra cómo pasar credenciales de AWS al constructor MongoDB\Client para autenticarse con 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);
Para obtener más información sobre cómo autenticarse con AWS recuperando las MongoDB\Client credenciales, consulte MongoDB\Client Credentials en la guía de autenticación.
Credenciales externas
El siguiente código muestra cómo autenticarse con MONGODB-AWS al obtener credenciales de variables de entorno, una solicitud AssumeRoleWithWebIdentity, metadatos de ECS o metadatos de instancia de EC2:
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>', ['authMechanism' => 'MONGODB-AWS'], );
$uri = 'mongodb://<hostname>:<port>/?authMechanism=MONGODB-AWS'; $client = new MongoDB\Client($uri);
Para obtener más información sobre cómo autenticarse con AWS mediante la obtención de credenciales externas, consulte las siguientes secciones en la guía de autenticación:
Capa de seguridad de transporte (TLS)
Habilitar TLS
El siguiente código muestra cómo habilitar TLS para la conexión a su instancia de MongoDB:
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true], );
$uri = 'mongodb://<hostname>:<port>/?tls=true'; $client = new MongoDB\Client($uri);
Para obtener más información sobre cómo habilitar TLS, consulte Habilitar TLS en la guía de configuración de TLS.
Especificar un archivo de autoridad de certificación (CA)
El siguiente código muestra cómo especificar la ruta a su archivo CA para la conexión a su instancia de MongoDB:
$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);
Para obtener más información sobre cómo especificar un archivo CA, consulte Especificar un archivo CA en la guía de configuración de TLS.
Deshabilitar comprobaciones de OCSP
El siguiente código muestra cómo evitar que el controlador se comunique con el punto final 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);
Para obtener más información sobre cómo deshabilitar las comprobaciones de OCSP, consulte OCSP en la guía de configuración de TLS.
Especificar una lista de revocación de certificados (CRL)
El siguiente código muestra cómo instruir al controlador para verificar el certificado del servidor contra una CRL:
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true], ['crl_file' => '/path/to/file.pem'], );
Para obtener más información sobre cómo especificar una CRL, consulta Lista de revocación de certificados en la guía de configuración TLS.
Presentar un Certificado de Cliente
El siguiente código muestra cómo especificar el certificado de cliente que el controlador presenta a su implementación de 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);
Para obtener más información sobre cómo especificar un certificado de cliente, consulte Presentar un certificado de cliente en la guía de configuración de TLS.
Proporcionar una contraseña para el archivo de clave de certificado
El siguiente código muestra cómo especificar la contraseña para su certificado de cliente:
$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);
Importante
Al reemplazar el <password> marcador de posición en la URI de conexión, asegúrese de codificar con porcentaje el valor.
Para obtener más información sobre cómo proporcionar una contraseña de archivo clave, consulte Proporcionar una contraseña de clave en la guía de configuración de TLS.
Permitir TLS inseguro
El siguiente código muestra cómo relajar las restricciones de TLS, lo que tiene el mismo efecto que deshabilitar tanto la validación del certificado como la verificación del nombre de host:
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true, 'tlsInsecure' => true], );
$uri = 'mongodb://<hostname>:<port>/?tls=true&tlsInsecure=true'; $client = new MongoDB\Client($uri);
Para obtener más información sobre cómo permitir TLS inseguro, consulte Permitir TLS inseguro en la guía de configuración de TLS.
Advertencia
Configurar la opción tlsInsecure en true podría exponer su aplicación a riesgos de seguridad. Habilitar esta opción la hace insegura y potencialmente vulnerable a certificados caducados y a procesos externos que se hacen pasar por instancias de cliente válidas.
Deshabilitar la validación del certificado
El siguiente código muestra cómo deshabilitar la validación del certificado:
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true, 'tlsAllowInvalidCertificates' => true], );
$uri = 'mongodb://<hostname>:<port>/?tls=true&tlsAllowInvalidCertificates=true'; $client = new MongoDB\Client($uri);
Para obtener más información sobre cómo deshabilitar la validación de certificados, consulte Permitir TLS inseguro en la guía de configuración de TLS.
Deshabilitar la verificación del nombre de host
El siguiente código muestra cómo deshabilitar la verificación del nombre de host:
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true, 'tlsAllowInvalidHostnames' => true], );
$uri = 'mongodb://<hostname>:<port>/?tls=true&tlsAllowInvalidHostnames=true'; $client = new MongoDB\Client($uri);
Para obtener más información sobre cómo deshabilitar la verificación del nombre de host, consulte Permitir TLS inseguro en la guía de configuración de TLS.