Autenticación mediante la identidad de IAM - Amazon DocumentDB

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Autenticación mediante la identidad de IAM

Los usuarios y las aplicaciones de Amazon DocumentDB pueden utilizar los usuarios y roles de IAM para autenticarse en un clúster de Amazon DocumentDB. La autenticación de IAM de Amazon DocumentDB es un método de autenticación sin contraseña. Además, las aplicaciones cliente no envían los secretos de las contraseñas al clúster de Amazon DocumentDB cuando utilizan roles o usuarios de IAM. En su lugar, las conexiones de los clientes se autentican AWS STS mediante tokens de seguridad temporales. Los usuarios y las aplicaciones no administrativos ahora pueden usar el mismo ARN de identidad de IAM al conectarse a distintos clústeres de Amazon DocumentDB y a otros servicios. AWS

También puede optar por utilizar la autenticación basada en contraseña y la autenticación de IAM para autenticar los usuarios y las aplicaciones en un clúster de Amazon DocumentDB. La autenticación de IAM solo está disponible en la versión 5.0 del clúster basado en instancias de Amazon DocumentDB. El usuario principal de Amazon DocumentDB no admite la autenticación de IAM mediante la identidad ARNs de IAM.

nota

El usuario principal solo se puede autenticar mediante la autenticación basada en contraseñas existente.

Introducción a la autenticación mediante roles y usuarios de IAM

Los usuarios y roles de Amazon DocumentDB con identidades de IAM se crean y administran en una base de datos de $external.

Creación de un usuario

Conéctese como usuario principal y, a continuación, cree un usuario y un rol de IAM:

use $external; db.createUser( { user: "arn:aws:iam::123456789123:user/iamuser", mechanisms: ["MONGODB-AWS"], roles: [ { role: "readWrite", db: "readWriteDB" } ] } );

Como alternativa, agregue un usuario de Amazon DocumentDB con un rol de IAM:

use $external; db.createUser( { user: "arn:aws:iam::123456789123:role/iamrole", mechanisms: ["MONGODB-AWS"], roles: [ { role: "readWrite", db: "readWriteDB" } ] } );

Modificación de un usuario o rol de IAM

Modificación de un usuario de IAM existente:

use $external; db.updateUser( "arn:aws:iam::123456789123:user/iamuser", { roles: [ { role: "read", db: "readDB" } ] } );

Modificación de un rol de IAM existente:

use $external; db.updateUser( "arn:aws:iam::123456789123:role/iamrole", { roles: [ { role: "read", db: "readDB" } ] } );

Concesión o revocación de roles de un usuario de IAM:

use $external; db.grantRolesToUser( "arn:aws:iam::123456789123:user/iamuser", [ { db: "admin", role: "readWriteAnyDatabase" } ] );
use $external; db.revokeRolesFromUser( "arn:aws:iam::123456789123:user/iamuser", [ { db: "admin", role: "readWriteAnyDatabase" } ] );

Concesión o revocación de roles de un rol de IAM:

use $external; db.grantRolesToUser( "arn:aws:iam::123456789123:user/iamrole", [ { db: "admin", role: "readWriteAnyDatabase" } ] );
use $external; db.revokeRolesFromUser( "arn:aws:iam::123456789123:user/iamrole", [ { db: "admin", role: "readWriteAnyDatabase" } ] );

Eliminación de un usuario o un rol de IAM

Eliminación de un usuario de IAM existente:

use $external; db.dropUser("arn:aws:iam::123456789123:user/iamuser");

Eliminación de un rol de IAM existente:

use $external; db.dropUser("arn:aws:iam::123456789123:role/iamrole");

Configure un URI de conexión para autenticarse mediante IAM AWS

Para autenticarse mediante AWS IAM, utilice los siguientes parámetros de URI: authSource as y as. $external authMechanism MONGODB-AWS Si utiliza un usuario de IAM, los campos de nombre de usuario y contraseña se sustituyen por una clave de acceso y una clave secreta, respectivamente. Si asume una función de IAM, vinculada al entorno en el que se encuentra (por ejemplo, AWS Lambda función, EC2 instancia de Amazon). No es necesario pasar ninguna credencial de manera específica al autenticarse mediante el mecanismo MONGODB-AWS. Si utiliza controladores MongoDB que admiten MONGODB-AWS el mecanismo de autenticación, los controladores también tienen la capacidad de recuperar las credenciales del rol de IAM de la instancia de procesamiento (por ejemplo EC2, Amazon, la función Lambda y otros). En el siguiente ejemplo, se utiliza un intérprete de comandos de mongo para autenticarse con MONGODB-AWS mediante el paso manual de una clave de acceso y una clave secreta (de un usuario de IAM) para demostrar la autenticación en Amazon DocumentDB.

En el siguiente ejemplo, se utiliza código Python para autenticarse con MONGODB-AWS sin pasar ninguna credencial de forma explícita (mediante un rol de IAM asociado al entorno) para demostrar la autenticación en Amazon DocumentDB.

##Create a MongoDB client, open a connection to Amazon DocumentDB using an IAM role client = pymongo.MongoClient(‘mongodb://<DocDBEndpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false&authSource=%24external&authMechanism=MONGODB-AWS')

En el siguiente ejemplo, se utiliza un intérprete de comandos de mongo para autenticarse con el mecanismo MONGODB-AWS mediante el paso manual de una clave de acceso y una clave secreta (de un usuario de IAM) para demostrar la autenticación en Amazon DocumentDB.

