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

En esta guía, puedes aprender a utilizar cada mecanismo de autenticación disponible en la Community Edition de MongoDB. MongoDB utiliza mecanismos de autenticación para confirmar una identidad y establecer la confianza para garantizar la seguridad en el driver y el servidor antes de conectarse.

Para autenticarse usando GSSAPI/Kerberos o LDAP, revisa el Página de fundamentos de mecanismos de autenticación de empresa. Para obtener más información sobre cómo establecer una conexión con el clúster de MongoDB, consulta la Guía de conexión.

El controlador de Go soporta los siguientes mecanismos de autenticación:

  • SCRAM-SHA-256

  • SCRAM-SHA-1

  • MONGODB-CR

  • MongoDB-AWS

  • X.509

El Go Driver establece una conexión con un mecanismo de autenticación a través de un tipo Cliente. El tipo Client especifica el mecanismo y las credenciales que se utilizarán como opciones de conexión en un tipo Credencial . Para configurar estas opciones, pasa un tipo Credential al método SetAuth() del tipo ClientOptions.

Las siguientes secciones demuestran este proceso usando los cinco mecanismos que admite la Community Edition de MongoDB.

Cada mecanismo de autenticación contiene los siguientes placeholders:

  • db_username - Su nombre de usuario de la base de datos MongoDB

  • db_password - La contraseña del usuario de base de datos MongoDB

  • hostname - La dirección de red de tus servidores MongoDB, accesible por tu cliente

  • port - El número de puerto de tus servidores de MongoDB

  • authenticationDb - Su base de datos MongoDB que contiene los datos de autenticación del usuario. Si omite esta opción, el driver utiliza el valor por defecto admin.

El mecanismo predeterminado utiliza uno de los siguientes mecanismos de autenticación dependiendo de las versiones de MongoDB que soporte tu servidor:

Mecanismo
Versiones

SCRAM-SHA-256

MongoDB 4.0 y versiones posteriores

SCRAM-SHA-1

MongoDB 3.0, 3.2, 3.4 y 3.6

MONGODB-CR

MongoDB 2.6 y anteriores

Para especificar el mecanismo de autenticación por defecto, omite la opción AuthMechanism:

credential := options.Credential{
AuthSource: "<authenticationDb>",
Username: "<db_username>",
Password: "<db_password>",
}
clientOpts := options.Client().ApplyURI("mongodb://<hostname>:<port>").
SetAuth(credential)
client, err := mongo.Connect(context.TODO(), clientOpts)

Para más información sobre los mecanismos de autenticación de challenge-response (CR) y de challenge-response con sal (SCRAM) que soporta MongoDB, consulte la sección SCRAM del manual del servidor.

Importante

SCRAM-SHA-256 es el método de autenticación por defecto para MongoDB a partir de MongoDB 4.0.

SCRAM-SHA-256 es un mecanismo de autenticación por desafío y respuesta con sal (SCRAM) que usa tu nombre de usuario y contraseña de base de datos, cifrados con el algoritmo SHA-256, para autenticar al usuario.

Para especificar el mecanismo de autenticación SCRAM-SHA-256, asigne el valor "SCRAM-SHA-256" a la opción AuthMechanism:

credential := options.Credential{
AuthMechanism: "SCRAM-SHA-256",
AuthSource: "<authenticationDb>",
Username: "<db_username>",
Password: "<db_password>",
}
clientOpts := options.Client().ApplyURI("mongodb://<hostname>:<port>").
SetAuth(credential)
client, err := mongo.Connect(context.TODO(), clientOpts)

Importante

SCRAM-SHA-1 es el método de autenticación por defecto para las versiones 3.0, 3.2, 3.4 y 3.6 de MongoDB.

SCRAM-SHA-1 es un mecanismo de desafío-respuesta salado (SCRAM) que utiliza su nombre de usuario y contraseña, cifrados mediante el algoritmo SHA-1, para autenticar a su usuario.

Para especificar el mecanismo de autenticación SCRAM-SHA-1, asigne el valor "SCRAM-SHA-1" a la opción AuthMechanism:

credential := options.Credential{
AuthMechanism: "SCRAM-SHA-1",
AuthSource: "<authenticationDb>",
Username: "<db_username>",
Password: "<db_password>",
}
clientOpts := options.Client().ApplyURI("mongodb://<hostname>:<port>").
SetAuth(credential)
client, err := mongo.Connect(context.TODO(), clientOpts)

MONGODB-CR es un mecanismo de autenticación de desafío-respuesta que utiliza tu nombre de usuario y contraseña para autenticar a tu usuario.

Importante

Este mecanismo de autenticación se desaprobó a partir de MongoDB 3.6 y ya no está soportado en MongoDB 4.0.

Importante

El mecanismo de autenticación MONGODB-AWS está disponible solo en MongoDB versiones 4.4 y posteriores.

El mecanismo de autenticación MONGODB-AWS utiliza tus credenciales de Amazon Web Services Identity and Access Gestión (AWS IAM) para autenticar a tu usuario.

Para conectarse a una instancia de MongoDB con autenticación MONGODB-AWS habilitada, especifique el mecanismo de autenticación MONGODB-AWS.

El controlador verifica tus credenciales en las siguientes fuentes, en el orden en que aparecen:

  1. cadena de conexión.

  2. Variables de entorno.

  3. Archivo de token de identidad web.

  4. Endpoint AWS ECS especificado en la variable de entorno AWS_CONTAINER_CREDENTIALS_RELATIVE_URI.

  5. Punto final de AWS EC2. Para obtener más información, consulta Roles IAM para tareas en la documentación de AWS.

Importante

