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

AWS Identity and Access gestión

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.

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.

Nota

Pruebas del SDK de AWS

MONGODB-AWS se prueba con las versiones 2.30.31 y 1.12.782 del AWS SDK.

Los ejemplos de código en esta página utilizan los siguientes marcadores de posición:

  • <awsKeyId>: Su clave de acceso de AWS ID

  • <atlasUri>:La dirección de red de su implementación de MongoDB Atlas

  • <awsSecretKey>Tu clave secreta de acceso de AWS

  • <awsSessionToken>Token de sesión de AWS

  • <hostname>: El nombre de host de tu implementación de MongoDB Atlas

  • <port>: El puerto de tu implementación de MongoDB Atlas

Para utilizar los ejemplos de código en esta página, reemplace estos marcadores de posición con sus propios valores.

Para indicar al controlador que use este mecanismo de autenticación, puedes especificar MONGODB-AWS como un parámetro en la cadena de conexión o mediante el uso del método de fábrica MongoCredential.createAwsCredential().

Esta sección describe cómo especificar este mecanismo de autenticación y las distintas formas de proporcionar sus credenciales de AWS IAM.

Importante

Este método para proporcionar credenciales MONGODB-AWS solo está disponible en el controlador Java v4.8 y versiones posteriores.

Puede especificar sus credenciales utilizando v1 o v2 del AWS SDK para Java, que ofrece las siguientes funcionalidades:

Para utilizar el SDK de AWS para Java para la autenticación MONGODB-AWS, debe realizar las siguientes acciones:

  1. Especificar el mecanismo de autenticación

  2. Agregue el SDK como una dependencia a su proyecto

  3. Proporcione sus credenciales utilizando uno de los métodos en la cadena del proveedor de credenciales

Para especificar el mecanismo de autenticación utilizando un MongoCredential, utiliza el método de fábrica MongoCredential.createAwsCredential() y añade la instancia MongoCredential a tu MongoClient como se muestra en el siguiente ejemplo:

MongoCredential credential = MongoCredential.createAwsCredential(null, null);
// Creates a MongoClient that receives configuration information from a MongoCredential and environment variables
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>"))))
.credential(credential)
.build());

Para especificar el mecanismo de autenticación en la cadena de conexión, agréguelo como parámetro como se muestra en el siguiente ejemplo:

MongoClient mongoClient = MongoClients.create("mongodb://<atlasUri>?authMechanism=MONGODB-AWS");

Para añadir el SDK de AWS como dependencia a tu proyecto, consulta la siguiente documentación de AWS para la versión que necesitas:

  • Para el AWS SDK para Java v2, consulta la guía Configuración.

  • Para el SDK de AWS para Java v,1 consulte la guía de introducción.

Nota

Para AWS SDK for Java v2, las pruebas del controlador de Java utilizan la dependencia software.amazon.awssdk:auth:2.30.31.

Para AWS SDK for Java v1, las pruebas del controlador de Java utilizan la dependencia com.amazonaws:aws-java-sdk-core:1.12.782.

Para suministrar sus credenciales, consulte la siguiente documentación de AWS para la versión que necesita:

Nota

Si incluyes tanto la versión v1 como la v2 del AWS SDK for Java en tu proyecto, debes utilizar los métodos de la v2 para suministrar tus credenciales.

Puede proporcionar sus credenciales de AWS IAM indicando al controlador que utilice el mecanismo de autenticación MONGODB-AWS y configurando las variables de entorno adecuadas.

Para utilizar las variables de entorno para proporcionar tus credenciales, debes realizar las siguientes acciones:

  1. Especificar el mecanismo de autenticación

  2. Agregue las variables de entorno apropiadas

Puedes especificar el mecanismo de autenticación utilizando un MongoCredential o en la cadena de conexión.

Para especificar el mecanismo de autenticación utilizando un MongoCredential, utiliza el método de fábrica MongoCredential.createAwsCredential() y añade la instancia MongoCredential a tu MongoClient como se muestra en el siguiente ejemplo:

MongoCredential credential = MongoCredential.createAwsCredential(null, null);
// Creates a MongoClient that receives configuration information from a MongoCredential and environment variables
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>"))))
.credential(credential)
.build());

