Overview
MongoDB admite múltiples mecanismos que protegen tu conexión a la base de datos. Esta página contiene ejemplos de código que muestran cada uno de estos mecanismos.
Tip
Para aprender más sobre cualquiera de los mecanismos que aparecen en esta página, consulta 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úrate de reemplazar todos los marcadores de posición en los ejemplos de código, tales 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 autenticar 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 un URI de conexión para autenticarse utilizando 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 utilizando el mecanismo de autenticación MONGODB-AWS. Cuando utilices el mecanismo MONGODB-AWS, la MongoDB PHP librería intentará recuperar tus 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 el parámetro arreglo$uriOptionsVariables de entorno
Solicitud de AWS EKS
AssumeRoleWithWebIdentityMetadatos de contenedor ECS
Metadatos de la instancia EC2
Cada sección muestra cómo autenticarse con MONGODB-AWS al recuperar las credenciales de AWS desde las opciones pasadas al cliente o desde fuentes externas alternativas.
Para obtener más información sobre la autenticación con AWS, consulta Autenticación AWS IAM en la guía de autenticación.
Credenciales del cliente de MongoDB
El siguiente código muestra cómo pasar las 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 la autenticación con AWS recuperando credenciales de MongoDB\Client, consulta Credenciales del cliente de MongoDB 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 la autenticación con AWS mediante la obtención de credenciales externas, consulta 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 tu 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 Certificadora (CA)
El siguiente código muestra cómo especificar la ruta a tu archivo CA para la conexión a tu 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 desactivar las comprobaciones OCSP, consulta OCSP en la guía 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 la 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, consulta 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 tu 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 aprender más sobre cómo proporcionar la contraseña de un archivo de clave, consulte Proporcionar una contraseña clave en la guía de Configuración de TLS.
Permitir TLS no seguro
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 permitir TLS no seguro, consulta Permitir TLS no seguro en la guía de configuración TLS.
Advertencia
Configurar la opción tlsInsecure a true podría exponer su aplicación a riesgos de seguridad. Habilitar esta opción hace que su aplicación sea insegura y posiblemente vulnerable a certificados caducados y a procesos ajenos que se presentan como instancias de clientes válidos.
Desactivar la validación de certificados
El siguiente código muestra cómo desactivar la validación de certificados:
$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, consulta 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, consulta Permitir TLS inseguro en la guía de configuración TLS.