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

Nota

La autenticación de AWS solo está disponible en la MongoDB Enterprise Edition para MongoDB 4.4 y posteriores.

El mecanismo de autenticación de AWS utiliza AWS Gestión de Identidad y Acceso (IAM) y AWS Security Token Service (STS) para demostrar la identidad del cliente ante una implementación de MongoDB. Los siguientes pasos describen el proceso de autenticación de AWS:

  1. El cliente utiliza credenciales de AWS IAM para crear una firma que se envía a la implementación de MongoDB.

  2. La implementación utiliza la firma del cliente para enviar una solicitud a AWS STS.

  3. Si la solicitud tiene éxito, STS devuelve el Nombre de recurso de Amazon (ARN) del usuario o rol de IAM que corresponde a las credenciales del cliente.

  4. La implementación utiliza el ARN devuelto para buscar al usuario. El cliente está autenticado como este usuario.

Nota

El cliente y el servidor usan nombres de usuario diferentes. El cliente utiliza el ID de clave de acceso a AWS, pero el servidor utiliza el ARN del usuario o rol de IAM que corresponde al ID de la clave de acceso.

Las credenciales de AWS incluyen los siguientes componentes:

  • ID de clave de acceso

  • Clave secreta de acceso

  • Token de sesión opcional

La autenticación con Credenciales de AWS IAM utiliza el ID de clave de acceso y la clave de acceso secreta. La autenticación con credenciales temporales de AWS IAM utiliza los tres componentes.

Nota

El driver nunca envía la clave secreta de acceso ni el token de sesión a través de la red.

Se utilizan credenciales temporales con:

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

  • <hostname>: La dirección de red de tu implementación de MongoDB

  • <aws-access-key-id>ID de clave de acceso de AWS

  • <aws_secret_access_key>: La clave de acceso secreta de AWS

  • <aws_session_token>token de sesión de AWS

Las siguientes secciones describen cómo utilizar el mecanismo de autenticación AWS IAM en su aplicación.

Puede facilitar credenciales regulares (no temporales) de IAM como opciones de cliente o mediante un URI. Elija el Connection String o Client Options pestaña para ver la sintaxis correspondiente:

client = Mongo::Client.new(
'mongodb://<aws_access_key_id>:<aws_secret_access_key>@host/?authMechanism=MONGODB-AWS')
client = Mongo::Client.new(['<host>'],
auth_mech: :aws,
user: '<aws_access_key_id>',
password: '<aws_secret_access_key>')

Nota

Si proporciona credenciales en una URI, debe codificarlas en porcentaje.

Para proporcionar credenciales temporales, especifica el token de sesión en las opciones del cliente o utilizando un URI. Selecciona la pestaña Connection String o Client Options para ver la sintaxis correspondiente:

client = Mongo::Client.new(
'mongodb://<aws_access_key_id>:<aws_secret_access_key>@host/?authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<<aws_session_token>>')
client = Mongo::Client.new(['<host>'],
auth_mech: :aws,
user: '<aws_access_key_id>',
password: '<aws_secret_access_key>',
auth_mech_properties: {
aws_session_token: '<<aws_session_token>>',
})

El cliente puede recuperar credenciales del entorno o desde los endpoints de metadatos EC2 o ECS. Para recuperar credenciales automáticamente, especifique el mecanismo de autenticación de AWS, pero no indique un nombre de usuario ni una contraseña. Selecciona la pestaña Connection String o Client Options para ver la sintaxis correspondiente:

client = Mongo::Client.new(
'mongodb://host/?authMechanism=MONGODB-AWS')
client = Mongo::Client.new(['<hostname>'],
auth_mech: :aws)
)

El controlador intenta obtener credenciales de las siguientes fuentes, en el orden especificado:

  • AWS_ACCESS_KEY_IDy tenga en cuenta los parámetros de entorno AWS_SECRET_ACCESS_KEY y AWS_SESSION_TOKEN. Estas variables de entorno son reconocidas por una variedad de librerías y herramientas relacionadas con AWS, como el SDK oficial de AWS para Ruby y la AWS CLI. También se definen cuando se ejecutan en un entorno AWS Lambda.

  • AWS STS Acción AssumeRoleWithWebIdentity. Este mecanismo devuelve las credenciales asociadas al token de cuenta de servicio, y requiere que se establezcan las siguientes variables de entorno:

    • AWS_WEB_IDENTITY_TOKEN_FILE: Ruta a un archivo que contiene el token de cuenta de servicio.

    • AWS_ROLE_ARNEl ARN (nombre de recurso de Amazon) del rol que asume el llamador.

    • AWS_ROLE_SESSION_NAME (opcional): Identificador para la sesión del rol asumido. Si esta variable está vacía, el controlador genera un identificador aleatorio.

  • El endpoint de metadatos de tareas de ECS de AWS. Este endpoint devuelve las credenciales asociadas con el rol de tarea ECS asignado al contenedor.

  • El endpoint de metadatos de instancia EC2 de AWS. Este endpoint devuelve las credenciales asociadas con el rol de instancia EC2 asignado a la instancia.

Importante

Una fuente de credenciales debe proporcionar un conjunto completo de credenciales. Por ejemplo, si tu aplicación utiliza las variables de entorno AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY, el controlador generará un error si solo una de estas variables tiene un valor.

Nota

Si una aplicación se ejecuta en un contenedor ECS en una instancia EC2 y se permite que el contenedor acceda a los metadatos de la instancia, el controlador intenta recuperar las credenciales de AWS desde el punto final de metadatos de instancia EC2. Si el controlador recupera las credenciales de esta manera, tu aplicación puede autenticarse como el rol de IAM asignado a la instancia EC2.

Para aprender cómo evitar que los contenedores accedan a los metadatos de instancia de EC2, consulta la documentación de AWS.

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