Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Mecanismos de autenticación

Esta guía describe los mecanismos que puedes utilizar en el controlador de C++ para autenticar usuarios.

SCRAM-SHA-256, tal como se define en RFC 7677, es el mecanismo de autenticación por defecto para implementaciones de MongoDB que ejecutan MongoDB v4.0 o posterior.

Para autenticarte con este mecanismo, establece las siguientes opciones de conexión:

  • db_username: El nombre de usuario de la base de datos para autenticar.

  • db_password: La contraseña de la base de datos para autenticar.

  • authSourceLa base de datos MongoDB contra la que se debe autenticar. Por defecto, el controlador de C++ se autentica contra la base de datos en el URI de conexión, si incluyes uno. Si no lo hace, se autentica contra la base de datos de admin.

  • authMechanism: Establecer en "SCRAM-SHA-256".

Puedes configurar estas opciones en la cadena de conexión al crear un objeto mongocxx::client, como se muestra en el siguiente ejemplo:

auto uri = mongocxx::uri("mongodb://<db_username>:<db_password>@<hostname>:<port>/?"
"authSource=admin&authMechanism=SCRAM-SHA-256");
auto client = mongocxx::client(uri);

SCRAM-SHA-1, como se define en RFC 5802 es el mecanismo de autenticación predeterminado en implementaciones de MongoDB que ejecutan MongoDB v3.6.

Para autenticarte con este mecanismo, establece las siguientes opciones de conexión:

  • db_username: El nombre de usuario de la base de datos para autenticar.

  • db_password: La contraseña de la base de datos para autenticar.

  • authSourceLa base de datos MongoDB contra la que se debe autenticar. Por defecto, el controlador de C++ se autentica en la base de datos admin.

  • authMechanism: Establecer en "SCRAM-SHA-1".

Puedes configurar estas opciones en la cadena de conexión al crear un objeto mongocxx::client, como se muestra en el siguiente ejemplo:

auto uri = mongocxx::uri("mongodb://<db_username>:<db_password>@<hostname>:<port>/?"
"authSource=admin&authMechanism=SCRAM-SHA-1");
auto client = mongocxx::client(uri);

Si activas TLS, durante el apretón de manos TLS, el controlador C++ puede presentar un certificado de cliente X.509 a MongoDB para demostrar su identidad. El mecanismo de autenticación MONGODB-X509 utiliza este certificado para autenticar al cliente.

Para autenticarte con este mecanismo, establece las siguientes opciones de conexión:

  • tls: Establecer en True.

  • tlsCertificateKeyFile: El emplazamiento del archivo .pem que contiene su certificado de cliente y su llave privada.

  • authMechanism: Establecer en "MONGODB-X509".

Puedes configurar estas opciones en la cadena de conexión al crear un objeto mongocxx::client, como se muestra en el siguiente ejemplo:

auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?"
"tls=true&tlsCertificateKeyFile=path/to/client.pem&authMechanism=MONGODB-X509");
auto client = mongocxx::client(uri);

Para obtener más información sobre cómo habilitar TLS, consulte Configura la seguridad en la capa de transporte (TLS).

Importante

El mecanismo de autenticación MONGODB-AWS requiere MongoDB v4.4 o posterior.

El mecanismo de autenticación MONGODB-AWS utiliza AWS IAM (Amazon Web Services Identity and Access Management) o credenciales de AWS Lambda para autenticar tu aplicación. Para autenticar usando este mecanismo, primero crea un usuario con un Amazon Resource Name (ARN) asociado en la $external base de datos y luego especifica el MONGODB-AWS authMechanism en el URI.

Cuando usas el mecanismo MONGODB-AWS, el driver de C++ intenta recuperar tus credenciales de AWS de las siguientes fuentes, en el orden descrito:

  1. Parámetros nombrados pasados al URI de conexión

  2. Variables de entorno

  3. Solicitud de AWS EKS AssumeRoleWithWebIdentity

  4. Metadatos de contenedor ECS

  5. Metadatos de la instancia EC2

Las siguientes secciones describen cómo utilizar el driver C++ para recuperar credenciales de estas fuentes y utilizarlas para autenticar su aplicación.

Primero, el controlador C++ comprueba si has pasado credenciales de AWS al constructor MongoClient como parte de la URI de conexión. Para pasar tus credenciales en el URI de tu conexión, establece las siguientes opciones de conexión:

  • username: La clave de acceso de AWS IAM para autenticar.

  • password: La clave de acceso secreta de AWS IAM.

  • authMechanism: Establecer en "MONGODB-AWS".

