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
/ /

Mecanismo de autenticación AWS IAM

La MONGODB-AWS El mecanismo de autenticación utiliza credenciales de Amazon Web Services Identity and Access Management (AWS IAM) para autenticar a un usuario en MongoDB. Solo puede usar este mecanismo al autenticarse en MongoDB Atlas.

Tip

Configurar Atlas para la autenticación de AWS IAM

Para obtener más información sobre cómo configurar MongoDB Atlas para la autenticación de AWS IAM, consulta Configure la autenticación con AWS IAM en la documentación de Atlas.

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:

  1. Proveedor de credenciales personalizado (si se proporciona a la MongoClient)

  2. Variables de entorno disponibles a través de process.env

  3. Credenciales de SSO de la caché de tokens

  4. Credenciales de token de identidad web a través de AWS_WEB_IDENTITY_TOKEN_FILE

  5. Credenciales compartidas y archivos de configuración .ini

  6. EC2 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 esa función.

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, cree un archivo que contenga su token OIDC. A continuación, establezca la ruta absoluta de este archivo en una variable de entorno mediante un 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);

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.

Para obtener más información sobre cualquiera de los métodos o tipos analizados en esta página, consulte la siguiente documentación de API:

Volver

X.509

En esta página