Solución de problemas de mensajes de error de acceso denegado - AWS Identity and Access Management

Solución de problemas de mensajes de error de acceso denegado

Los errores de acceso denegado se muestran cuando AWS deniega explícita o implícitamente una solicitud de autorización. Se produce una denegación explícita cuando una política contiene una declaración Deny para la acción de AWS específica. Una denegación implícita se produce cuando no hay declaraciones Deny ni Allow aplicables. Como una política de IAM deniega una entidad principal de IAM de forma predeterminada, la política debe permitir explícitamente que la entidad principal lleve a cabo una acción. De lo contrario, la política deniega el acceso de forma implícita. Para obtener más información, consulte Diferencia entre denegaciones implícitas y explícitas.

Si varias políticas del mismo tipo de política rechazan una solicitud de autorización, AWS no especifica el número de políticas del mensaje de error de acceso denegado. Si se deniega una solicitud de autorización debido a varios tipos de políticas, AWS incluye solo uno de esos tipos de políticas en el mensaje de error.

importante

¿Tiene problemas para iniciar sesión en AWS? Asegúrese de que está en la página de inicio de sesión de AWS correcta para su tipo de usuario. Si es el Usuario raíz de la cuenta de AWS (propietario de la cuenta), puede iniciar sesión en AWS con las credenciales que configuró cuando creó la Cuenta de AWS. Si es usuario de IAM, el administrador de su cuenta puede proporcionarle las credenciales que puede utilizar para iniciar sesión en AWS. Si necesita solicitar soporte técnico, no utilice el enlace de comentarios de esta página, ya que el formulario lo recibe el equipo de documentación de AWS, no AWS Support. En lugar de ello, en la página Contacte con nosotros, elija Todavía no es posible iniciar sesión en la cuenta de AWS y, a continuación, elija una de las opciones de asistencia disponibles.

Me aparece un mensaje de "acceso denegado" al realizar una solicitud a un servicio de AWS

  • Verifique si el mensaje de error incluye el tipo de política responsable de denegar el acceso. Por ejemplo, si el error menciona que el acceso se deniega debido a una política de control de servicios (SCP), puede centrarse en solucionar problemas de SCP. Cuando conozca el tipo de política, también puede verificar si faltan instrucciones de denegación o si faltan permisos en la acción específica de las políticas de ese tipo de política. Si el mensaje de error no menciona el tipo de política responsable de denegar el acceso, utilice el resto de las directrices de esta sección para solucionar más problemas.

  • Compruebe que tiene el permiso de política basada en identidad para llamar a la acción y a los recursos que ha solicitado. Si hay condiciones establecidas, también debe cumplir dichas condiciones al enviar la solicitud. Para obtener más información sobre cómo consultar o modificar políticas para un usuario, grupo o rol de IAM, consulte Administración de políticas de IAM.

  • Si la AWS Management Console da un mensaje diciendo que no está autorizado para llevar a cabo una acción, debe ponerse en contacto con su administrador para recibir ayuda. El administrador le proporcionó sus credenciales de inicio de sesión o enlace de inicio de sesión.

    En el siguiente ejemplo, el error se produce cuando el usuario de IAM mateojackson intenta utilizar la consola para consultar los detalles acerca de un recurso ficticio my-example-widget, pero no tiene los permisos ficticios widgets:GetWidget.

    User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: widgets:GetWidget on resource: my-example-widget

    En este caso, Mateo debe pedirle a su administrador que actualice sus políticas para obtener acceso al recurso my-example-widget mediante la acción widgets:GetWidget.

  • ¿Está intentando obtener acceso a un servicio que admite Políticas basadas en recursos, como por ejemplo Amazon S3, Amazon SNS o Amazon SQS? En caso afirmativo, compruebe que la política le tenga especificado como principal y le dé acceso. Si realiza una solicitud a un servicio dentro de su cuenta, las políticas basadas en identidad o basadas en recursos puede concederle permiso. Si realiza una solicitud a un servicio de una cuenta distinta, tanto las políticas basadas en identidad como las basadas en recursos deben concederle permiso. Para ver qué servicios admiten políticas basadas en recursos, consulte Servicios de AWS que funcionan con IAM.

  • Si la política incluye una condición con un par clave-valor, revíselo atentamente. Entre los ejemplos se incluyen la clave de condición global aws:RequestTag/tag-key, la kms:EncryptionContext:encryption_context_key de AWS KMS y la clave de condición ResourceTag/tag-key compatibles con varios servicios. Asegúrese de que el nombre de la clave no coincida con varios resultados. Puesto que los nombres de la clave de condición no distinguen entre mayúsculas y minúsculas, una condición que comprueba una clave denominada foo coincidirá con foo, Foo o FOO. Si su solicitud incluye varios pares clave-valor con nombres de clave que diferencian únicamente por las mayúsculas o minúsculas, su acceso puede denegarse de forma inesperada. Para obtener más información, consulte Elementos de política JSON de IAM: Condition.

  • Si tiene un límite de permisos, compruebe que la política utilizada para el límite de permisos permite la solicitud. Si las políticas basadas en identidad permiten la solicitud, pero el límite de permisos no la permite, la solicitud se deniega. Un límite de permisos controla los permisos máximos que puede tener una entidad principal de IAM (usuario o rol). Las políticas basadas en recursos no se restringen por los límites de permisos. Los límites de permisos no son comunes. Para obtener más información sobre evalúa estas políticas AWS, consulte Lógica de evaluación de políticas.

  • Si va a firmar las solicitudes manualmente (sin utilizar los SDK de AWS), compruebe que haya firmado correctamente la solicitud.

Me aparece un mensaje de "acceso denegado" al realizar una solicitud con credenciales de seguridad temporales

  • En primer lugar, asegúrese de que no se le deniega el acceso por un motivo no relacionado con sus credenciales temporales. Para obtener más información, consulte Me aparece un mensaje de "acceso denegado" al realizar una solicitud a un servicio de AWS.

  • Compruebe que el servicio acepta credenciales de seguridad temporales, consulte Servicios de AWS que funcionan con IAM.

  • Compruebe que las solicitudes se han firmado correctamente y que la solicitud tiene el formato correcto. Para obtener más información, consulte la documentación de su conjunto de herramientas o Uso de credenciales temporales con recursos de AWS.

  • Compruebe que sus credenciales de seguridad temporales no hayan caducado. Para obtener más información, consulte Credenciales de seguridad temporales en IAM.

  • Compruebe que el usuario o el rol de IAM tenga los permisos adecuados. Los permisos de credenciales de seguridad temporales se obtienen de un usuario o un rol de IAM. Como resultado, los permisos se limitan a los que se conceden al rol cuyas credenciales temporales ha asumido. Para obtener más información sobre cómo se determinan los permisos de las credenciales de seguridad temporales, consulte Control de los permisos para credenciales de seguridad temporales.

  • Si asume una función, su sesión de función puede verse limitada por las políticas de la sesión. Al solicitar las credenciales de seguridad temporales mediante programación utilizando AWS STS, tiene la opción de pasar las políticas de sesión administradas o insertadas. Las políticas de sesión son políticas avanzadas que se pasan como parámetro cuando se crea una sesión de credenciales temporal mediante programación para una función. Puede transferir un único documento de política de sesión insertada JSON utilizando el parámetro Policy. Puede utilizar el parámetro PolicyArns para especificar hasta 10 políticas de sesión administrada. Los permisos de la sesión resultantes son la intersección de las políticas basadas en identidades del rol y las políticas de la sesión. De manera alternativa, si el administrador o un programa personalizado le proporcionan credenciales temporales, es posible que hayan incluido una política de sesión para limitar su acceso.

  • Si es un usuario federado, la sesión puede verse limitada por las políticas de la sesión. Puede convertirse en un usuario federado iniciando sesión en AWS como un usuario de IAM y, a continuación, solicitando un token de federación. Para obtener más información acerca de los usuarios federados, consulte GetFederationToken: federación a través de un agente de identidades personalizadas. Si usted o su agente de identidades pasan políticas de sesión al mismo tiempo que solicitan un token de federación, la sesión se verá limitada por esas políticas. Los permisos de la sesión resultantes son la intersección de las políticas basadas en identidades de su usuario de IAM y las políticas de la sesión. Para obtener más información acerca de las políticas de sesión, consulte Políticas de sesión.

  • Si obtiene acceso mediante un rol a un recurso que tiene una política basada en recursos, compruebe que la política conceda permisos a dicho rol. Por ejemplo, la política siguiente permite que MyRole de la cuenta 111122223333 obtenga acceso a MyBucket.

    { "Version": "2012-10-17", "Statement": [{ "Sid": "S3BucketPolicy", "Effect": "Allow", "Principal": {"AWS": ["arn:aws:iam::111122223333:role/MyRole"]}, "Action": ["s3:PutObject"], "Resource": ["arn:aws:s3:::MyBucket/*"] }] }

Ejemplos de mensajes de error de acceso denegado

La mayoría de los mensajes de error de acceso denegado aparecen en el formato User user is not authorized to perform action on resource because context. En este ejemplo, el usuario es el nombre de recurso de Amazon (ARN) que no recibe acceso, la acción es la acción de servicio que la política niega y el recurso es el ARN del recurso sobre el que actúa la política. El campo de contexto representa un contexto adicional sobre el tipo de política que explica por qué se deniega el acceso.

