Docs Menu
Docs Home
/ /

Mecanismo de autenticación de AWS IAM

El 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. Este mecanismo solo se puede usar 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, consulte Configurar la autenticación con AWS IAM en la documentación de Atlas.

El MONGODB-AWS mecanismo de autenticación utiliza sus credenciales de Amazon Web Services Identity and Access Management (AWS IAM) para autenticar a su usuario. Para el controlador Node.js v7.1.0 y versiones posteriores, el paquete aws4 ya no es necesario para la autenticación de AWS, por lo que no necesita instalar el aws4 paquete.

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 tus credenciales en las siguientes fuentes en este orden:

  1. Proveedor de credenciales personalizado (si se proporciona a 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. Servicio de metadatos de instancias EC o2 ECS. Para obtener más información, consulte 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 autenticarse en su instancia de MongoDB utilizando las credenciales de AWS almacenadas en las variables de entorno disponibles a través de process.env, configure las siguientes variables mediante un 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 puntos de conexión regionales de AWS STS en lugar de puntos de conexión globales para reducir la latencia, integrar redundancia y aumentar la validez del token de sesión. Para configurar la región de AWS, configure 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 no se configuran estas dos variables de entorno, la región predeterminada us-east-1 es. Para obtener una lista de las regiones de AWS disponibles, consulte la sección "Puntos de conexión regionales" de la referencia de puntos de conexión de servicio de AWS en la documentación de AWS.

Después de configurar las variables de entorno anteriores, especifique el mecanismo de autenticación MONGODB-AWS en su 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);

Puede utilizar el token OpenID Connect (OIDC) obtenido de un proveedor de identidad web para autenticarse en Amazon Elastic Kubernetes Service (EKS) u otros servicios.

Para autenticarse con su token OIDC, primero debe instalar @aws-sdk/credential-providers. Puede instalar esta dependencia con el siguiente npm comando:

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 configurar la variable de entorno anterior, especifique el mecanismo de autenticación MONGODB-AWS en su 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);

Al instalar la dependencia opcional aws-sdk/credential-providers, el controlador recupera las credenciales según el orden de prioridad definido por el SDK de AWS. Si tiene un archivo de credenciales o un archivo de configuración de AWS compartido, el controlador las usa de forma predeterminada.

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 recuperarán, puede establecer la propiedad AWS_CREDENTIAL_PROVIDER en un proveedor de credenciales definido desde el SDK de AWS. El siguiente ejemplo transfiere una cadena de proveedores desde el SDK de AWS 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, puede pasar cualquier función asíncrona que devuelva sus 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 obtiene 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