AWS Identity and Access Management
Guía del usuario

Solución de problemas de políticas de IAM

Una política es una entidad en AWS que, cuando se asocia a una identidad o un recurso, define sus permisos. AWS evalúa estas políticas cuando una entidad principal, como un usuario, realiza una solicitud. Los permisos en las políticas determinan si la solicitud se permite o se deniega. Las políticas se almacenan en AWS como documentos JSON que se asocian a entidades principales como políticas basadas en identidad o a recursos como políticas basadas en recursos. Puede asociar una política basada en la identidad a una entidad principal (o identidad), como un grupo, usuario o rol de IAM. Las políticas basadas en la identidad incluyen políticas administradas por AWS, políticas administradas por el cliente y políticas insertadas. Puede crear y editar políticas administradas del cliente en la Consola de administración de AWS usando la pestaña Visual editor (Editor visual) o la pestaña JSON. Cuando consulte una política en la Consola de administración de AWS, podrá ver un resumen de los permisos concedidos por dicha política. Puede utilizar el editor visual y los resúmenes de políticas para ayudarle a diagnosticar y corregir los errores comunes encontrados al administrar las políticas de IAM.

Tenga en cuenta que todas las políticas de IAM se almacenan usando una sintaxis que comienza con las reglas de JavaScript Object Notation (JSON). No tiene que entender esta sintaxis para crear o administrar sus políticas. Puede crear y editar una política con el editor visual de la Consola de administración de AWS. Para obtener más información sobre la sintaxis JSON en las políticas de IAM, consulte Gramática del lenguaje de la política JSON de IAM .

Resolución de problemas de temas relacionados con las políticas de IAM

Resolución de problemas con el editor visual

Cuando crea o edita una política administrada por el cliente, puede utilizar la información de la pestaña Visual editor (Editor visual) como ayuda para solucionar los errores en la política. Para ver un ejemplo de cómo usar el editor para crear una política, consulte Control del acceso a identidades.

Reestructuración de políticas

Cuando crea una política, AWS valida los procesos y transforma la política antes de almacenarla. Cuando AWS devuelve la política en respuesta a una consulta del usuario o la muestra en la consola, AWS vuelve a transformar la política a un formato legible sin cambiar los permisos concedidos por la política. Esto puede provocar diferencias en lo que aparece en el editor visual de la política o en la pestaña JSON: se puede añadir, reordenar o eliminar bloques de permisos del editor virtual y optimizar el contenido de un bloque. En la pestaña JSON puede que se hayan eliminado los espacios en blanco y que se hayan reordenado los elementos de los mapas JSON. Además, los ID de cuenta de AWS de los elementos principales se pueden reemplazar con el ARN del Usuario de la cuenta raíz de AWS. Debido a estos posibles cambios, no debe comparar los documentos de política JSON como cadenas.

Cuando crea una política administrada por el cliente en la Consola de administración de AWS puede elegir trabajar en todo momento en la pestaña JSON. Si nunca realiza cambios en la pestaña Visual editor (Editor visual) y elige Review policy (Revisar política) en la pestaña JSON, es menos probable que la política se reestructure. Sin embargo, si crea una política y utiliza la pestaña Visual editor (Editor visual) para realizar modificaciones o si elige Review policy (Revisar política) en la pestaña Visual editor (Editor visual), es posible que IAM reestructure la política para optimizar su aspecto en el editor visual.

Esta reestructuración se produce únicamente en su sesión de edición y no se guarda automáticamente.

Si la política se ha reestructurado en su sesión de edición, IAM determina si debe guardar la reestructuración en función de las siguientes situaciones:

En esta pestaña Si edita la política Y después elige Review policy (Revisar política) en esta pestaña Cuando elige Save changes (Guardar cambios)
Visual editor (Editor visual) Editado Visual editor (Editor visual) La política se reestructura
Visual editor (Editor visual) Editado JSON La política se reestructura
Visual editor (Editor visual) No editado Visual editor (Editor visual) La política se reestructura
JSON Editado Visual editor (Editor visual) La política se reestructura
JSON Editado JSON La estructura de la política no cambia
JSON No editado JSON La estructura de la política no cambia

IAM podría reestructurar políticas complejas o políticas que tengan bloques de permisos o instrucciones que permitan varios servicios, tipos de recursos o claves de condición.

Selección del ARN de un recurso en el editor visual

