Overview
El mecanismo de autenticación MONGODB-AWS utiliza las credenciales de Amazon Web Services Identity and Access Management (AWS IAM) para autenticar a un usuario en MongoDB. Puede usar este mecanismo solo cuando se autentique en MongoDB Atlas.
Tip
Configura Atlas para la autenticación IAM de AWS
Para obtener más información sobre cómo configurar MongoDB Atlas para la autenticación de AWS IAM, consulte Configurar la autenticación con AWS IAM en la documentación de Atlas.
Especificar la autenticación MONGODB-AWS
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 el driver Node.js v7.1.0 y posteriores, el paquete aws4 ya no es necesario para la autenticación de AWS, por lo que no es necesario instalar el paquete aws4.
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 este orden:
Proveedor de credenciales personalizado (si se proporciona a la
MongoClient)Variables de entorno disponibles a través de process.env
credenciales SSO de la caché de tokens
Credenciales de token de identidad web a través de
AWS_WEB_IDENTITY_TOKEN_FILECredenciales compartidas y archivos de configuración
.iniEC2 o ECS Instance Metadata Service. Para más información, consulta Roles de IAM para tareas.
Importante
El controlador solo lee las credenciales a partir del primer método que detecta en el orden indicado por la lista anterior. Por ejemplo, si especificas tus credenciales de AWS en variables de entorno, el controlador ignora cualquier credencial que hayas especificado en un archivo de token de identidad web.
Para autenticarte en tu instancia de MongoDB utilizando las credenciales de AWS almacenadas en las variables de entorno disponibles a través de process.env, establezca las siguientes variables utilizando una shell:
export AWS_ACCESS_KEY_ID=<awsKeyId> export AWS_SECRET_ACCESS_KEY=<awsSecretKey> export AWS_SESSION_TOKEN=<awsSessionToken>
Nota
Omita la línea que contiene AWS_SESSION_TOKEN si no necesita un token de sesión de AWS para ese rol.
AWS recomienda usar endpoints regionales de AWS STS en lugar de endpoints globales para reducir la latencia, crear redundancia integrada y aumentar la validez del token de la sesión. Para establecer la región de AWS, configura AWS_REGION y AWS_STS_REGIONAL_ENDPOINTS como variables de entorno, como se muestra en el siguiente ejemplo:
export AWS_STS_REGIONAL_ENDPOINTS=regional // Enables regional endpoints export AWS_REGION=us-east-1 // Sets your AWS region
Si ninguna de estas variables de entorno está configurada, la región por defecto es us-east-1. Para obtener una lista de las regiones de AWS disponibles, consulta la sección puntos de enlace regionales de referencia de puntos de enlace de servicios de AWS en la documentación de AWS.
Después de establecer las variables de entorno anteriores, especificar el mecanismo de autenticación MONGODB-AWS en la cadena de conexión como se muestra en el siguiente ejemplo:
const { MongoClient } = require("mongodb"); // Remember to specify your AWS credentials in environment variables. const clusterUrl = "<cluster_url>"; const authMechanism = "MONGODB-AWS"; let uri = `mongodb+srv://${clusterUrl}/?authSource=%24external&authMechanism=${authMechanism}`; // Create a new MongoClient. const client = new MongoClient(uri); async function run() { try { // Establish and verify connection. await client.db("admin").command({ ping: 1 }); console.log("Connected successfully to server."); } finally { // Ensure that the client closes when it finishes/errors. await client.close(); } } run().catch(console.dir);
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 autenticarte con tu token OIDC, primero debes instalar @aws-sdk/credential-providers. Puedes instalar esta dependencia utilizando el siguiente comando npm:
npm install @aws-sdk/credential-providers
A continuación, crea un archivo que contenga tu token OIDC. Luego realiza la configuración de la ruta absoluta hacia este archivo en una variable de entorno utilizando una shell como se muestra en el siguiente ejemplo:
export AWS_WEB_IDENTITY_TOKEN_FILE=<absolute path to file containing your OIDC token>
Después de haber definido la variable de entorno anterior, especifica el mecanismo de autenticación MONGODB-AWS en tu cadena de conexión como se muestra en el siguiente ejemplo:
const { MongoClient } = require("mongodb"); // Remember to specify your AWS credentials in environment variables. const clusterUrl = "<cluster_url>"; const authMechanism = "MONGODB-AWS"; let uri = `mongodb+srv://${clusterUrl}/?authSource=%24external&authMechanism=${authMechanism}`; // Create a new MongoClient. const client = new MongoClient(uri); async function run() { try { // Establish and verify connection. await client.db("admin").command({ ping: 1 }); console.log("Connected successfully to server."); } finally { // Ensure that the client closes when it finishes/errors. await client.close(); } } run().catch(console.dir);
Especificar manualmente las credenciales de AWS
Cuando instalas la dependencia opcional aws-sdk/credential-providers, el controlador recupera las credenciales en un orden de prioridad definido por el SDK de AWS. Si tienes un archivo compartido de credenciales de AWS o un archivo de configuración, el controlador usará esas credenciales por defecto.
Tip
Para más información sobre cómo la dependencia aws-sdk/credential-providers recupera credenciales, consulta la documentación de AWS SDK.
Para especificar manualmente las credenciales de AWS que se desean recuperar, puede configurar la propiedad AWS_CREDENTIAL_PROVIDER con un proveedor de credenciales definido del AWS SDK. El siguiente ejemplo pasa una cadena de proveedores del AWS SDK al mecanismo de autenticación de AWS:
const { MongoClient } = require('mongodb'); const { fromNodeProviderChain } = require('@aws-sdk/credential-providers'); const client = new MongoClient('<cluster_url>?authMechanism=MONGODB-AWS', { authMechanismProperties: { AWS_CREDENTIAL_PROVIDER: fromNodeProviderChain() } });
Para usar un proveedor personalizado, puedes pasar cualquier función asíncrona que devuelva tus credenciales a la propiedad del mecanismo de autenticación AWS_CREDENTIAL_PROVIDER. El siguiente ejemplo muestra cómo pasar una función de proveedor personalizada que obtenga credenciales de las variables de entorno al mecanismo de autenticación de AWS:
const { MongoClient } = require('mongodb'); const client = new MongoClient('<cluster_url>?authMechanism=MONGODB-AWS', { authMechanismProperties: { AWS_CREDENTIAL_PROVIDER: async () => { return { accessKeyId: process.env.ACCESS_KEY_ID, secretAccessKey: process.env.SECRET_ACCESS_KEY } } } });
Un proveedor de credenciales personalizado tiene prioridad sobre cualquier otra forma de autenticación.
Documentación de la API
Para aprender más sobre cualquiera de los métodos o tipos tratados en esta página, consulta la siguiente documentación de la API: