Solucionar 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 por el cliente en la AWS Management Console utilizando las opciones Visual y JSON del editor. Cuando consulte una política en la AWS Management Console, 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 mediante la sintaxis que comienza con las reglas de JavaScript Object Notation
Resolución de problemas de temas relacionados con las políticas de IAM
Solución de problemas con el editor visual
Al crear o editar una política administrada por el cliente, puede utilizar la información del editor Visual como ayuda para solucionar errores de la política. Para ver un ejemplo de cómo utilizar 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 se recupera la política, AWS la transforma de nuevo a un formato legible para humanos sin cambiar los permisos. Esto puede generar diferencias en lo que aparece en el editor visual de la política o en la pestaña JSON.
-
Se puede agregar, reordenar o eliminar bloques de permisos del editor visual 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 la Cuenta de AWS en los elementos principales se pueden reemplazar por el nombre de recurso de Amazon (ARN) del Usuario raíz de la cuenta de AWS.
Debido a estos posibles cambios, no debe comparar los documentos de política JSON como cadenas.
Al crear una política administrada por el cliente en la AWS Management Console, puede decidir trabajar únicamente en el editor JSON. Si nunca cambia la política en el editor visual y selecciona Siguiente en el editor JSON, es menos probable que se reestructure la política. Al utilizar el editor visual, IAM podría reestructurar la política para mejorar su aspecto. 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:
Uso de esta opción del editor | Si edita la política | Y luego seleccione Siguiente en esta pestaña | Cuando elige Save changes (Guardar cambios) |
---|---|---|---|
Visual | Editado | Visual | La política se reestructura |
Visual | Editado | JSON | La política se reestructura |
Visual | No editado | Visual | La política se reestructura |
JSON | Editado | 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.
-
Utilizar el creador de ARN: es posible que vea diferentes campos para crear su ARN en función del tipo de recurso. 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
. Proporcione los valores de Región, Cuenta e ID de instancia para el recurso. La política concede permisos para todas las instancias de su cuenta si proporciona el ID de cuenta y elige Cualquiera para ID de instancia y Región. -
Escribir o pegar el ARN: puede especificar los recursos por 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, recomendamos que conceda permisos solo para aquellas acciones y recursos que un usuario necesita. Debe crear una instrucción de denegación solo si desea invalidar por separado un permiso que permita otra instrucción o política. 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 raíz de la cuenta 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.
También puede utilizar un carácter comodín (*) para especificar de forma manual 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 sintaxis JSON (por ejemplo, caracteres comodín) para los servicios, cree, edite y guarde la política utilizando la opción JSON del editor.
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 opción JSON del editor. Si este documento JSON supera el límite de tamaño de una política, el editor visual muestra un mensaje de error. No podrá revisar ni guardar la política. Para ver la limitación de IAM del tamaño de una política administrada, consulte Límites de caracteres de IAM y STS.
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 la cantidad de caracteres que contiene su documento de política. Puede utilizar esta información para reducir el tamaño de su política.
Corrección de servicios, acciones o tipos de recurso no reconocidos en el editor visual
Es posible que vea una advertencia en el editor visual que le indique que su política incluye un servicio, una acción o un 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 participa en la vista previa, debe especificar de forma manual los ARN de las acciones y los recursos para completar la política. Puede ignorar cualquier advertencia y continuar. También puede elegir la opción JSON del editor para escribir o pegar un documento de política de JSON.
-
Servicio personalizado – Los servicios personalizados no admiten el editor visual. Si utiliza un servicio personalizado, debe especificar de forma manual los ARN de las acciones y los recursos para completar la política. Puede ignorar cualquier advertencia y continuar. También puede elegir la opción JSON del editor para escribir o pegar un documento de política de JSON.
-
El servicio no admite el editor visual: si su política incluye un servicio disponible de manera general (GA) que no admite el editor visual, debe especificar de forma manual los ARN de las acciones y los recursos para completar la política. Puede ignorar cualquier advertencia y continuar. También puede elegir la opción JSON del editor para escribir o pegar un documento de política de 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, debe especificar de forma manual los ARN de las acciones y los recursos para completar la política. Puede ignorar cualquier advertencia y continuar. También puede elegir la opción JSON del editor para escribir o pegar un documento de política de 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. Le recomendamos que utilice el editor visual seleccionando de la lista de servicios y acciones. Luego, complete la sección de recursos de acuerdo con las indicaciones. Si un servicio no admite plenamente el editor visual, es posible que tenga que especificar de forma manual 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 los problemas siguientes:
-
Nombres de servicios, acciones y tipos de recursos mal escritos, como por ejemplo,
s2
en lugar des3
oListMyBuckets
en lugar deListAllMyBuckets
-
Texto innecesario en los ARN, como
arn:aws:s3: : :*
-
Dos puntos faltantes en acciones, como
iam.CreateUser
Puede evaluar una política que es posible que incluya errores tipográficos si selecciona Siguiente para revisar el resumen de política. Luego, confirme si la política proporciona los permisos deseados.
-
Solución de problemas con resúmenes de política
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 cualquier política que esté asociada a una entidad en la página Detalles de la política correspondiente a esa política. 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 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:
-
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
-
-
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 accesoDeny
oAllow
a nada.nota
Tenga cuidado al utilizar estos elementos de política como
NotPrincipal
,NotAction
yNotResource
. Para obtener más información sobre el uso de elementos de política, consulte Referencia de los elementos de la política de JSON de IAM.Si proporciona servicios y recursos que no coinciden, puede crear una política que no proporcione permisos eficaces. Esto puede ocurrir cuando 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. Pruebe sus políticas con el simulador de políticas para comprenderlas mejor.
El resumen de la 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, una acción o un 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:
-
Servicio de vista previa – Los servicios en vista previa no admiten resúmenes de política.
-
Servicio personalizado – Los servicios personalizados no admiten resúmenes de políticas.
-
El servicio no admite resúmenes – Si su política incluye un servicio disponible de manera general (GA) que no admite resúmenes de políticas, el servicio se incluye en la sección 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.
-
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 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).
-
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 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).
-
Tipografía – AWS comprueba que el JSON es sintácticamente correcto y que la política no incluye errores tipográficos u otros errores como parte de la validación de políticas.
nota
Como práctica recomendada, le sugerimos utilizar IAM Access Analyzer para validar sus políticas de IAM y así garantizar la seguridad y funcionalidad de los permisos. Recomendamos que abra las políticas existentes y revise y resuelva cualquier recomendación de validación de políticas.
El servicio no admite resúmenes de políticas de IAM
Es posible que los resúmenes de políticas de IAM o el editor visual no admitan un servicio o una acción disponible de manera general (GA). 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 añada soporte para el resumen de políticas de IAM o el editor visual
Inicie sesión en AWS Management Console Management Console y abra la consola IAM en https://console.aws.amazon.com/iam/
. -
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.
-
-
A la izquierda del pie de página de la AWS Management Console, seleccione Feedback (Valoración). En el cuadro Comentarios para IAM, 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, escribaI request that the <ServiceName1>, <ServiceName2>, and <ServiceName3> services add support for IAM policy summaries and the visual editor
.
Para solicitar que un servicio añada soporte para el resumen de política de IAM para una acción faltante
Inicie sesión en AWS Management Console Management Console y abra la consola IAM en https://console.aws.amazon.com/iam/
. -
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.
-
-
En el resumen de política, elija el nombre del servicio que incluye una acción no compatible.
-
A la izquierda del pie de página de la AWS Management Console, seleccione Feedback (Valoración). En el cuadro Comentarios para IAM, 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, escribaI 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:
-
Efecto – Indica si la política permite o deniega acceso.
-
Acción – La lista de acciones permitidas o denegadas por la política
-
Recurso – La lista de recursos en los que pueden producirse las acciones
-
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 la política 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 admite una acción, consulte Acciones, recursos y claves de condición de los servicios de AWS.
Compruebe si su política define una acción, un recurso o una condición que no otorgan permisos. Consulte el resumen de política de su política mediante la consola de IAM en https://console.aws.amazon.com/iam/
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).
Se ha definido una acción 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 los 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": "*"
}]
}
Se ha definido un recurso 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:::amzn-s3-demo-bucket
"
]
}]
}
Esta política concede permisos para todas las acciones de CloudFront. Sin embargo, como la política define el recurso de S3 amzn-s3-demo-bucket
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:::amzn-s3-demo-bucket"
]
}]
}
Otra opción para corregir esta política de modo que proporcione solo permisos de CloudFront es eliminar el recurso de S3.
Se ha definido una condición 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 conocer qué condiciones admite una acción, consulte Actions, Resources, and Condition Keys for AWS Services y seleccione el servicio a fin de ver la documentación del servicio para las 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, cuando se visualiza la página Detalles de la política, dicha página 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, vea los eventos de su cuenta en el Historial de eventos de CloudTrail. Los registros de eventos de CloudTrail de incluyen información detallada que usted puede utilizar para cambiar los permisos de la política.
- Un usuario o rol intenta realizar una acción en AWS y dicha solicitud se deniega.
-
Considere si el usuario o rol 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.
- Un usuario o rol tiene permisos que no se utilizan.
-
Considere la posibilidad de eliminar esos 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 acerca del 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.
Validar sus políticas
Al crear o editar una política JSON, IAM puede realizar la validación de políticas para ayudarle a crear una política eficaz. IAM identifica errores de sintaxis JSON, mientras que Analizador de acceso de IAM proporciona verificaciones de políticas adicionales con recomendaciones para ayudarle a perfeccionar aún más las políticas. Para obtener más información acerca la validación de políticas, consulte Validación de la política de IAM. Para obtener más información acerca de las verificaciones de políticas de IAM Access Analyzer y las recomendaciones procesables, consulte Validación de políticas de IAM Access Analyzer.
No tengo permisos para validación de políticas en el editor de JSON
En AWS Management Console, puede recibir el siguiente error si no tiene permisos para ver los resultados de validación de políticas de IAM Access Analyzer:
You need permissions. You do not have the permissions required to perform this
operation. Ask your administrator to add permissions.
Para solucionar este error, pida al administrador que añada el permiso access-analyzer:ValidatePolicy
para usted.
Más de un objeto de política JSON
Una política de IAM debe contar con un solo objeto JSON. Los objetos se indican incluyéndolos en llaves { }. Puede anidar otros objetos en un objeto JSON incorporando llaves ({}) adicionales en el par externo. Una política debe contener solo un par externo 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:::amzn-s3-demo-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:::amzn-s3-demo-bucket/*" } ] }
Más de un elemento de instrucción 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:::amzn-s3-demo-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:::amzn-s3-demo-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 de efecto, acción o recurso en un elemento de instrucción 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 la 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 elementoEffect
. Los demás se omiten. -
Varios elementos
Action
: todos los elementosAction
se combinan de manera interna y se tratan como una lista individual. -
Varios elementos
Resource
: todos los elementosResource
se combinan de manera interna y se tratan como una lista individual.
El motor de políticas no le permite guardar ninguna política con errores sintácticos. Corrija los errores en la política antes de guardar. Revise y corrija cualquier recomendación de validación de políticas para sus políticas.
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 de 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": { "Effect": "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:::amzn-s3-demo-bucket",
"Resource
": "arn:aws:s3:::amzn-s3-demo-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:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } }
Falta el elemento de versión 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. En comparación, una versión de política se crea al cambiar 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}" } }