Overview
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.
Marcadores de posición de código
Los ejemplos de código de esta página utilizan los siguientes marcadores de posición:
<hostname>:La dirección de red de su implementación de MongoDB Atlas<awsKeyId>:Su ID de clave de acceso de AWS<awsSecretKey>:Su clave de acceso secreta de AWS<awsSessionToken>:Su token de sesión de AWS
Para utilizar los ejemplos de código en esta página, reemplace estos marcadores de posición con sus propios valores.
Especificar credenciales de AWS IAM manualmente
Puede proporcionar sus credenciales de AWS IAM en un objeto MongoClientSettings, ya sea mediante un objeto MongoCredential o como parte de la cadena de conexión. Seleccione el
Connection String o la pestaña MongoCredential para ver la sintaxis correspondiente para especificar sus credenciales:
var connectionString = "mongodb+srv://<awsKeyId>:<awsSecretKey>@<hostname>?" + "authSource=$external" + "&authMechanism=MONGODB-AWS"; var mongoClientSettings = MongoClientSettings.FromConnectionString(connectionString); var client = new MongoClient(mongoClientSettings);
Si está utilizando un token de sesión de AWS, incluya el parámetro authMechanismProperties en la cadena de conexión como se muestra a continuación:
var connectionString = "mongodb+srv://<awsKeyId>:<awsSecretKey>@<hostname>?" + "authSource=$external" + "&authMechanism=MONGODB-AWS" + "&authMechanismProperties=AWS_SESSION_TOKEN:<awsSessionToken>";
var mongoClientSettings = MongoClientSettings .FromConnectionString("mongodb+srv://<hostname>"); mongoClientSettings.Credential = new MongoCredential( "MONGODB-AWS", new MongoExternalIdentity("<awsKeyId>"), new PasswordEvidence("<awsSecretKey>")); var client = new MongoClient(mongoClientSettings);
Si está utilizando un token de sesión de AWS, llame al método WithMechanismProperty() en su objeto MongoCredential como se muestra a continuación:
mongoClientSettings.Credential = new MongoCredential( "MONGODB-AWS", new MongoExternalIdentity("<awsKeyId>"), new PasswordEvidence("<awsSecretKey>")) .WithMechanismProperty("AWS_SESSION_TOKEN", "<awsSessionToken>");
Recuperar credenciales de AWS IAM automáticamente
En lugar de especificar sus credenciales de AWS IAM en MongoClientSettings, puede indicarle al controlador .NET/C# que utilice el SDK de AWS para recuperar automáticamente sus credenciales de una fuente externa.
Para indicar al controlador que recupere sus credenciales, primero debe especificar MONGODB-AWS como mecanismo de autenticación y especificar que la fuente de autenticación es externa a MongoDB. Puede especificar el mecanismo y la fuente de autenticación mediante un objeto MongoCredential o como parte de la cadena de conexión. Seleccione la pestaña Connection String o MongoCredential para ver la sintaxis correspondiente para especificar el mecanismo de autenticación MONGODB-AWS y la fuente de autenticación externa:
var connectionString = "mongodb+srv://<hostname>?" + "authMechanism=MONGODB-AWS" + "&authSource=$external"; var mongoClientSettings = MongoClientSettings .FromConnectionString(connectionString); var client = new MongoClient(mongoClientSettings);
var mongoClientSettings = MongoClientSettings .FromConnectionString("mongodb+srv://<hostname>"); mongoClientSettings.Credential = new MongoCredential( "MONGODB-AWS", new MongoExternalAwsIdentity(), new ExternalEvidence()); var client = new MongoClient(mongoClientSettings);
Después de especificar el mecanismo y la fuente de autenticación, debe configurar sus credenciales en la ubicación correspondiente al tipo de credencial. El controlador .NET/C# busca credenciales en las siguientes ubicaciones en el orden indicado.
Proveedor de identidad web
Puede usar un proveedor de identidad web compatible con OpenID Connect (OIDC) para autenticarse en Amazon Elastic Kubernetes Service (EKS) u otros servicios. Para usar un proveedor de identidad web, cree un archivo que contenga su token OIDC y, a continuación, configure la ruta absoluta a este archivo en una variable de entorno mediante bash o un shell similar, como se muestra en el siguiente ejemplo:
export AWS_WEB_IDENTITY_TOKEN_FILE=<absolute path to file containing your OIDC token>
Archivo de credenciales compartidas de AWS
Para autenticarse mediante un perfil en un archivo de credenciales de AWS compartido, puede usar un editor de texto, el SDK de AWS para .NET o la CLI de AWS para crear el archivo de credenciales apropiado.
Variables de entorno
Para recuperar credenciales directamente de las variables de entorno, configure las siguientes variables de entorno utilizando bash o un shell similar:
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.
Credenciales del contenedor ECS
Para autenticarse con las credenciales del contenedor ECS, configure el URI de su punto final ECS en una variable de entorno mediante bash o un shell similar. Seleccione la pestaña Full ECS URI o Relative ECS URI para ver la sintaxis para especificar la variable de entorno correspondiente:
export AWS_CONTAINER_CREDENTIALS_FULL_URI=<full ECS endpoint>
export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<relative ECS endpoint>
Credenciales del contenedor EC2
Para autenticarse con las credenciales del contenedor EC2, asegúrese de que ninguna de las variables de entorno anteriores esté configurada. El controlador obtiene las credenciales del punto final de metadatos de la instancia EC2 IPv4 predeterminada.
Documentación de la API
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: