Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Menu Docs
Página inicial do Docs
/ / /
Controlador Node.js
/ /

Mecanismo de autenticação IAM do Amazon Web Services

O mecanismo de autenticação do MONGODB-AWS utiliza Credenciais do Amazon Web Services Identity and Access Management (Amazon Web Services IAM) para autenticar um usuário no MongoDB. Você pode usar esse mecanismo somente ao autenticar no MongoDB Atlas.

Dica

Configurar Atlas para Autenticação IAM do Amazon Web Services

Para saber mais sobre como configurar o MongoDB Atlas para autenticação do Amazon Web Services IAM, consulte Configurar a autenticação com o Amazon Web Services IAM na documentação do Atlas .

O mecanismo de autenticação do MONGODB-AWS utiliza suas credenciais do Amazon Web Services Identity and Access Management (AWS IAM) para autenticar o usuário. Se você ainda não tiver a biblioteca de assinaturas da AWS, use o seguinte comando npm para instalá-la:

npm install aws4

Para se conectar a uma instância do MongoDB com a autenticação MONGODB-AWS habilitada, especifique o mecanismo de autenticação MONGODB-AWS.

O driver verifica suas credenciais nas seguintes fontes em ordem:

  1. Connection string

  2. Variáveis de ambiente

  3. Arquivo de token de identidade da Web

  4. Ponto de extremidade AWS ECS especificado em AWS_CONTAINER_CREDENTIALS_RELATIVE_URI

  5. Endpoint AWS EC2 . Para obter mais informações, consulte Funções do IAM para tarefas.

Importante

O driver só lê as credenciais do primeiro método que detecta na ordem dada pela lista anterior. Por exemplo, se você especificar suas credenciais da AWS na cadeia de conexão, o driver ignora qualquer credenciais que você especificou em variáveis de ambiente.

Para se conectar à sua instância do MongoDB com uma cadeia de conexão, passe suas credenciais do AWS_ACCESS_KEY_ID e AWS_SECRET_ACCESS_KEY para o driver quando você tenta se conectar. Se o seu login AWS requer um token de sessão, inclua também seu AWS_SESSION_TOKEN.

O código a seguir mostra um exemplo de especificação do mecanismo de autenticação MONGODB-AWS e das credenciais com uma cadeia de conexão:

Importante

Sempre URI codificar o nome de usuário e o caminho do arquivo de certificado usando o método encodeURIComponent para garantir que eles sejam analisados corretamente.

const { MongoClient } = require("mongodb");
// Replace the following with values for your environment.
const accessKeyId = encodeURIComponent("<AWS_ACCESS_KEY_ID>");
const secretAccessKey = encodeURIComponent("<AWS_SECRET_ACCESS_KEY>");
const clusterUrl = "<cluster_url>";
const authMechanism = "MONGODB-AWS";
let uri =
`mongodb+srv://${accessKeyId}:${secretAccessKey}@${clusterUrl}/?authSource=%24external&authMechanism=${authMechanism}`;
// Uncomment the following lines if your AWS authentication setup requires a session token.
// const sessionToken = encodeURIComponent("<AWS_SESSION_TOKEN>");
// uri = uri.concat(`&authMechanismProperties=AWS_SESSION_TOKEN:${sessionToken}`);
// 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);

Para autenticar em sua instância do MongoDB usando as credenciais do Amazon Web Services armazenadas em variáveis de ambiente, defina as seguintes variáveis usando um shell:

export AWS_ACCESS_KEY_ID=<awsKeyId>
export AWS_SECRET_ACCESS_KEY=<awsSecretKey>
export AWS_SESSION_TOKEN=<awsSessionToken>

Observação

Omita a linha que contém AWS_SESSION_TOKEN se não precisar de um token de sessão AWS para essa função.

A AWS recomenda o uso de pontos de extremidade regionais do AWS STS em vez de pontos de extremidade globais para reduzir a latência, assegurar redundância integrada e aumentar a validade do token de sessão. Para definir a região da AWS, defina AWS_REGION e AWS_STS_REGIONAL_ENDPOINTS como variáveis de ambiente, conforme mostrado no exemplo a seguir:

export AWS_STS_REGIONAL_ENDPOINTS=regional // Enables regional endpoints
export AWS_REGION=us-east-1 // Sets your AWS region

Caso ambas as variáveis de ambiente não estejam definidas, a região padrão será us-east-1. Para uma lista das regiões da AWS disponíveis, consulte a seção Pontos de extremidade Regionais da referência de Pontos de extremidade de Serviço da AWS na documentação da AWS.

Depois de definir as variáveis de ambiente anteriores, especifique o mecanismo de autenticação MONGODB-AWS em sua connection string, conforme mostrado no exemplo a seguir:

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);

Você pode usar o token OpenID Connect (OIDC) obtido de um fornecedor de identidade da Web para autenticar no Amazon Elastic Kubernetes Service (EKS) ou em outros serviços.

Para autenticar com seu token OIDC, você deve primeiro instalar @aws-sdk/credential-providers. Você pode instalar esta dependência utilizando o seguinte comando npm :

npm install @aws-sdk/credential-providers

Em seguida, crie um arquivo que contenha seu token OIDC. Em seguida, defina o caminho absoluto para este arquivo em uma variável de ambiente usando uma shell como mostrado no exemplo a seguir:

export AWS_WEB_IDENTITY_TOKEN_FILE=<absolute path to file containing your OIDC token>

Depois de definir a variável de ambiente anterior, especifique o mecanismo de autenticação MONGODB-AWS em sua connection string, conforme mostrado no exemplo a seguir:

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);

Quando você instala a dependência opcional do aws-sdk/credential-providers, o driver recupera credenciais em uma ordem de prioridade definida pelo Amazon Web Services SDK. Se você tiver um arquivo de credenciais do Amazon Web Services compartilhado ou arquivo de configuração, o driver usará essas credenciais por padrão.

Dica

Para saber mais sobre como a dependência do aws-sdk/credential-providers recupera credenciais, consulte a documentação do Amazon Web Services SDK.

Para especificar manualmente as credenciais do Amazon Web Services a serem recuperadas, você pode definir a propriedade AWS_CREDENTIAL_PROVIDER para um fornecedor de credenciais definido a partir do Amazon Web Services SDK. O exemplo a seguir passa uma cadeia de fornecedores do Amazon Web Services SDK para o mecanismo de autenticação do Amazon Web Services:

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 um provedor personalizado, você pode passar qualquer função assíncrona que retorne suas credenciais para a propriedade do mecanismo de autenticação AWS_CREDENTIAL_PROVIDER. O exemplo a seguir mostra como passar uma função de fornecedor personalizada que obtém credenciais de variáveis de ambiente para o mecanismo de autenticação do Amazon Web Services:

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
}
}
}
});

Para saber mais sobre qualquer um dos métodos ou tipos discutidos nesta página, consulte a seguinte documentação da API:

Voltar

X.509

Nesta página