Overview
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.
Especificar la autenticación MONGODB-AWS
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:
Opciones proporcionadas a
MongoDB\Clientcomo parte del URI de conexión o como un parámetro de opcionesVariables de entorno
Solicitud de AWS EKS
AssumeRoleWithWebIdentityMetadatos de contenedor ECS
Metadatos de la instancia EC2
Las siguientes secciones describen cómo recuperar credenciales de estas fuentes y utilizarlas para autenticar su aplicación PHP.
Credenciales del cliente de MongoDB
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);
Variables de entorno
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_IDAWS_SECRET_ACCESS_KEYAWS_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'.
Ejemplo
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.
Solicitud de AssumeRoleWithWebIdentity
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:
ECS Metadata
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.
Metadatos de instancia EC2
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.
Información Adicional
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.