Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
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 de AWS SDK

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 usar los ejemplos de código en esta página, reemplaza estos marcadores de posición con tus 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 diferentes formas de proporcionar sus credenciales de AWS IAM.

Importante

Este método para proveer credenciales MONGODB-AWS está disponible solo en el driver de Java v4.8 y posteriores.

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

Para utilizar el AWS SDK for Java para autenticación de MONGODB-AWS, se deben 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égalo como un 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:

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.

Puedes proporcionar tus credenciales de AWS IAM indicando al controlador que utilice el MONGODB-AWS mecanismo de autenticación y configurando las variables de entorno apropiadas.

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

  1. Especificar el mecanismo de autenticación

  2. Agregar 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égalo como un parámetro, como se muestra en el siguiente ejemplo:

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

También puedes 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 puedes configurar tus claves de acceso programáticas en variables de entorno usando bash o una 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 ese rol.

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 debes proporcionar credenciales de AWS IAM en una cadena de conexión, consulta la documentación del driver de Java v4.7 o anterior.

Para aprender más sobre cualquiera de los métodos o tipos tratados en esta página, consulta la siguiente documentación de la API:

Volver

X.509

En esta página