El controlador obtiene las credenciales solo de la primera fuente en la que se encuentran. Por ejemplo, si se especifican las credenciales de AWS en la cadena de conexión, el driver ignorará cualquier otra credencial especificada en las variables de entorno.

Tip

Los siguientes ejemplos establecen las credenciales adecuadas utilizando el método SetAuth(). También puedes especificar estas credenciales utilizando el método ApplyURI(). Si utilizas el método ApplyURI(), debes codificar en URL el nombre de usuario y la contraseña para garantizar que se analicen correctamente.

Para conectarte a tu instancia de MongoDB utilizando tus credenciales de AWS IAM, realiza los siguientes pasos:

  • Asignar a la opción AuthMechanism el valor MONGODB-AWS

  • Asignar a la opción Username el valor de su accessKeyID

  • Asignar a la opción Password el valor de su secretAccessKey

var accessKeyID, secretAccessKey string
awsCredential := options.Credential{
AuthMechanism: "MONGODB-AWS",
AuthSource: "<authenticationDb>",
Username: "<accessKeyID>",
Password: "<secretAccessKey>",
}
awsIAMClient, err := mongo.Connect(
context.TODO(),
options.Client().SetAuth(awsCredential))
if err != nil {
panic(err)
}
_ = awsIAMClient

Si es necesario especificar un token de sesión AWS, use las credenciales temporales devueltas de una solicitud de rol asumido.

Para utilizar credenciales temporales, asigna el valor de tu sessionToken a la opción AuthMechanismProperties:

var accessKeyID, secretAccessKey, sessionToken string
assumeRoleCredential := options.Credential{
AuthMechanism: "MONGODB-AWS",
AuthSource: "<authenticationDb>",
Username: "<accessKeyID>",
Password: "<secretAccessKey>",
AuthMechanismProperties: map[string]string{
"AWS_SESSION_TOKEN": "<sessionToken>",
},
}
assumeRoleClient, err := mongo.Connect(context.TODO(),
options.Client().SetAuth(assumeRoleCredential))

Para autenticarse en su instancia de MongoDB mediante credenciales de AWS almacenadas en las variables de entorno, utilice una shell para establecer las variables de la siguiente manera:

export AWS_ACCESS_KEY_ID=<awsKeyId>
export AWS_SECRET_ACCESS_KEY=<awsSecretKey>
export AWS_SESSION_TOKEN=<awsSessionToken>

Nota

Si no necesitas un token de sesión de AWS para el rol con el que te estás autenticando, omite la línea que contiene AWS_SESSION_TOKEN.

Tras haber configurado las variables de entorno anteriores, especifica el mecanismo de autenticación MONGODB-AWS como se muestra en el siguiente ejemplo:

envVariablesCredential := options.Credential{
AuthMechanism: "MONGODB-AWS",
}
envVariablesClient, err := mongo.Connect(
context.TODO(),
options.Client().SetAuth(envVariablesCredential))
if err != nil {
panic(err)
}
_ = envVariablesClient

Puedes utilizar el token OpenID Connect (OIDC) obtenido de un proveedor de identidad web para autenticarte en Amazon Elastic Kubernetes Service (EKS) u otros servicios. Para utilizar un token OIDC, crea o localiza el archivo que contiene el token. Luego, establece las siguientes variables de entorno:

  • AWS_WEB_IDENTITY_TOKEN_FILEEstablece la ruta absoluta del archivo que contiene tu token OIDC.

  • AWS_ROLE_ARN: Establecido en el rol de IAM utilizado para conectarse al clúster. Por ejemplo: arn:aws:iam::111122223333:role/my-role.

El siguiente comando de shell configura estas variables de entorno:

export AWS_WEB_IDENTITY_TOKEN_FILE=<absolute path to file that contains OIDC token>
export AWS_ROLE_ARN=<IAM role name>

Después de establecer las variables de entorno anteriores, se debe especificar el mecanismo de autenticación MONGODB-AWS como se muestra en el siguiente ejemplo:

envVariablesCredential := options.Credential{
AuthMechanism: "MONGODB-AWS",
}
envVariablesClient, err := mongo.Connect(
context.TODO(),
options.Client().SetAuth(envVariablesCredential))
if err != nil {
panic(err)
}
_ = envVariablesClient

El mecanismo de autenticación X.509 utiliza TLS con certificados X.509 para autenticar al usuario, identificado por los nombres distinguidos relativos (RDNs) del certificado de cliente. Cuando especificas el mecanismo de autenticación X.509, el servidor autentica la conexión utilizando las rutas de los siguientes archivos:

  • tlsCAFile que contiene una única o un conjunto de autoridades certificadoras en las que confiar al establecer una conexión TLS

  • tlsCertificateKeyFile que hace referencia a la ruta del archivo del certificado de cliente o del archivo de la clave privada del cliente

Para especificar el mecanismo de autenticación X.509, realiza lo siguiente:

  • Asignar al tlsCAFile la ruta a su archivo en la cadena de conexión

  • Asignar al tlsCertificateKeyFile la ruta a su archivo en la cadena de conexión

  • Asignar a la opción AuthMechanism el valor "MONGODB-X509"

caFilePath := "<cafile_path>"
certificateKeyFilePath := "<client_certificate_path>"
uri := "mongodb://<hostname>:<port>/?tlsCAFile=%s&tlsCertificateKeyFile=%s"
uri = fmt.Sprintf(uri, caFilePath, certificateKeyFilePath)
credential := options.Credential{
AuthMechanism: "MONGODB-X509",
}
clientOpts := options.Client().ApplyURI(uri).SetAuth(credential)

Volver

Context

En esta página