Puedes configurar estas opciones en la cadena de conexión al crear un objeto mongocxx::client, como se muestra en el siguiente ejemplo:

auto uri = mongocxx::uri("mongodb://<AWS IAM access key ID>:<AWS IAM secret access key>@<hostname>:<port>/?"
"authMechanism=MONGODB-AWS");
auto client = mongocxx::client(uri);

También puedes incluir un token de sesión de AWS pasándolo al parámetro authMechanismProperties:

auto uri = mongocxx::uri("mongodb://<AWS IAM access key ID>:<AWS IAM secret access key>@<hostname>:<port>/?"
"authMechanism=MONGODB-AWSS&authMechanismProperties=AWS_SESSION_TOKEN:<token>");
auto client = mongocxx::client(uri);

Si no proporcionas un nombre de usuario y una contraseña al construir tu objeto MongoClient, el controlador de C++ intentará recuperar las credenciales de AWS de las siguientes variables de entorno:

  • AWS_ACCESS_KEY_ID

  • AWS_SECRET_ACCESS_KEY

  • AWS_SESSION_TOKEN (Opcional)

Para utilizar estas variables de entorno para autenticar tu aplicación, primero configúralas con los valores de IAM de AWS necesarios para la autenticación, como se muestra en el siguiente ejemplo de código:

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>

Después de establecer estas variables de entorno, establezca el parámetro authMechanism en su URI de conexión a "MONGODB-AWS", como se muestra en el siguiente ejemplo:

auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?"
"authMechanism=MONGODB-AWS");
auto client = mongocxx::client(uri);

Si tu aplicación autentica a los usuarios de tu clúster EKS desde un proveedor de identidad OpenID Connect (OIDC), el driver de C++ puede hacer una solicitud AssumeRoleWithWebIdentity para intercambiar el token OIDC por credenciales temporales de AWS para tu aplicación.

Para autenticarse con credenciales temporales de AWS IAM devueltas por una solicitud AssumeRoleWithWebIdentity, asegúrese de que el archivo de configuración de AWS exista en su entorno y esté configurado con las variables de entorno AWS_WEB_IDENTITY_TOKEN_FILE y AWS_ROLE_ARN. Para aprender a crear y configurar un archivo de configuración de AWS, consulta Configuración en la documentación de AWS.

Después de configurar tu entorno para una solicitud AssumeRoleWithWebIdentity, establece el parámetro authMechanism en tu URI de conexión en "MONGODB-AWS", como se muestra en el siguiente ejemplo:

auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?"
"authMechanism=MONGODB-AWS");
auto client = mongocxx::client(uri);

Para obtener más información sobre el uso de una solicitud AssumeRoleWithWebIdentity para autenticar tu aplicación, consulta la siguiente documentación de AWS:

Si tu aplicación se ejecuta en un contenedor Elastic Container Service (ECS), el driver C++ puede recuperar automáticamente credenciales temporales de AWS desde un endpoint ECS. Para hacerlo, especifica el URI del endpoint ECS en una variable de entorno llamada AWS_CONTAINER_CREDENTIALS_RELATIVE_URI, como se muestra en el siguiente ejemplo:

export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<URI of the ECS endpoint>

Después de configurar la variable de entorno, establece el parámetro authMechanism en tu URI de conexión a "MONGODB-AWS", como se muestra en el siguiente ejemplo:

auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?"
"authMechanism=MONGODB-AWS");
auto client = mongocxx::client(uri);

El driver de C++ puede recuperar automáticamente credenciales temporales de AWS desde una instancia de Amazon Elastic nube Compute (EC2). Para utilizar credenciales temporales desde una instancia de EC2, configure el parámetro authMechanism en su URI de conexión a "MONGODB-AWS", como se muestra en el siguiente ejemplo:

auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?"
"authMechanism=MONGODB-AWS");
auto client = mongocxx::client(uri);

Nota

Si configuras alguna de las variables de entorno de los métodos de autenticación de AWS anteriores, el driver de C++ intentará recuperar las credenciales utilizando esos métodos antes de intentar obtenerlas de una instancia EC2. Para intentar recuperar credenciales solo desde una instancia EC2, asegúrese de que las variables de entorno no estén configuradas.

Para obtener más información sobre cómo crear un objeto mongocxx::client en el driver de C++, consulte la siguiente documentación de la API:

Volver

Seguridad

En esta página