Cuando crea o edita una política con el editor visual, primero debe elegir un servicio y, a continuación, elegir las acciones de dicho servicio. Si el servicio y las acciones que ha seleccionado permiten elegir recursos específicos, el editor visual muestra una lista de los tipos de recursos admitidos. A continuación, puede elegir Add ARN (Agregar ARN) para proporcionar los detalles del recurso. Puede elegir entre las siguientes opciones para añadir un ARN para un tipo de recurso.

  • Usar el constructor de ARN – Según el tipo de recurso, puede que vea campos diferentes para crear el ARN. También puede elegir Any (Cualquiera) para proporcionar permisos para cualquier valor de la opción especificada. Por ejemplo, si ha seleccionado el grupo de nivel de acceso Read (Lectura) de Amazon EC2, las acciones de la política permiten el tipo de recurso instance. Debe proporcionar los valores de Region (Región), Account (Cuenta) e InstanceId (ID de instancia) para el recurso. Si proporciona el ID de cuenta pero elige Any (Cualquiera) para el ID de región e instancia, la política concede permisos sobre todas las instancias de su cuenta.

  • Escribir o pegar el ARN – Puede especificar los recursos en función de su Nombre de recurso de Amazon (ARN). Puede incluir un carácter comodín (*) en cualquier campo del ARN (entre cada par de dos puntos). Para obtener más información, consulte Elementos de política JSON de IAM: Resource.

Denegación de permisos en el editor visual

De forma predeterminada, la política que crea utilizando el editor visual permite las acciones que usted elija. Para denegar las acciones elegidas, seleccione Switch to deny permissions (Cambiar a denegar permisos). Dado que las solicitudes se deniegan de forma predeterminada, por motivos de seguridad recomendamos que permita solo aquellas acciones y recursos a los que un usuario necesita acceso. A esto también se le llama "lista blanca". Debe crear una instrucción para denegar permisos ("lista negra") únicamente si desea invalidar un permiso que otra instrucción o política permite. Le recomendamos que limite al mínimo el número de operaciones de denegación de permisos, ya que pueden aumentar la dificultad de solucionar problemas con los permisos. Para obtener más información acerca de cómo IAM evalúa la lógica de las políticas, consulte Lógica de evaluación de políticas.

nota

De forma predeterminada, solo el Usuario de la cuenta raíz de AWS tiene acceso a todos los recursos de esa cuenta. Por lo tanto, si no ha iniciado sesión como usuario raíz, debe disponer de permisos concedidos por una política.

Especificación de varios servicios en el editor visual

Cuando utiliza el editor visual para crear una política, puede seleccionar solo un servicio a la vez. Se trata de una práctica recomendada, ya que el editor visual le permite elegir acciones para ese único servicio. Seguidamente, deberá elegir los recursos admitidos por dicho servicio y las acciones seleccionadas. Esto facilita la creación de la política y la resolución de problemas.

Si está familiarizado con la sintaxis JSON, también puede utilizar un carácter comodín (*) para especificar manualmente varios servicios. Por ejemplo, escriba Code* para proporcionar permisos para todos los servicios que comiencen por Code, como CodeBuild y CodeCommit. Sin embargo, debe especificar los ARN de las acciones y los recursos para completar su política. Además, al guardar la política, esta podría reestructurarse para incluir cada servicio en un bloque de permisos distinto.

O bien, si desea utilizar la sintaxis JSON (como caracteres comodín) para los servicios, cree, edite y guarde su política usando la pestaña JSON.

Reducción del tamaño de su política en el editor visual

Cuando se utiliza el editor visual para crear una política, IAM crea un documento JSON para almacenar la política. Puede ver este documento cambiando a la pestaña JSON. Si este documento JSON supera el límite de tamaño de una política, el editor visual muestra un mensaje de error y no le permite revisar y guardar su política. Para ver la limitación de IAM del tamaño de una política administrada, consulte Límites de caracteres de entidades de IAM.

Para reducir el tamaño de su política en el editor visual, edite la política o mueva bloques de permiso a otra política. El mensaje de error incluye el número de caracteres que contiene su documento de política, y puede utilizar esta información para ayudarle a reducir el tamaño de la política.

Corrección de tipos de servicios, acciones o recursos no reconocidos en el editor visual

Cuando crea o edita una política en el editor visual, es posible que aparezca una advertencia que indique que la política incluye un servicio, acción o tipo de recurso no reconocido.

nota

IAM comprueba los nombres de los servicios, las acciones y los tipos de recurso para los servicios que admiten resúmenes de políticas. Sin embargo, el resumen de política podría incluir algún valor de recurso o condición que no exista. Pruebe siempre las políticas con el simulador de políticas.

Si la política incluye servicios, acciones o tipos de recurso no reconocidos, se debe a uno de los siguientes errores:

  • Servicio de vista previa – Los servicios en vista previa no admiten el editor visual. Si está participando en la vista previa, puede omitir la advertencia y continuar, aunque debe especificar manualmente los ARN de las acciones y los recursos para completar la política. También puede elegir la pestaña JSON o escribir y pegar un documento de política JSON.

  • Servicio personalizado – Los servicios personalizados no admiten el editor visual. Si usa un servicio personalizado, puede omitir la advertencia y continuar, aunque debe especificar manualmente los ARN de las acciones y los recursos para completar la política. También puede elegir la pestaña JSON o escribir y pegar un documento de política JSON.

  • El servicio no admite el editor visual – Si su política incluye un servicio disponible con carácter general (GA) que no admite el editor visual, puede omitir la advertencia y continuar, aunque debe especificar manualmente los ARN de las acciones y los recursos para completar la política. También puede elegir la pestaña JSON o escribir y pegar un documento de política JSON.

    Los servicios disponibles en general son servicios puestos a disposición del público y no son servicios de vista previa ni personalizados. Si un servicio no reconocido está disponible con carácter general y el nombre está escrito correctamente, entonces el servicio no admite el editor visual. Para saber cómo solicitar que se admita el editor visual o el resumen de políticas para un servicio disponible con carácter general, consulte El servicio no admite resúmenes de políticas de IAM.

  • La acción no admite el editor visual – Si su política incluye un servicio admitido con una acción no admitida, puede omitir la advertencia y continuar, aunque debe especificar manualmente los ARN de las acciones y los recursos para completar la política. También puede elegir la pestaña JSON o escribir y pegar un documento de política JSON.

    Si la política incluye un servicio admitido con una acción no admitida, entonces el servicio no admite el editor visual en su totalidad. Para saber cómo solicitar que se admita el editor visual o el resumen de políticas para un servicio disponible con carácter general, consulte El servicio no admite resúmenes de políticas de IAM.

  • El tipo de recurso no admite el editor visual – Si la política incluye una acción admitida con un tipo de recurso no admitido, puede omitir la advertencia y continuar. Sin embargo, IAM no puede confirmar que ha incluido recursos para todas las acciones seleccionadas y es posible que vea advertencias adicionales.

  • Error tipográfico – Cuando especifica manualmente un servicio, acción o recurso en el editor visual, puede crear una política que incluya un error tipográfico. Como práctica recomendada, use el editor visual seleccionando servicios y acciones de la lista y, a continuación, rellene la sección de recursos de acuerdo con las instrucciones. Sin embargo, si un servicio no admite plenamente el editor visual, es posible que tenga que especificar manualmente algunas partes de la política.

    Si está seguro de que la política no contiene ninguno de los errores previamente mencionados, es posible que la política tenga un error tipográfico. Compruebe que los nombres del servicio, acción y tipo de recurso estén escritos correctamente. Por ejemplo, puede utilizar s2 en lugar de s3 y ListMyBuckets en lugar de ListAllMyBuckets. Otro error tipográfico habitual en las acciones es la inclusión de texto innecesario en el ARN, como arn:aws:s3: : :* o la falta de los dos puntos en las acciones, como AWSAuthRuntimeService.AuthenticatePassword. Puede evaluar una política que podría incluir errores tipográficos eligiendo Review policy (Revisar política) para revisar el resumen de política y confirmar que la política proporciona los permisos previstos.

Solución de problemas mediante resúmenes de políticas

Puede diagnosticar y resolver problemas relacionados con los resúmenes de políticas.

Resumen de la política que falta

La consola de IAM incluye tablas de resumen de política que describen el nivel de acceso, los recursos y las condiciones permitidos o rechazados para cada servicio de una política. Las políticas se resumen en tres tablas: el resumen de política, el resumen de servicio y el resumen de acción. La tabla resumen de política incluye una lista de servicios y resúmenes de los permisos que la política elegida define. Puede ver el resumen de política de las políticas que se han asociado a un usuario en la página Users (Usuarios). Puede ver el resumen de política de las políticas administradas en la página Policies (Políticas). Si AWS no puede representar un resumen de una política, verá el documento de la política JSON en lugar del resumen y recibirá el siguiente error:

No se puede generar un resumen para esta política. Pero puede ver o editar el documento de la política JSON.