Cuando una política deniega explícitamente el acceso porque contiene una declaración Deny, AWS incluye la frase with an explicit deny in a type policy en el mensaje de error de acceso denegado. Cuando la política deniega implícitamente el acceso, AWS incluye la frase because no type policy allows the action action en el mensaje de error de acceso denegado.

nota

Algunos servicios de AWS no admiten este formato de mensaje de error de acceso denegado. El contenido de los mensajes de error de acceso denegado puede variar según el servicio que realiza la solicitud de autorización.

En los siguientes ejemplos se muestra el formato de los distintos tipos de mensajes de error de acceso denegado.

Acceso denegado debido a una política de control de servicios: denegación implícita

  1. Compruebe si falta una instrucción Allow explícita para la acción en sus políticas de control de servicio (SCP). Para el siguiente ejemplo, la acción es codecommit:ListRepositories.

  2. Actualice su política al agregar la instrucción Allow. Para obtener más información, consulte Actualización de SCP en la Guía del usuario de AWS IAM Identity Center.

User: arn:aws:iam::777788889999:user/JohnDoe is not authorized to perform: codecommit:ListRepositories because no service control policy allows the codecommit:ListRespositories action

Acceso denegado debido a una política de control de servicios: denegación explícita

  1. Compruebe si hay una instrucción Deny explícita para la acción en sus políticas de control de servicio (SCP). Para el siguiente ejemplo, la acción es codecommit:ListRepositories.

  2. Actualice su SCP al eliminar la instrucción Deny. Para obtener más información, consulte Actualización de SCP en la Guía del usuario de AWS IAM Identity Center.

User: arn:aws:iam::777788889999:user/JohnDoe is not authorized to perform: codecommit:ListRepositories with an explicit deny in a service control policy

Acceso denegado debido a una política de punto de conexión de VPC: denegación implícita

  1. Compruebe si falta la instrucción Allow para la acción en sus políticas de punto de conexión de nube privada virtual (VPC). Para el siguiente ejemplo, la acción es codecommit:ListRepositories.

  2. Actualice su política de punto de conexión de VPC al agregar la instrucción Allow. Para obtener más información, consulte Actualizar una política de punto de conexión de VPC en la Guía de AWS PrivateLink.

User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: codecommit:ListRepositories because no VPC endpoint policy allows the codecommit:ListRepositories action

Acceso denegado debido a una política de punto de conexión de VPC: denegación explícita

  1. Compruebe si hay una instrucción Deny explícita para la acción en sus políticas de punto de conexión de nube privada virtual (VPC). Para el siguiente ejemplo, la acción es codedeploy:ListDeployments.

  2. Actualice su política de punto de conexión de VPC al eliminar la instrucción Deny. Para obtener más información, consulte Actualizar una política de punto de conexión de VPC en la Guía de AWS PrivateLink.

User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: codedeploy:ListDeployments on resource: arn:aws:codedeploy:us-east-1:123456789012:deploymentgroup:* with an explicit deny in a VPC endpoint policy

Acceso denegado debido a un límite de permisos: denegación implícita

  1. Compruebe si falta una instrucción Allow para la acción en su límite de permisos. Para el siguiente ejemplo, la acción es codedeploy:ListDeployments.

  2. Actualice su límite de permisos al agregar la instrucción Allow a su política de IAM. Para obtener más información, consulte Límites de permisos para las entidades de IAM y Edición de políticas de IAM.

User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: codedeploy:ListDeployments on resource: arn:aws:codedeploy:us-east-1:123456789012:deploymentgroup:* because no permissions boundary allows the codedeploy:ListDeployments action

Acceso denegado debido a un límite de permisos: denegación explícita

  1. Compruebe si hay una instrucción Deny explícita para la acción en su límite de permisos. Para el siguiente ejemplo, la acción es sagemaker:ListModels.

  2. Actualice su límite de permisos al eliminar la instrucción Deny de su política de IAM. Para obtener más información, consulte Límites de permisos para las entidades de IAM y Edición de políticas de IAM.

User: arn:aws:iam::777788889999:user/JohnDoe is not authorized to perform: sagemaker:ListModels with an explicit deny in a permissions boundary

Acceso denegado debido a políticas de sesión: denegación implícita

  1. Compruebe si falta una instrucción Allow para la acción en sus políticas de sesión. Para el siguiente ejemplo, la acción es codecommit:ListRepositories.

  2. Actualice su política de sesión al agregar la instrucción Allow. Para obtener más información, consulte Políticas de sesión y Edición de políticas de IAM.