Para especificar el mecanismo de autenticación en la cadena de conexión, agréguelo como parámetro como se muestra en el siguiente ejemplo:

MongoClient mongoClient = MongoClients.create("mongodb://<atlasUri>?authMechanism=MONGODB-AWS");

También puede configurar variables de entorno para habilitar los siguientes tipos de autenticación:

  • Claves de acceso programático

  • Proveedor de identidad web

  • Credenciales de contenedor ECS

  • Credenciales del contenedor EC2

El siguiente ejemplo muestra cómo puede configurar sus claves de acceso programático en 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>

Omita la línea que contiene AWS_SESSION_TOKEN si no necesita un token de sesión de AWS para esa función.

Puedes utilizar un proveedor de identidad web compatible con OpenID Connect (OIDC) para autenticarte en Amazon Elastic Kubernetes Service (EKS) u otros servicios.

Importante

Su proyecto debe incluir la v1 o v2 del AWS SDK como dependencia para autenticarse mediante un proveedor de identidad web.

Para utilizar un proveedor de identidad web, se debe crear un archivo que contenga el token OIDC. A continuación, utiliza bash o un shell similar para establecer una variable de entorno en la ruta absoluta de este archivo, como se muestra en el siguiente ejemplo:

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

Para autenticarse usando credenciales de contenedor ECS, establece el URI del endpoint relativo de ECS en una variable de entorno utilizando bash o una shell similar, como se muestra en el siguiente ejemplo:

export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<your ECS endpoint>

Para autenticar mediante el uso de credenciales de contenedor EC2, asegúrate de que ninguna de las variables de entorno mencionadas en esta sección esté configurada. El controlador obtiene las credenciales del endpoint de metadatos por defecto de la instancia de EC2 de IPv4 en lugar de variables de entorno.

Puede proporcionar sus credenciales de AWS IAM a un MongoClient utilizando una instancia MongoCredential. Para construir la instancia de MongoCredential para la autenticación de MONGODB-AWS, utiliza el método de fábrica createAwsCredential().

Solo puede proporcionar claves de acceso programáticas al método MongoCredential.createAwsCredential(). Si debe proporcionar credenciales de contenedor ECS o EC2, utiliza las instrucciones de las secciones Utilizar variables de entorno o Utilizar AWS SDK para Java.

Para usar el MongoCredential para la autenticación MONGODB-AWS, debe realizar las siguientes acciones:

  1. Especificar el mecanismo de autenticación

  2. Proporcione las credenciales

Para especificar el mecanismo de autenticación utilizando un MongoCredential, utiliza el método de fábrica MongoCredential.createAwsCredential() y añade la instancia MongoCredential a tu MongoClient como se muestra en el siguiente ejemplo:

MongoCredential credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray());
// Creates a MongoClient that receives AWS credentials from the MongoCredential instance
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>"))))
.credential(credential)
.build());

Si debes especificar un token de sesión de AWS, pásalo al método withMechanismProperty() como se muestra en el siguiente ejemplo:

MongoCredential credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray()).withMechanismProperty("AWS_SESSION_TOKEN", "<awsSessionToken>");
// Creates a MongoClient that receives configuration information from a MongoCredential instance
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>"))))
.credential(credential)
.build());

Para actualizar tus credenciales, puedes declarar una expresión lambda Supplier que devuelva nuevas credenciales, como se muestra en el siguiente ejemplo:

Supplier<AwsCredential> awsFreshCredentialSupplier = () -> {
// Add your code to fetch new credentials
return new AwsCredential("<awsKeyId>", "<awsSecretKey>", "<awsSessionToken>");
};
// Creates a MongoCredential instance to specify the new AWS credentials
MongoCredential credential = MongoCredential.createAwsCredential(null, null)
.withMechanismProperty(MongoCredential.AWS_CREDENTIAL_PROVIDER_KEY, awsFreshCredentialSupplier);
// Creates a MongoClient that receives new configuration information from a MongoCredential instance
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Collections.singletonList(new ServerAddress("<hostname>", <port>))))
.credential(credential)
.build());

Nota

Si debe proporcionar credenciales de AWS IAM en una cadena de conexión, consulte la versión v4.7 o anterior de la documentación del controlador Java.

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