Si la política no incluye un resumen, se debe a que se ha producido uno de los siguientes errores:

  • Unsupported policy element (Elemento de política no admitido) – IAM no es compatible con la generación de resúmenes de políticas que incluyan uno de los siguientes elementos de política:

    • Principal

    • NotPrincipal

    • NotResource

  • No policy permissions (Sin permisos de política) – Si una política no proporciona permisos eficaces, no se podrá generar el resumen de política. Por ejemplo, si una política incluye una única instrucción con el elemento "NotAction": "*", entonces concede el acceso a todas las acciones excepto "todas las acciones" (*). Lo que significa que no otorga acceso Deny o Allow a nada.

    nota

    Debe ir con cuidado al utilizar estos elementos de política como NotPrincipal, NotAction y NotResource. Para obtener más información sobre el uso de elementos de política, consulte Referencia de los elementos de las políticas de JSON de IAM.

    Puede crear una política que no proporcione permisos eficaces si suministra servicios y recursos no coincidentes. Esto puede ocurrir si especifica acciones de un servicio y los recursos de otro servicio. En ese caso, el resumen de la política no aparece. La única indicación de que existe un problema es que la columna de recursos en el resumen puede incluir un recurso de otro servicio. Si esta columna incluye un recurso no coincidente, debe comprobar que la política no tiene errores. Para comprender mejor las políticas, pruébelas siempre con el simulador de políticas.

El resumen de política incluye servicios, acciones o tipos de recurso no reconocidos

En la consola de IAM, si un resumen de política incluye un símbolo de advertencia ( ), es posible que la política incluya un servicio, acción o tipo de recurso no reconocido. Para obtener más información acerca de las advertencias dentro de un resumen de política, consulte Resumen de política (lista de servicios).

nota

IAM comprueba los nombres de los servicios, las acciones y los tipos de recurso para los servicios que admiten resúmenes de políticas. Sin embargo, el resumen de política podría incluir algún valor de recurso o condición que no exista. Pruebe siempre las políticas con el simulador de políticas.

Si la política incluye servicios, acciones o tipos de recurso no reconocidos, se debe a uno de los siguientes errores:

  • Preview service (Servicio de vista previa) – Los servicios en vista previa no admiten resúmenes de política.

  • Custom service (Servicio personalizado) – Los servicios personalizados no admiten resúmenes de políticas.

  • Service does not support summaries (El servicio no admite resúmenes) – Si su política incluye un servicio disponible en general (GA) que no admite resúmenes de políticas, el servicio se incluye en la sección Unrecognized services (Servicios no reconocidos) de la tabla de resumen de la política. Los servicios disponibles en general son servicios puestos a disposición del público y no son servicios de vista previa ni personalizados. Si un servicio no reconocido está disponible en general y el nombre está escrito correctamente, entonces el servicio no admite resúmenes de políticas de IAM. Para aprender a solicitar soporte de resumen de políticas para un servicio de disponibilidad general, consulte El servicio no admite resúmenes de políticas de IAM.

  • Action does not support summaries (La acción no admite resúmenes) – Si la política incluye un servicio admitido con una acción no admitida, la acción se incluye en la sección Unrecognized actions (Acciones no reconocidas) de la tabla de resumen de servicio. Para obtener más información acerca de las advertencias dentro de un resumen de servicio, consulte Resumen de servicios (lista de acciones).

  • Resource type does not support summaries (El tipo de recurso no admite resúmenes) – Si la política incluye una acción admitida con un tipo de recurso no admitido, el recurso se incluye en la sección Unrecognized resource types (Tipos de recursos no reconocidos) de la tabla de resumen de servicio. Para obtener más información acerca de las advertencias dentro de un resumen de servicio, consulte Resumen de servicios (lista de acciones).

  • Typo (Error tipográfico) – Puesto que el validador de políticas de AWS solo comprueba que el JSON sea correcto sintácticamente, puede crear una política que incluya un error tipográfico. Si está seguro de que la política no contiene ninguno de los errores previamente mencionados, es posible que la política tenga un error tipográfico. Compruebe que los nombres del servicio, acción y tipo de recurso estén escritos correctamente. Por ejemplo, puede utilizar s2 en lugar de s3 y ListMyBuckets en lugar de ListAllMyBuckets. Otro error tipográfico habitual en las acciones es la inclusión de texto innecesario en el ARN, como arn:aws:s3: : :* o la falta de los dos puntos en las acciones, como AWSAuthRuntimeService.AuthenticatePassword. Puede evaluar una política que podría incluir errores tipográficos usando el simulador de políticas para confirmar que la política proporciona los permisos previstos.

