Docs Menu
Docs Home
/ /

Mecanismos de autenticación

En esta guía, aprenderá a usar cada mecanismo de autenticación disponible en MongoDB Community Edition. MongoDB utiliza mecanismos de autenticación para confirmar una identidad y establecer confianza para garantizar la seguridad del controlador y el servidor antes de la conexión.

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

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

  • SCRAM-SHA-256

  • SCRAM-SHA-1

  • MONGODB-CR

  • MongoDB-AWS

  • X.509

El controlador Go establece una conexión con un mecanismo de autenticación mediante un tipo de cliente. El Client tipo especifica el mecanismo y las credenciales que se usarán como opciones de conexión en un tipo de credencial. Para configurar estas opciones, pase un Credential tipo al método SetAuth() del tipo ClientOptions.

Las siguientes secciones demuestran este proceso utilizando los cinco mecanismos que admite MongoDB Community Edition.

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 sus servidores MongoDB, a la que puede acceder su cliente

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

  • authenticationDb - La base de datos MongoDB que contiene los datos de autenticación del usuario. Si omite esta opción, el controlador usa el valor predeterminado 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 obtener más información sobre los mecanismos de autenticación desafío-respuesta (CR) y desafío-respuesta con sal (SCRAM) que admite MongoDB, consulte la sección SCRAM del manual del servidor.

Importante

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

SCRAM-SHA-256 es un mecanismo de autenticación de desafío-respuesta salado (SCRAM) que utiliza su nombre de usuario y contraseña de la base de datos, encriptados con el algoritmo SHA-256, para autenticar a su usuario.

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

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 predeterminado 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, encriptados mediante el algoritmo SHA-1, para autenticar a su usuario.

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

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 su nombre de usuario y contraseña para autenticar a su 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 sus credenciales de Amazon Web Services Identity and Access Management (AWS IAM) para autenticar a su usuario.

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

El controlador verifica sus credenciales en las siguientes fuentes en el orden indicado:

  1. Cadena de conexión.

  2. Variables de entorno.

  3. Archivo de token de identidad web.

  4. Punto final de AWS ECS especificado en la variable de entorno AWS_CONTAINER_CREDENTIALS_RELATIVE_URI.

  5. Punto2 de conexión de AWS EC. Para obtener más información, consulte Roles de IAM para tareas en la documentación de AWS.

Importante

El controlador obtiene las credenciales solo de la primera fuente donde se encuentran. Por ejemplo, si especifica sus credenciales de AWS en la cadena de conexión, el controlador ignorará cualquier credencial que especifique 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 conectarse a su instancia de MongoDB usando sus credenciales de AWS IAM, realice los siguientes pasos:

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

  • Asigna a la opción Username el valor de tu accessKeyID

  • Asigna a la opción Password el valor de tu 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 debe especificar un token de sesión de AWS, utilice las credenciales temporales devueltas de una solicitud de asunción de rol.

Para utilizar credenciales temporales, asigne el valor de su 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 utilizando las credenciales de AWS almacenadas en variables de entorno, use un shell para configurar 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 necesita un token de sesión de AWS para el rol con el que se está autenticando, omita la línea que contiene AWS_SESSION_TOKEN.

Después de configurar las variables de entorno anteriores, especifique 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

Puede usar el token de OpenID Connect (OIDC) obtenido de un proveedor de identidad web para autenticarse en Amazon Elastic Kubernetes Service (EKS) u otros servicios. Para usar un token OIDC, cree o localice el archivo que contiene su token. A continuación, configure las siguientes variables de entorno:

  • AWS_WEB_IDENTITY_TOKEN_FILE:Establezca la ruta absoluta del archivo que contiene su 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 establece 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 configurar las variables de entorno anteriores, especifique 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 X.509 mecanismo de autenticación utiliza TLS con509 certificados X. para autenticar a su usuario, identificado por los nombres distinguidos relativos (RDN) de su certificado de cliente. Al especificar el X.509 mecanismo de autenticación, el servidor autentica la conexión mediante las rutas de los siguientes archivos:

  • tlsCAFile que contiene una sola autoridad de certificación o un conjunto de ellas en las que confiar al realizar una conexión TLS

  • tlsCertificateKeyFile que hace referencia a la ruta al archivo del certificado del cliente o al archivo de 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