Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

Autenticación de AWS IAM

El mecanismo de autenticación MONGODB-AWS utiliza credenciales de IAM (Identity and Access Gestión) de Amazon Web Services para autenticar un usuario en MongoDB. Solo puedes utilizar este mecanismo al autenticarte en MongoDB Atlas.

Tip

Configura Atlas para la autenticación IAM de AWS

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.

Para utilizar el mecanismo de autenticación MONGODB-AWS, especifica 'MONGODB-AWS' como el valor de la opción de conexión authMechanism.

Nota

La librería PHP de MongoDB utiliza la implementación de libmongoc del mecanismo de autenticación MONGODB-AWS. Para obtener más información sobre cómo utilizar este mecanismo de autenticación con libmongoc, consulta Autenticación a través de AWS IAM en la documentación del driver en C.

Cuando usas el mecanismo MONGODB-AWS, el driver intenta recuperar las credenciales de AWS de las siguientes fuentes, en el orden indicado:

  1. Opciones proporcionadas a MongoDB\Client como parte del URI de conexión o como un parámetro de opciones

  2. Variables de entorno

  3. Solicitud de AWS EKS AssumeRoleWithWebIdentity

  4. Metadatos de contenedor ECS

  5. Metadatos de la instancia EC2

Las siguientes secciones describen cómo recuperar credenciales de estas fuentes y utilizarlas para autenticar su aplicación PHP.

Primero, el driver verifica si has pasado credenciales de AWS al constructor MongoDB\Client, ya sea como parte del URI de conexión o del parámetro de arreglo $uriOptions. Para pasar tus credenciales a MongoDB\Client, establece las siguientes opciones de conexión:

  • usernameEl ID de clave de acceso de AWS IAM para autenticarse. Codifica este valor como porcentaje antes de incluirlo en un URI de conexión.

  • passwordLa clave de acceso secreta de AWS IAM. Codifica este valor como porcentaje antes de incluirlo en un URI de conexión.

  • authMechanism: Establecer en 'MONGODB-AWS'.

Puedes establecer estas opciones de dos maneras: pasando un arreglo de opciones al constructor MongoDB\Client o a través de parámetros en tu URI de conexión. Selecciona el MongoDB\Client o la pestaña Connection URI para ver el código correspondiente:

$uriOptions = [
'username' => '<AWS IAM access key ID>',
'password' => '<AWS IAM secret access key>',
'authMechanism' => 'MONGODB-AWS',
];
$client = new MongoDB\Client(
'mongodb://<hostname>:<port>',
$uriOptions,
);
$uri = 'mongodb://<AWS IAM access key ID>:<AWS IAM secret access key>@<hostname>:<port>/?authMechanism=MONGODB-AWS';
$client = new MongoDB\Client($uri);

Si no proporciona un nombre de usuario y una contraseña al construir su objeto MongoDB\Client, el controlador intentará recuperar las credenciales de AWS de las siguientes variables de entorno:

  • AWS_ACCESS_KEY_ID

  • AWS_SECRET_ACCESS_KEY

  • AWS_SESSION_TOKEN

Para utilizar estas variables de entorno para autenticar tu aplicación, primero configúralas con los valores de AWS IAM necesarios para la autenticación. Puedes ejecutar el comando export en tu shell o agregar las variables a un archivo .env, como se muestra en el siguiente ejemplo de código:

export AWS_ACCESS_KEY_ID=<AWS IAM access key ID>
export AWS_SECRET_ACCESS_KEY=<AWS IAM secret access key>
export AWS_SESSION_TOKEN=<AWS session token>
AWS_ACCESS_KEY_ID=<AWS IAM access key ID>
AWS_SECRET_ACCESS_KEY=<AWS IAM secret access key>
AWS_SESSION_TOKEN=<AWS session token>

Importante

No codifiques en porcentaje los valores en estas variables de entorno.

Después de establecer estas variables de entorno, establezca la opción de conexión authMechanism en 'MONGODB-AWS'.

El siguiente ejemplo configura la opción de conexión authMechanism. Puede establecer esta opción de dos formas: pasando un arreglo de opciones al constructor MongoDB\Client o mediante un parámetro en el URI de su conexión.

$client = new MongoDB\Client(
'mongodb://<hostname>:<port>',
['authMechanism' => 'MONGODB-AWS'],
);
$uri = 'mongodb://<hostname>:<port>/?authMechanism=MONGODB-AWS';
$client = new MongoDB\Client($uri);

Tip

AWS Lambda

Los entornos de ejecución de AWS Lambda pueden configurar automáticamente estas variables de entorno durante la inicialización. Para obtener más información sobre el uso de variables de entorno en un entorno AWS Lambda, consulta Uso de variables de entorno de Lambda en la documentación de AWS.

Si la aplicación autentica usuarios para el clúster de EKS a partir de un proveedor de identidades OpenID Connect (OIDC), el controlador puede hacer una solicitud AssumeRoleWithWebIdentity para intercambiar el token OIDC por credenciales temporales de AWS para la aplicación.

Para autenticarte con credenciales temporales de AWS IAM devueltas por una solicitud de AssumeRoleWithWebIdentity, asegúrate de que el archivo de configuración de AWS exista en tu entorno y esté configurado correctamente. Para aprender a crear y configurar un archivo de configuración de AWS, consulta Configuración en la documentación de AWS.

Después de configurar tu entorno para una solicitud AssumeRoleWithWebIdentity, establece la opción de conexión authMechanism en 'MONGODB-AWS'. Para ver un ejemplo que establece la opción authMechanism, consulte el ejemplo de authMechanism en esta página.

Tip

Para obtener más información sobre el uso de una solicitud AssumeRoleWithWebIdentity para autenticar tu aplicación, consulta la siguiente documentación de AWS:

Si tu aplicación se ejecuta en un contenedor Elastic Container Service (ECS), el driver puede recuperar automáticamente credenciales temporales de AWS desde un endpoint de ECS. Para ello, especifique el URI del endpoint de ECS en una variable de entorno llamada AWS_CONTAINER_CREDENTIALS_RELATIVE_URI. Puedes configurar esta variable ejecutando el comando de shell export o agregándola a tu archivo .env, como se muestra en el siguiente ejemplo:

export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<URI of the ECS endpoint>
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<URI of the ECS endpoint>

Después de establecer la variable de entorno, establece la opción de conexión authMechanism en 'MONGODB-AWS'. Para ver un ejemplo que establezca la opción authMechanism, consulta el ejemplo de authMechanism en esta página.

El driver puede recuperar automáticamente credenciales temporales de AWS desde una instancia de EC2 de Amazon Elastic Compute Cloud. Para utilizar credenciales temporales desde una instancia EC2, configura la opción de conexión authMechanism a 'MONGODB-AWS'. Para ver un ejemplo que configure la opción authMechanism, consulta el ejemplo de authMechanism en esta página.

Nota

La librería PHP de MongoDB recupera las credenciales de una instancia EC2 solo si las variables de entorno descritas en la sección Variables de entorno no están configuradas.

Para obtener más información sobre cómo crear un MongoDB\Client objeto en la librería PHP de MongoDB, consulte el Guía para crear un cliente de MongoDB.

Para obtener más información sobre las opciones de conexión, consulta la guía Especificar opciones de conexión.

Volver

X.509

En esta página