El servicio no admite resúmenes de políticas de IAM

Cuando los resúmenes de políticas de IAM o el editor visual no reconocen un servicio o acción disponible con carácter en general, es posible que el servicio no admita dichas características. Los servicios disponibles en general son servicios puestos a disposición del público y no son servicios de vista previa ni personalizados. Si un servicio no reconocido está disponible con carácter general y el nombre está escrito correctamente, entonces el servicio no admite estas características. Si la política incluye un servicio admitido con una acción no admitida, entonces el servicio no admitirá totalmente los resúmenes de políticas de IAM.

Para solicitar que un servicio sea compatible con el resumen de políticas o el editor visual de IAM

  1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. Localice la política que incluye el servicio no admitido:

    • Si la política es una política administrada, seleccione Policies (Políticas) en el panel de navegación. En la lista de políticas, seleccione el nombre de la política que desea ver.

    • Si la política es una política en línea asociada al usuario, seleccione Users (Usuarios) en el panel de navegación. En la lista de usuarios, seleccione el nombre del usuario cuya política desea ver. En la tabla de políticas para el usuario, expanda el encabezado del resumen de política que desea ver.

  3. A la izquierda del pie de página de la Consola de administración de AWS, seleccione Feedback (Valoración). En la casilla Tell us about your experience (Describa su experiencia): escriba I request that the <ServiceName> service add support for IAM policy summaries and the visual editor. Si quiere que más de un servicio admita los resúmenes, escriba I request that the <ServiceName1>, <ServiceName2>, and <ServiceName3> services add support for IAM policy summaries and the visual editor.

Para solicitar que un servicio sea compatible con el resumen de política de IAM para una acción que falta

  1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. Localice la política que incluye el servicio no admitido:

    • Si la política es una política administrada, seleccione Policies (Políticas) en el panel de navegación. En la lista de políticas, seleccione el nombre de la política que desea ver.

    • Si la política es una política en línea asociada al usuario, seleccione Users (Usuarios) en el panel de navegación. En la lista de usuarios, seleccione el nombre del usuario cuya política desea ver. En la tabla de políticas para el usuario, seleccione el nombre de la política que quiere ver para expandir el resumen de política.

  3. En el resumen de política, elija el nombre del servicio que incluye una acción no compatible.

  4. A la izquierda del pie de página de la Consola de administración de AWS, seleccione Feedback (Valoración). En la casilla Tell us about your experience (Describa su experiencia): escriba I request that the <ServiceName> service add IAM policy summary and the visual editor support for the <ActionName> action. Si quiere notificar más de una acción no admitida, escriba I request that the <ServiceName> service add IAM policy summary and the visual editor support for the <ActionName1>, <ActionName2>, and <ActionName3> actions.

Para solicitar que un servicio diferente incluya las acciones que faltan, repita los últimos tres pasos.

Mi política no concede los permisos esperados

Para asignar permisos a un usuario, grupo, rol o recurso, puede crear una política, que es un documento que define permisos. El documento de políticas incluye los siguientes elementos:

  • Effect (Efecto) – Indica si la política permite o deniega acceso.

  • Action (Acción) – La lista de acciones permitidas o denegadas por la política.

  • Resource (Recurso) – La lista de recursos en los que pueden producirse las acciones.

  • Condition (Condición) (opcional) – Las circunstancias en las que la política concede permisos.

Para obtener más información sobre este y otros elementos de políticas, consulte Referencia de los elementos de las políticas de JSON de IAM.

Para conceder acceso, la política debe definir una acción con un recurso admitido. Si la política también incluye una condición, esta debe contener una clave de condición global o ser aplicable a la acción. Para saber qué recursos admite una acción, consulte la documentación de AWS de su servicio. Para saber qué condiciones son admitidas por una acción, consulte Claves de condición, recursos y acciones de los servicios de AWS.

Para saber si su política define una acción, recurso o condición que no concede permisos, puede ver el resumen de políticas de su política en la consola de IAM, a la que puede obtener acceso desde https://console.aws.amazon.com/iam/. Puede utilizar resúmenes de políticas para identificar y corregir problemas en su política.

Hay varias razones por las que un elemento puede no estar concediendo permisos a pesar de que se define en la política de IAM:

Para ver ejemplos de resúmenes de políticas que incluyen advertencias, consulte Resumen de política (lista de servicios).