User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: codecommit:ListRepositories because no session policy allows the codecommit:ListRepositories action

Acceso denegado debido a políticas de sesión: denegación explícita

  1. Compruebe si hay una instrucción Deny explícita para la acción en sus políticas de sesión. Para el siguiente ejemplo, la acción es codedeploy:ListDeployments.

  2. Actualice su política de sesión al eliminar la instrucción Deny. Para obtener más información, consulte Políticas de sesión y Edición de políticas de IAM.

User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: codedeploy:ListDeployments on resource: arn:aws:codedeploy:us-east-1:123456789012:deploymentgroup:* with an explicit deny in a sessions policy

Acceso denegado debido a políticas basadas en recursos: denegación implícita

  1. Compruebe si falta una instrucción Allow para la acción en su política basada en recursos. Para el siguiente ejemplo, la acción es secretsmanager:GetSecretValue.

  2. Actualice su política al agregar la instrucción Allow. Para obtener más información, consulte Políticas basadas en recursos y Edición de políticas de IAM.

User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: secretsmanager:GetSecretValue because no resource-based policy allows the secretsmanager:GetSecretValue action

Acceso denegado debido a políticas basadas en recursos: denegación explícita

  1. Compruebe si hay una instrucción Deny explícita para la acción en su política basada en recursos. Para el siguiente ejemplo, la acción es secretsmanager:GetSecretValue.

  2. Actualice su política al eliminar la instrucción Deny. Para obtener más información, consulte Políticas basadas en recursos y Edición de políticas de IAM.

User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: secretsmanager:GetSecretValue on resource: arn:aws:secretsmanager:us-east-1:123456789012:secret:* with an explicit deny in a resource-based policy

Acceso denegado debido a políticas de confianza de rol: denegación implícita

  1. Compruebe si falta una instrucción Allow para la acción en su política de confianza de rol. Para el siguiente ejemplo, la acción es sts:AssumeRole.

  2. Actualice su política al agregar la instrucción Allow. Para obtener más información, consulte Políticas basadas en recursos y Edición de políticas de IAM.

User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: sts:AssumeRole because no role trust policy allows the sts:AssumeRole action

Acceso denegado debido a políticas de confianza de rol: denegación explícita

  1. Compruebe si hay una instrucción Deny explícita para la acción en su política de confianza de rol. Para el siguiente ejemplo, la acción es sts:AssumeRole.

  2. Actualice su política al eliminar la instrucción Deny. Para obtener más información, consulte Políticas basadas en recursos y Edición de políticas de IAM.

User: arn:aws:iam::777788889999:user/JohnDoe is not authorized to perform: sts:AssumeRole with an explicit deny in the role trust policy

Acceso denegado debido a políticas basadas en identidad: denegación implícita

  1. Compruebe si falta una instrucción Allow para la acción en las políticas basadas en identidad asociadas a la identidad. Para el siguiente ejemplo, la acción es codecommit:ListRepositories y está asociada al usuario JohnDoe.

  2. Actualice su política al agregar la instrucción Allow. Para obtener más información, consulte Políticas basadas en identidad y Edición de políticas de IAM.

User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: codecommit:ListRepositories because no identity-based policy allows the codecommit:ListRepositories action

Acceso denegado debido a políticas basadas en identidad: denegación explícita

  1. Compruebe si hay una instrucción Deny explícita para la acción en las políticas basadas en identidad asociadas a la identidad. Para el siguiente ejemplo, la acción es codedeploy:ListDeployments y está asociada al usuario JohnDoe.

  2. Actualice su política al eliminar la instrucción Deny. Para obtener más información, consulte Políticas basadas en identidad y Edición de políticas de IAM.

User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: codedeploy:ListDeployments on resource: arn:aws:codedeploy:us-east-1:123456789012:deploymentgroup:* with an explicit deny in an identity-based policy

Access denied when a VPC request fails due to another policy (Acceso denegado cuando una solicitud de VPC falla debido a otra política)

  1. Compruebe si hay una instrucción Deny explícita para la acción en sus políticas de control de servicio (SCP). Para el siguiente ejemplo, la acción es SNS:Publish.

  2. Actualice su SCP al eliminar la instrucción Deny. Para obtener más información, consulte Actualización de SCP en la Guía del usuario de AWS IAM Identity Center.

User: arn:aws:sts::111122223333:assumed-role/role-name/role-session-name is not authorized to perform: SNS:Publish on resource: arn:aws:sns:us-east-1:444455556666:role-name-2 with an explicit deny in a VPC endpoint policy transitively through a service control policy