$ mongo 'mongodb://<access_key>:<secret_key>@<cluster_endpoint>:<db_port>/test?authSource=%24external&authMechanism=MONGODB-AWS'

En el siguiente ejemplo, se utiliza un intérprete de comandos de mongo para autenticarse con MONGODB-AWS sin pasar ninguna credencial de forma explícita (mediante un rol de IAM asociado al entorno) para demostrar la autenticación en Amazon DocumentDB.

$ mongo 'mongodb://<cluster_endpoint>:<db_port>/test?authSource=%24external&authMechanism=MONGODB-AWS'

Configuración de tipos de AWS procesamiento para autenticarse en Amazon AWS DocumentDB mediante IAM

Uso de Amazon EC2/AWS Lambda/AWS Fargate

Amazon EC2 utiliza las siguientes variables de entorno. Si tiene una función de IAM asociada a la EC2 instancia o una función de IAM de ejecución asociada a una función de Lambda o una tarea de Amazon ECS, estas variables se rellenan automáticamente y el controlador puede obtener estos valores del entorno:

AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN

Para obtener información sobre cómo usar las variables de entorno, consulte Utilice variables de entorno de Lambda en la Guía para desarrolladores de AWS Lambda .

Uso de Amazon EKS

Al asignar un rol a los pods de Amazon Elastic Kubernetes Service (Amazon EKS), se configurarán automáticamente las dos variables de entorno siguientes:

AWS_WEB_IDENTITY_TOKEN_FILE - path of web identity token file AWS_ROLE_ARN - Name of IAM role to connect with

Con la ayuda de estas variables, asuma manualmente la función a partir de su código mediante la llamada del AWS SDK para: AssumeRoleWithWebIdentity

  • Omita el parámetro ProviderID.

  • Busque el valor del parámetro WebIdentityToken en el archivo descrito en la variable de entorno AWS_WEB_IDENTITY_TOKEN_FILE.

Para obtener más información en Amazon EKS, consulte ¿Qué es Amazon EKS? en la Guía del usuario de Amazon EKS.

Supervisión de solicitudes de autenticación de IAM

Uso de la auditoría de Amazon DocumentDB

Ve a la carpeta de registros de auditoría de Amazon CloudWatch y utiliza diferentes patrones de búsqueda para obtener los registros de la autenticación de IAM. Por ejemplo, utilice { $.param.mechanism = "MONGODB-AWS" } como patrón de búsqueda para “Buscar en todos los flujos de registro”.

Para obtener más información sobre los eventos compatibles en la auditoría, consulte Auditoría de eventos de Amazon DocumentDB.

Uso de CloudWatch las métricas de Amazon

StsGetCallerIdentityCalls: Esta métrica muestra el número de GetCallerIdentity llamadas que realiza una instancia de Amazon DocumentDB al punto final regionalizado AWS Security Token Service ()AWS STS. Consulte la especificación de autenticación de MONGODB-AWS para saber por qué las instancias de base de datos deben hacer llamadas GetCallerIdentity a STS.

Uso de la autenticación de IAM

Si no desea administrar el nombre de usuario y la contraseña de su propia base de datos, puede utilizar la autenticación de IAM. La autenticación de IAM solo está disponible en la versión 5.0 del clúster basado en instancias de Amazon DocumentDB.

La autenticación de IAM depende del servicio STS. Le recomendamos que evalúe si puede reducir la velocidad de conexión si utiliza la autenticación de IAM para la conexión y obtiene una excepción de limitación del STS.

Para conocer las cuotas de IAM, consulte IAM y AWS STS cuotas en la Guía del usuario de IAM.

Controladores compatibles con IAM

Los controladores compatibles con Amazon DocumentDB 5.0 y el mecanismo de autenticación de MONGODB-AWS deberían funcionar con la implementación de autenticación de IAM en Amazon DocumentDB.

importante

Existe una limitación conocida con los controladores de Node.js que actualmente no son compatibles con la autenticación de identidad de IAM para Amazon DocumentDB. La limitación incluye el último shell de MongoDB, mongosh. Para admitir la autenticación de identidad de IAM con Amazon DocumentDB, se recomienda utilizar el shell MongoDB 5.0. La compatibilidad con el controlador Node.js se actualizará una vez que se resuelva la limitación.

Preguntas frecuentes sobre la autenticación de identidad de IAM

¿Hay alguna muestra que pueda consultar?

Consulte estas páginas para ver ejemplos de casos de uso y configuraciones:

Aparece un error al usar mi controlador de Python: «pymongo.errors. ConfigurationError: MONGODB: se requiere autenticación».AWS pymongo-auth-aws ¿Cómo puedo resolver esto?

Asegúrese de utilizar la siguiente declaración al instalar el controlador de Python con la autenticación de IAM:

pip install 'pymongo[aws]'

Esto instalará las AWS dependencias adicionales necesarias para que la autenticación de IAM funcione.

¿Se interrumpirá mi conexión cuando caduquen las credenciales temporales de mi rol de IAM?

No, las credenciales de IAM temporales solo se utilizan para establecer la conexión y la autenticación. A continuación, todas las autorizaciones adicionales se producen en el clúster de Amazon DocumentDB. Incluso si las credenciales de IAM cambian o caducan, la conexión no se interrumpirá ni quedará obsoleta.