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
Configurar Atlas para la autenticación de AWS IAM
Para obtener más información sobre cómo configurar MongoDB Atlas para la autenticación de AWS IAM, consulte Configurar la autenticación con AWS IAM en la documentación de Atlas.
Especificar la autenticación de MONGODB-AWS
Para utilizar el mecanismo de autenticación MONGODB-AWS, especifique 'MONGODB-AWS' como el valor de la opción de conexión authMechanism.
Nota
La biblioteca PHP de MongoDB utiliza la implementación de libmongoc del mecanismo de autenticación MONGODB-AWS. Para obtener más información sobre el uso de este mecanismo de autenticación con libmongoc, consulte Autenticación mediante AWS IAM en la documentación del controlador C.
Cuando se utiliza el mecanismo MONGODB-AWS, el controlador 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 del contenedor ECS
Metadatos de la instancia EC2
Las siguientes secciones describen cómo recuperar credenciales de estas fuentes y usarlas 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 la clave de acceso de AWS IAM para la autenticación. Codifique este valor porcentualmente antes de incluirlo en una URI de conexión.passwordClave de acceso secreta de AWS IAM. Codifique este valor porcentualmente antes de incluirlo en una URI de conexión.authMechanism:Establecer en'MONGODB-AWS'.
Puede configurar estas opciones de dos maneras: pasando una matriz de opciones al constructor MongoDB\Client o mediante parámetros en la URI de su conexión. Seleccione MongoDB\Client o 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 cuando construye su objeto MongoDB\Client, el controlador intenta recuperar las credenciales de AWS de las siguientes variables de entorno:
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_SESSION_TOKEN
Para usar estas variables de entorno para autenticar su aplicación, primero configúrelas con los valores de AWS IAM necesarios para la autenticación. Puede ejecutar el comando export en su 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 codifique en porcentaje los valores en estas variables de entorno.
Después de configurar estas variables de entorno, configure la opción de conexión authMechanism en 'MONGODB-AWS'.
Ejemplo
El siguiente ejemplo establece la opción de conexión authMechanism. Puede establecer esta opción de dos maneras: pasando una matriz de opciones al constructor MongoDB\Client o mediante un parámetro en la URI de 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 de AWS Lambda, consulte Uso de variables de entorno de Lambda. en la documentación de AWS.
Solicitud de AssumeRoleWithWebIdentity
Si su aplicación autentica usuarios para su clúster EKS desde un proveedor de identidad OpenID Connect (OIDC), el controlador puede realizar una solicitud AssumeRoleWithWebIdentity para intercambiar el token OIDC por credenciales temporales de AWS para su aplicación.
Para autenticarse con las credenciales temporales de AWS IAM devueltas por una AssumeRoleWithWebIdentity solicitud, asegúrese de que el archivo de configuración de AWS exista en su entorno y esté configurado correctamente. Para aprender a crear y configurar un archivo de configuración de AWS,consulte Configuración en la documentación de AWS.
Después de configurar su entorno para una AssumeRoleWithWebIdentity solicitud, configure la authMechanism opción de conexión 'MONGODB-AWS' en. Para ver un ejemplo que configura la authMechanism opción, consulte el ejemplo de authMechanism en esta página.
Tip
Para obtener más información sobre cómo usar una solicitud AssumeRoleWithWebIdentity para autenticar su aplicación, consulte la siguiente documentación de AWS:
ECS Metadata
Si su aplicación se ejecuta en un contenedor de Elastic Container Service (ECS), el controlador puede recuperar automáticamente las credenciales temporales de AWS desde un punto de conexión de ECS. Para ello, especifique el URI del punto de conexión de ECS en una variable de entorno llamada AWS_CONTAINER_CREDENTIALS_RELATIVE_URI. Puede configurar esta variable ejecutando el comando de shell export o añadiéndola a su 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 configurar la variable de entorno, configure la authMechanism opción de conexión 'MONGODB-AWS' en. Para ver un ejemplo que configura la authMechanism opción, consulte el ejemplo de authMechanism en esta página.
Metadatos de instancia EC2
El controlador puede recuperar automáticamente las credenciales temporales de AWS de una instancia de Amazon Elastic Cloud Compute2 (EC). Para usar las credenciales temporales de una2 instancia de EC, configure la authMechanism opción de conexión 'MONGODB-AWS' en. Para ver un ejemplo que configura la authMechanism opción, consulte el ejemplo de authMechanism en esta página.
Nota
La biblioteca PHP de MongoDB recupera credenciales de una2 instancia EC 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 objeto MongoDB\Client en la biblioteca PHP de MongoDB, consulte la Cree una guía del cliente MongoDB.
Para obtener más información sobre las opciones de conexión, consulta la guía Especificar opciones de conexión.