Overview
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.
Mecanismos soportados
El controlador Go admite los siguientes mecanismos de autenticación:
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.
Convenciones de ejemplo
Cada mecanismo de autenticación contiene los siguientes placeholders:
db_username- Su nombre de usuario de la base de datos MongoDBdb_password- La contraseña del usuario de base de datos MongoDBhostname- La dirección de red de sus servidores MongoDB, a la que puede acceder su clienteport- El número de puerto de sus servidores MongoDBauthenticationDb- La base de datos MongoDB que contiene los datos de autenticación del usuario. Si omite esta opción, el controlador usa el valor predeterminadoadmin.
predeterminado
El mecanismo predeterminado utiliza uno de los siguientes mecanismos de autenticación dependiendo de las versiones de MongoDB que soporte tu servidor:
Mecanismo | Versiones |
|---|---|
| MongoDB 4.0 y versiones posteriores |
| MongoDB 3.0, 3.2, 3.4 y 3.6 |
| 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.
SCRAM-SHA-256
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)
SCRAM-SHA-1
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
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.
MONGODB-AWS
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:
Cadena de conexión.
Variables de entorno.
Archivo de token de identidad web.
Punto final de AWS ECS especificado en la variable de entorno
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI.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
AuthMechanismel valorMONGODB-AWSAsigna a la opción
Usernameel valor de tuaccessKeyIDAsigna a la opción
Passwordel valor de tusecretAccessKey
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
X.509
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:
tlsCAFileque contiene una sola autoridad de certificación o un conjunto de ellas en las que confiar al realizar una conexión TLStlsCertificateKeyFileque 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
tlsCAFilela ruta a su archivo en la cadena de conexiónAsignar al
tlsCertificateKeyFilela ruta a su archivo en la cadena de conexiónAsignar a la opción
AuthMechanismel 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)