Solución de mensajes de error de acceso denegado con el ID de autorización (vista previa)
importante
El solucionador de problemas de acceso se encuentra en fase de vista previa pública.
Descripción general
Cuando AWS deniega una solicitud de una API compatible, la respuesta de error de acceso denegado suele incluir un ID de autorización. Este ID hace referencia a la evaluación de autorización de esa solicitud denegada. Para recuperar los detalles de la evaluación e identificar la causa de la denegación, realice una solicitud a la API GetRequestAuthorizationDetails y proporcione el ID de autorización, o abra el enlace que aparece en el mensaje de error. Esto permite identificar la causa de una solicitud denegada en una sola llamada, en lugar de resolver las denegaciones de una en una.
nota
AWS no garantiza un ID de autorización para cada solicitud denegada. Consulte Cuando no recibe el ID de autorización: en este documento.
El siguiente ejemplo muestra un mensaje de error de acceso denegado que incluye un ARN de política, un enlace a la consola de administración de AWS
User: arn:aws:iam::123456789012:user/janedoe is not authorized to perform: iam:CreateInstanceProfile on resource: arn:aws:iam::123456789012:instance-profile/my-instance-profile with an explicit deny in an identity-based policy: arn:aws:iam::123456789012:policy/ExampleDenyPolicy. Go to https://us-east-1.console.aws.amazon.com/iam/home?region=us-east-1#/authorization-details/EXAMPLE1a2b3c4d5e6f7g8h9i0j for complete details, or call the GetRequestAuthorizationDetails API with the following authorization id: EXAMPLE1a2b3c4d5e6f7g8h9i0j
Conceptos y definiciones
-
Detalles de autorización. Los detalles de la autorización incluyen el contexto de la solicitud, las evaluaciones realizadas y las políticas evaluadas.
-
ID de autorización. Un identificador único incluido en una respuesta de error de acceso denegado compatible. Hace referencia a la evaluación de autorización de esa solicitud denegada y es el valor que se transfiere al enlace de la consola de administración de AWS
o a la API GetRequestAuthorizationDetails. -
Contexto de la solicitud. Corresponde a los valores de las claves de contexto de condición evaluadas para la solicitud. Esto incluye claves de contexto de condición globales y claves de contexto de condición específicas del servicio.
-
Evaluación. Para cada par de acción y recurso de la solicitud, las claves de contexto de la condición que se aplicaron y el resultado evaluado:
ALLOW,EXPLICIT_DENY(una política denegó explícitamente la acción) oIMPLICIT_DENY(ninguna política permitió la acción), y una referencia a cada política y declaración que coincidió con el par de acción y recurso. Cada referencia es un ARN de política (para políticas administradas) o un URI (para políticas integradas y otras políticas no administradas) que se reutiliza a lo largo de la respuesta. -
Políticas evaluadas durante la autorización. Son las políticas que AWS consideró para la solicitud, como las políticas que no coincidían con el par de acción y recurso. Cada entrada proporciona el tipo de política (por ejemplo, política basada en identidad, basada en recursos, SCP, RCP, límite de permisos o política de sesión) y el mismo ARN (para políticas administradas) o URI utilizado en las evaluaciones (para políticas integradas y otras políticas no administradas). Use el ARN o el URI para hacer coincidir una política con la evaluación que la referenció. El campo “Asociado a” muestra el ARN principal de la entidad principal a la que está asociada la política evaluada.
Utilice estos resultados en conjunto para identificar qué política denegó el acceso y su razón. La evaluación refleja las políticas tal como estaban en el momento de la denegación. Es posible que las políticas hayan cambiado desde entonces.
AWS incluye automáticamente un ID de autorización en las respuestas de error de acceso denegado para las API compatibles, pero los ID de autorización no están garantizados. En algunos casos, AWS no registra los detalles de autorización de una denegación y la respuesta al error no incluye un ID de autorización. Cuando se registran los detalles, es posible que no estén disponibles de forma inmediata, ya que AWS los registra de forma asíncrona. Si una llamada a GetRequestAuthorizationDetails devuelve una respuesta de “no encontrado”, espere un momento e inténtelo de nuevo. AWS conserva los detalles de la autorización durante 24 horas después de la denegación.
Solución de problemas con la consola de administración de AWS
Seleccione el enlace que aparece en el mensaje de error de acceso denegado para abrir los detalles de la autorización en la consola de solución de problemas de acceso.
-
Qué buscar. La consola del solucionador de problemas de acceso muestra la evaluación de cada par de acciones y recursos de la solicitud, así como el resultado de cada uno (
Allow,Explicit denyoImplicit deny) y las políticas que se tuvieron en cuenta. Busque el par que se denegó y la política que provocó la denegación. Consulte la siguiente captura de pantalla a modo de ejemplo:
-
Determine si la denegación fue intencionada. Revise la evaluación antes de cambiar una política. Una denegación puede ser correcta y, a veces, la causa es el contexto de la solicitud y no la política. Por ejemplo, es posible que a una solicitud le falte una etiqueta de sesión esperada o que provenga de una ruta de red inesperada.
-
Cómo resolver la denegación. Identifique la política correspondiente y actualícela para resolver el problema de acceso. En el caso de una denegación explícita, elimine o limite la instrucción
Denypara la acción. En el caso de una denegación implícita, agregue una instrucciónAllowpara la acción. Para obtener más información, consulte Edición de políticas de IAM.
Quién puede acceder a los detalles de la autorización. En el caso de una solicitud realizada en una sola cuenta o en una sola organización, cualquier persona a la que se le conceda acceso a iam:GetRequestAuthorizationDetails puede consultar los detalles de la solicitud. En el caso de una solicitud que abarca más de una organización, un usuario de una organización determinada solo puede ver los detalles que pertenecen a su propia organización.
Solución de problemas con la API de AWS o AWS CLI
Cómo solucionar un problema de denegación con la API de AWS o AWS CLI:
-
Identifique el ID de autorización en la respuesta de error de acceso denegado.
-
Llame a
GetRequestAuthorizationDetailscon el ID de autorización, en la misma Región de AWS donde se produjo la denegación. En el siguiente ejemplo, se muestra el comando de AWS CLI:aws iam-toolbox get-request-authorization-details \ --region us-east-1 \ --authorization-id EXAMPLE1a2b3c4d5e6f7g8h9i0j -
Revise los resultados de la evaluación para identificar qué políticas denegaron el acceso y el motivo de la denegación.
-
Actualice las políticas identificadas para resolver el problema de acceso. Para obtener más información, consulte Edición de políticas de IAM.
Cuando no recibe el ID de autorización:
AWS no devuelve un ID de autorización en los siguientes casos:
-
La autorización es demasiado grande para registrarla. Cuando una solicitud implica un gran número de políticas, AWS puede decidir no registrar la solicitud.
-
El servicio aún no es compatible. Consulte Servicios admitidos.
-
No se admite la API. Algunas API de un servicio compatible no devuelven un ID de autorización.
-
No se admite el tipo de solicitud. Esto incluye las solicitudes realizadas por un servicio en su nombre y las solicitudes anónimas.
Si no recibe un ID de autorización, consulte Solucionar problemas de mensajes de error de acceso denegado para conocer otras formas de diagnosticar la denegación.
Consideraciones adicionales
Permisos necesarios. Para llamar a GetRequestAuthorizationDetails, debe tener permisos para la acción iam:GetRequestAuthorizationDetails.
API regional. GetRequestAuthorizationDetails es una API regional. Llámela en la misma Región de AWS donde se generaron el error de acceso denegado y el ID de autorización.
Solicitudes entre organizaciones. Cuando una solicitud denegada involucra a más de una organización, GetRequestAuthorizationDetails devuelve solo los detalles que pertenecen a su propia organización. Esto se aplica en ambos sentidos: si pertenece a la organización de la persona a la que se le ha denegado la llamada, solo verá los detalles que pertenecen a esa organización. Si pertenece a la organización del recurso denegado, solo verá los detalles que pertenecen a esa organización. Los detalles que son propiedad de otra organización, como las políticas de esa organización o los valores de clave de contexto, no se devuelven.
Si recibe un error de acceso denegado de una API, servicio o región que aún no incluye un ID de autorización, consulte Solucionar problemas de mensajes de error de acceso denegado.
Servicios admitidos
La compatibilidad con GetRequestAuthorizationDetails se está implementando gradualmente en todas las API de AWS y Región de AWS. Los siguientes servicios son compatibles con GetRequestAuthorizationDetails:
-
La mayoría de las API de IAM