Una acción está definida sin un recurso aplicable

La política que aparece a continuación define todas las acciones ec2:Describe* y define un recurso específico. Ninguna de las acciones ec2:Describe se conceden porque ninguna de ellas admite permisos de nivel de recursos. Los permisos de nivel de recursos implican que la acción admite recursos que utilicen ARN en el elemento Resource de la política. Si una acción no admite permisos de nivel de recursos, dicha instrucción en la política debe utilizar un comodín (*) en el elemento Resource. Para saber qué servicios admiten permisos en el nivel de recursos, consulte Servicios de AWS que funcionan con IAM.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "ec2:Describe*", "Resource": "arn:aws:ec2:us-east-2:ACCOUNT-ID:instance/*" }] }

Esta política no concede permisos y la política de resumen incluye los siguientes errores:

This policy does not grant any permissions. To grant access, policies must have an action that has an applicable resource or condition.

Para solucionar esta política, debe utilizar * en el elemento Resource.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "ec2:Describe*", "Resource": "*" }] }

Un recurso está definido sin una acción aplicable

La política de recursos que aparece a continuación define un bucket de Amazon S3, pero no incluye una acción de S3 que pueda llevarse a cabo en dicho recurso. Esta política también concede acceso completo a todas las acciones de Amazon CloudFront.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "cloudfront:*", "Resource": [ "arn:aws:cloudfront:*", "arn:aws:s3:::examplebucket" ] }] }

Esta política concede permisos para todas las acciones de CloudFront. Sin embargo, como la política define el recurso de S3 examplebucket sin definir ninguna acción de S3, el resumen de política incluye la siguiente advertencia:

This policy defines some actions, resources, or conditions that do not provide permissions. To grant access, policies must have an action that has an applicable resource or condition.

Para solucionar esta política con el fin de proporcionar permisos del bucket de S3, debe definir acciones de S3 que puedan llevarse a cabo en un recurso de bucket.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "cloudfront:*", "s3:CreateBucket", "s3:ListBucket*", "s3:PutBucket*", "s3:GetBucket*" ], "Resource": [ "arn:aws:cloudfront:*", "arn:aws:s3:::examplebucket" ] }] }

Otra opción para corregir esta política de modo que proporcione solo permisos de CloudFront es eliminar el recurso de S3.

Una condición está definida sin una acción aplicable

La política siguiente define dos acciones de Amazon S3 para todos los recursos de S3, si el prefijo de S3 es custom y el ID de la versión es 1234. Sin embargo, la clave de condición s3:VersionId se utiliza para etiquetar la versión de los objetos y no es admitida por las acciones definidas por el bucket. Para saber qué condiciones admite una acción, consulte Claves de condición, recursos y acciones de los servicios de AWS y haga clic en el enlace que dirige a la documentación de servicios de claves de condición.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucketVersions", "s3:ListBucket" ], "Resource": "*", "Condition": { "StringEquals": { "s3:prefix": [ "custom" ], "s3:VersionId": [ "1234" ] } } } ] }

Esta política concede permisos para las acciones s3:ListBucketVersions y s3:ListBucket si el nombre del bucket incluye el custom prefijo. Sin embargo, como la condición s3:VersionId no es compatible con ninguna de las acciones definidas, el resumen de políticas incluye el siguiente error:

This policy does not grant any permissions. To grant access, policies must have an action that has an applicable resource or condition.

Para corregir esta política y que utilice el etiquetado de versiones de objetos de S3, debe definir una acción de S3 admita la clave de condición s3:VersionId.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucketVersions", "s3:ListBucket", "s3:GetObjectVersion" ], "Resource": "*", "Condition": { "StringEquals": { "s3:prefix": [ "custom" ], "s3:VersionId": [ "1234" ] } } } ] }

Esta política concede permisos para cada acción y condición de sí misma. Sin embargo, la política sigue sin conceder permisos porque no hay un caso en el que una única acción coincida con ambas condiciones. En su lugar, debe crear dos instrucciones independientes, y cada una debe incluir únicamente acciones con las condiciones a las que son aplicables.

Para corregir esta política, cree dos instrucciones. La primera instrucción incluye las acciones que admiten la condición s3:prefix y la segunda incluye las acciones que admiten la condición s3:VersionId.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucketVersions", "s3:ListBucket" ], "Resource": "*", "Condition": { "StringEquals": { "s3:prefix": "custom" } } }, { "Effect": "Allow", "Action": "s3:GetObjectVersion", "Resource": "*", "Condition": { "StringEquals": { "s3:VersionId": "1234" } } } ] }

