Docs Menu
Docs Home
/ /

Protege tus datos

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.

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:

  1. 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.

  2. Copia el siguiente código y pégalo en un nuevo archivo .php.

  3. Copia un ejemplo de código de esta página y pégalo en las líneas especificadas del archivo.

1<?php
2
3require __DIR__ . '/../vendor/autoload.php';
4
5// Start example code here
6
7// End example code here
8
9try {
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}

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.

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.

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:

  1. Opciones pasadas al constructor MongoDB\Client, ya sea como parte de la cadena de conexión o del parámetro de matriz $uriOptions

  2. Variables de entorno

  3. Solicitud de AWS EKS AssumeRoleWithWebIdentity

  4. Metadatos del contenedor ECS

  5. 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.

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.

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:

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.

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.

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.

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.

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.

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.

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.

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.

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.

Volver

Registro