Quiero solucionar los problemas de autenticación que tengo cuando uso Amazon DocumentDB (compatible con MongoDB).
Solución
Nota: Si se muestran errores al poner en marcha comandos de Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.
Si utilizas AWS Identity and Access Management (IAM) para autenticarte en Amazon DocumentDB, es posible que recibas el mensaje de error «MongoServerError: Authentication failed». Si configuraste mal los permisos de tu entidad de IAM, es posible que también recibas un error de autenticación al usar los roles de IAM.
Nota: Amazon DocumentDB admite la autenticación basada en IAM solo en la versión 5.0 y posteriores del clúster, con clústeres basados en instancias. El usuario principal de Amazon DocumentDB no admite la autenticación basada en IAM.
Revisión de la configuración de roles y usuarios de la base de datos
Sigue estos pasos:
-
Usa el shell de MongoDB para iniciar sesión en tu clúster de Amazon DocumentDB como usuario raíz.
-
Para comprobar si tu entidad de IAM (ARN de usuario de IAM o rol de IAM) está configurada correctamente en la base de datos $external, ejecuta los siguientes comandos en el shell de MongoDB:
use $external;
show users;
-
Asegúrate de haber registrado el **ARN de IAM ** para el usuario y el rol de IAM en la base de datos $external. Confirma también que has asignado los roles y los permisos necesarios para la base de datos de destino.
Validación de la cadena de conexión
Cuando te conectes al clúster de Amazon DocumentDB, asegúrate de que tu cliente especifica correctamente AuthSource y AuthMechanism en la cadena de conexión. La autenticación de IAM requiere que utilices el mecanismo MONGODB-AWS con AuthSource=$external.
Uso de la autenticación de IAM para conectar al clúster de MongoDB
Confirma que tu usuario o rol de IAM tiene los permisos adecuados para acceder al clúster de MongoDB:
mongo "mongodb://<access_key>:<secret_key>@<cluster_endpoint>:<db_port>/test?authSource=%24external&authMechanism=MONGODB-AWS"
Nota: Sustituye access_key por tu ID de clave de acceso de AWS. Sustituye secret_key por tu clave secreta de AWS. Sustituye cluster_endpoint por el punto de enlace del clúster de Amazon DocumentDB. Sustituye db_port por el número de puerto de la base de datos. El número de puerto predeterminado de la base de datos es 27017.
Uso de las credenciales del entorno de AWS para conectar al clúster de MongoDB
Confirma que puedes conectarte al clúster de MongoDB con las credenciales de tu entorno de AWS:
mongo "mongodb://<cluster_endpoint>:<db_port>/test?authSource=%24external&authMechanism=MONGODB-AWS"
Nota: Sustituye cluster_endpoint por el punto de enlace del clúster de Amazon DocumentDB. Sustituye db_port por el número de puerto de la base de datos. El número de puerto predeterminado de la base de datos es 27017.
El cliente recupera automáticamente las credenciales temporales del entorno. Esto incluye las credenciales de los siguientes roles de servicio de AWS:
- Perfil de instancia de Amazon Elastic Compute Cloud (Amazon EC2)
- Rol de tarea de Amazon Elastic Container Service (Amazon ECS)
- Rol de ejecución de AWS Lambda
- Rol de cuenta de servicio de Amazon Elastic Kubernetes Service (Amazon EKS).
Validación del rol de IAM o el usuario de IAM para garantizar que estén activos en el cliente
Si no transfieres de forma explícita las credenciales de AWS para Amazon EC2 o AWS Lambda, asegúrate de adjuntar un rol de IAM al recurso informático.
Si no transfieres las credenciales de AWS de forma explícita a Amazon EKS, comprueba que el pod o la cuenta de servicio tengan la anotación y la asignación de roles de IAM adecuados. Además, asegúrate de adjuntar un rol de IAM al recurso informático.
Para comprobar la identidad de IAM efectiva, ejecuta el siguiente comando get-caller-identity:
aws sts get-caller-identity
Resultado de ejemplo:
{
"UserId": "AIDATOCZW5HO####T22",
"Account": "236411349###",
"Arn": "arn:aws:iam::`444455556666`:user/DocDBRole"
}
Si el resultado coincide con el usuario o el rol de IAM, es que la base de datos $external tiene tu ARN configurado correctamente.
Nota: Amazon DocumentDB no admite las versiones 6.13.1 y anteriores de los controladores Node.js. Para usar los controladores Node.js con IAM para Amazon DocumentDB, debes actualizar los controladores y las herramientas de Node.js a versiones posteriores a la 6.13.1.
Información relacionada
Autenticación mediante la identidad de IAM