Solución de problemas de administración de políticas

Puede diagnosticar y resolver problemas relacionados con la administración de políticas.

Asociar o desvincular una política en una cuenta de IAM

Algunas políticas administradas de AWS están vinculadas a un servicio. Estas políticas se utilizan únicamente con un rol vinculado a un servicio de dicho servicio. En la consola de IAM se ve la página Summary (Resumen) de una política que incluye un banner para indicar que la política está vinculada a un servicio. No puede adjuntar esta política a un usuario, grupo o rol en IAM. Si crea un rol vinculado al servicio para este servicio, esta política se adjunta automáticamente al nuevo rol. Dado que la política es necesaria, no puede separar la política del rol vinculado al servicio.

Cambio de las políticas para las identidades de IAM en función de su actividad

Puede actualizar políticas para sus identidades de IAM (usuarios, grupos y roles) en función de su actividad. Para ello, observe los eventos de su cuenta en Event history (Historial de eventos) en CloudTrail. Los registros de eventos de CloudTrail incluyen información detallada que puede utilizar para cambiar los permisos de la política. Puede ocurrir que un usuario o función estén intentando realizar una acción en AWS y dicha solicitud se deniegue. En ese caso, puede tener en cuenta si el usuario o la función deben tener permiso para ejecutar la acción. En tal caso, puede añadir a su política la acción e incluso el ARN del recurso al que ha intentado el acceso. Si el usuario o rol tiene permisos que no utiliza, también puede considerar la posibilidad de eliminarlos permisos de su política. Asegúrese de que sus políticas concedan el privilegio mínimo que es necesario para realizar únicamente las acciones necesarias. Para obtener más información sobre el uso de CloudTrail, consulte Ver eventos de CloudTrail en la consola de CloudTrail en la Guía del usuario de AWS CloudTrail.

Solución de problemas con documentos de políticas JSON

Puede diagnosticar y resolver problemas relacionados con documentos de políticas JSON.

Más de un objeto de política JSON

Una política de IAM debe constar de uno y solo un objeto JSON. Los objetos se indican incluyéndolos en llaves { }. Aunque puede anidar otros objetos dentro de un objeto JSON añadiendo llaves ({}) adicionales en el par exterior, una política solo puede contener un par exterior de llaves { }. El siguiente ejemplo es incorrecto porque contiene dos objetos en la parte superior (indicados en rojo):

{ "Version": "2012-10-17", "Statement": { "Effect":"Allow", "Action":"ec2:Describe*", "Resource":"*" } } { "Statement": { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::my-bucket/*" } }

Sin embargo, podría satisfacer la intención del ejemplo anterior con el uso de la gramática de políticas correcta. En lugar de incluir dos objetos de política completos, cada uno con su propio elemento Statement, puede combinar los dos bloques en un único elemento Statement. El elemento Statement tiene una matriz de dos objetos como valor, tal y como se muestra en el ejemplo siguiente (destacado en negrita):

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:Describe*", "Resource":" *" }, { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::my-bucket/*" } ] }

Más de un elemento Statement JSON

A simple vista, este error podría parecer una variante del error de la sección anterior. Sin embargo, es un tipo de error diferente desde el punto de vista sintáctico. En el siguiente ejemplo solo hay un objeto de política tal como indica el único par de llaves { } en el nivel superior. Sin embargo, ese objeto contiene dos elementos Statement en su interior.

Una política de IAM debe contener solo un elemento Statement, que consta del nombre (Statement) que aparece a la izquierda de un carácter de punto y coma, seguido de su valor a la derecha. El valor de un elemento Statement debe ser un objeto, identificado por llaves { }, que contiene un elemento Effect, un elemento Action y un elemento Resource. El siguiente ejemplo es incorrecto porque contiene dos elementos Statement en el objeto de política (destacado en rojo):

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "ec2:Describe*", "Resource": "*" }, "Statement": { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::my-bucket/*" } }

Un objeto de valor puede ser un conjunto de varios objetos de valor. Para solucionar este problema, combine los dos elementos Statement en un elemento con una matriz de objetos, tal y como se muestra en el ejemplo siguiente (destacado en negrita):

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:Describe*", "Resource":"*" }, { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::my-bucket/*" } ] }

El valor del elemento Statement es una matriz de objetos. La matriz del ejemplo se compone de dos objetos, cada uno de los cuales es un valor correcto para un elemento Statement. Cada objeto de la matriz está separado por comas.

Más de un elemento Effect, Action o Resource en un elemento Statement JSON

En el lado del valor del par nombre/valor Statement, el objeto debe constar de un único elemento Effect, un elemento Action y un elemento Resource. La siguiente política es incorrecta porque contiene dos elementos Effect en el objeto de valor del Statement:

{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Effect": "Allow", "Action": "ec2:* ", "Resource": "*" } }

nota

El motor de políticas no permite este tipo de errores en políticas nuevas o editadas. Sin embargo, el motor de políticas continúa aceptando las políticas que se guardaron antes de que se actualizara el motor. El comportamiento de las políticas existentes ante este error es el siguiente:

  • Varios elementos Effect: solo se considera el último elemento Effect. Los demás se omiten.

  • Varios elementos Action: todos los elementos Action se combinan internamente y se tratan como una lista individual.

  • Varios elementos Resource: todos los elementos Resource se combinan internamente y se tratan como una lista individual.

El motor de políticas no le permite guardar ninguna política con errores sintácticos. Debe corregir los errores en la política antes de poder guardarla. La herramienta Validador de políticas le ayuda a encontrar todas las políticas antiguas con errores y le recomienda correcciones.

En todos los casos, la solución es eliminar el elemento adicional incorrecto. Para los elementos Effect, está claro: si desea que en el ejemplo anterior se denieguen los permisos para las instancias Amazon EC2, deberá eliminar la línea "Effect": "Allow", de la política tal y como se indica a continuación:

{ "Version": "2012-10-17", "Statement": { "Efect": "Deny", "Action": "ec2:* ", "Resource": "*" } }

Sin embargo, si el elemento duplicado es Action o Resource, la solución puede complicarse. Puede disponer de varias acciones para las que desea permitir (o denegar) permisos o puede que quiera controlar el acceso a varios recursos. El siguiente ejemplo es incorrecto porque tiene varios elementos Resource (destacados en rojo):

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::my-bucket", "Resource": "arn:aws:s3:::my-bucket/*" } }

Cada uno de los elementos necesarios en un objeto de valor del elemento Statement puede estar presente solo una vez. La solución consiste en colocar cada valor en una matriz. El siguiente ejemplo lo muestra al convertir los dos elementos de recursos independientes en un elemento Resource con una matriz como objeto de valor (destacado en negrita):

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "s3:*", "Resource": [ "arn:aws:s3:::my-bucket", "arn:aws:s3:::my-bucket/*" ] } }

Falta el elemento Version JSON

El elemento de política Version es diferente de la versión de una política. El elemento de política Version se utiliza en una política y define la versión del lenguaje de la política. Una versión de política, por otro lado, se crea al realizar cambios en una política administrada por el cliente en IAM. La política modificada no anula la política existente. En cambio, IAM crea una nueva versión de la política administrada. Para obtener más información sobre el elemento de política Version, consulte Elementos de política JSON de IAM: Version. Para obtener más información sobre las versiones de política, consulte Control de versiones de políticas de IAM.

A medida que evolucionan las características de AWS, se añaden nuevas funciones a las políticas de IAM para respaldar dichas características. A veces, una actualización en la sintaxis de la política incluye un número de versión nuevo. Si utiliza las características más nuevas de la política gramatical en la política, debe indicarle al motor de análisis de políticas la versión que está utilizando. La versión predeterminada de la política es "2008-10-17". Si desea utilizar una característica de la política introducida más tarde, entonces deberá especificar el número de versión compatible con la característica que desee. Le recomendamos que incluya siempre el número de versión de la sintaxis de política más reciente, que actualmente es "Version": "2012-10-17". Por ejemplo, la siguiente política es incorrecta pues utiliza una variable de política ${...} en el ARN de un recurso. Sin embargo, no especifica una versión de sintaxis de política que admita las variables de política (destacadas en rojo):

{ "Statement": { "Action": "iam:*AccessKey*", "Effect": "Allow", "Resource": "arn:aws:iam::123456789012:user/${aws:username}" } }

Añadir un elemento Version en la parte superior de la política con el valor 2012-10-17, que es la primera versión de la API de IAM que admite variables de política, soluciona este problema (destacado en negrita):

{ "Version": "2012-10-17", "Statement": { "Action": "iam:*AccessKey*", "Effect": "Allow", "Resource": "arn:aws:iam::123456789012:user/${aws:username}" } }