Estructura de la política - Amazon Elastic Compute Cloud

Estructura de la política

En los siguientes temas se explica la estructura de una política de IAM.

Sintaxis de la política

Una política de IAM es un documento JSON que contiene una o varias instrucciones. Cada instrucción tiene la estructura siguiente.

{ "Statement":[{ "Effect":"effect", "Action":"action", "Resource":"arn", "Condition":{ "condition":{ "key":"value" } } } ] }

Una instrucción está compuesta por varios elementos:

  • Effect: el valor de effect puede ser Allow o Deny. De forma predeterminada, los usuarios de IAM no tienen permiso para utilizar los recursos y las acciones de la API, por lo que se deniegan todas las solicitudes. Si se concede un permiso explícito se anula el valor predeterminado. Una denegación explícita invalida cualquier permiso concedido.

  • Action: el valor de action es la acción de la API para la que concede o deniega permisos. Para obtener más información de cómo especificar el valor de action, consulte Acciones de Amazon EC2.

  • Resource: el recurso al que afecta la acción. Algunas acciones de la API de Amazon EC2 permiten incluir en la política recursos específicos que la acción puede crear o modificar. Especifique un recurso con un nombre de recurso de Amazon (ARN) o utilizando el carácter comodín (*) para indicar que la instrucción se aplica a todos los recursos. Para obtener más información, consulte Permisos de nivel de recurso admitidos para las acciones de la API de Amazon EC2.

  • Condition: las condiciones son opcionales. Se pueden usar para controlar cuándo está en vigor la política. Para obtener más información sobre cómo especificar condiciones para Amazon EC2, consulte Claves de condición de Amazon EC2.

Para obtener más información sobre las instrucciones de política de IAM de ejemplo para Amazon EC2, consulte Políticas de ejemplo para trabajar con la AWS CLI o un SDK de AWS.

Acciones de Amazon EC2

En una instrucción de política de IAM, puede especificar cualquier acción de API de cualquier servicio que sea compatible con IAM. Para Amazon EC2, use el prefijo siguiente con el nombre de la acción de API: ec2:. Por ejemplo: ec2:RunInstances y ec2:CreateImage.

Para especificar varias acciones en una única instrucción, sepárelas con comas del siguiente modo:

"Action": ["ec2:action1", "ec2:action2"]

También puede utilizar caracteres comodín para especificar varias acciones. Por ejemplo, puede especificar todas las acciones cuyo nombre comience por la palabra "Describe" del siguiente modo:

"Action": "ec2:Describe*"

Para especificar todas las acciones de API de Amazon EC2, use el carácter comodín * del siguiente modo:

"Action": "ec2:*"

Para ver la lista de las acciones de Amazon EC2, consulte Acciones en la Amazon EC2 API Reference.

Permisos de nivel de recurso admitidos para las acciones de la API de Amazon EC2

Los permisos de nivel de recursos se refieren a la posibilidad de especificar en qué recursos pueden realizar acciones los usuarios. Amazon EC2 es compatible parcialmente con permisos de nivel de recursos. Esto significa que, en algunas acciones de Amazon EC2, puede determinar cuándo se permite utilizarlas a los usuarios en función de si se cumplen una serie de condiciones o de los recursos concretos que pueden utilizar los usuarios. Por ejemplo, puede otorgar permisos a los usuarios para lanzar instancias, pero solo de un tipo específico, y únicamente utilizando una AMI específica.

Para especificar un recurso en la instrucción de política de IAM, se utiliza el nombre de recurso de Amazon (ARN). Para obtener más información sobre cómo especificar el valor de ARN, consulte Nombres de recursos de Amazon (ARN) para Amazon EC2. Si una acción de API no admite ARN individuales, debe utilizar un comodín (*) para especificar que la acción puede afectar a todos los recursos.

Para ver tablas que identifican qué acciones de la API de Amazon EC2 admiten permisos de nivel de recursos, así como los ARN y las claves de condición que puede utilizar en una política, consulte Acciones, recursos y claves de condición para Amazon EC2 en la Guía del usuario de IAM. Las claves de condición para Amazon EC2 se explican con más detalle en una sección posterior.

Tenga en cuenta que puede aplicar permisos de nivel de recurso basados en etiquetas en las políticas de IAM que utiliza para acciones de la API de Amazon EC2. Esto le ofrece un mejor control sobre los recursos que un usuario puede crear, modificar o utilizar. Para obtener más información, consulte Concesión de permisos para etiquetar recursos durante la creación.

Nombres de recursos de Amazon (ARN) para Amazon EC2

Cada instrucción de política de IAM se aplica a los recursos especificados utilizando sus ARN.

Un ARN tiene la siguiente sintaxis general:

arn:aws:[service]:[region]:[account]:resourceType/resourcePath
service

El servicio (por ejemplo, ec2).

region

La región para el recurso (por ejemplo us-east-1).

account

El ID de cuenta de AWS, sin guiones (por ejemplo, 123456789012).

resourceType

El tipo de recurso (por ejemplo, instance).

resourcePath

Una ruta que identifica al recurso. Puede utilizar carácter comodín * en las rutas.

Por ejemplo, puede indicar una instancia específica (i-1234567890abcdef0) en la instrucción usando su ARN de este modo.

"Resource": "arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0"

También puede especificar todas las instancias que pertenecen a una cuenta específica mediante el carácter comodín * del modo siguiente.

"Resource": "arn:aws:ec2:us-east-1:123456789012:instance/*"

También puede especificar todos los recursos de Amazon EC2 que pertenecen a una cuenta específica mediante el carácter comodín * del modo siguiente.

"Resource": "arn:aws:ec2:us-east-1:123456789012:*"

Para especificar todos los recursos o cuando una acción de API no admita ARN, utilice el carácter comodín * en el elemento Resource de la siguiente manera.

"Resource": "*"

En muchas acciones de la API de Amazon EC2 se utilizan varios recursos. Por ejemplo, AttachVolume asocia un volumen de Amazon EBS a una instancia, por lo que un usuario de IAM debe tener permisos para utilizar el volumen y la instancia. Para especificar varios recursos en una única instrucción, separe sus ARN con comas, tal y como se indica a continuación.

"Resource": ["arn1", "arn2"]

Para obtener una lista de ARN de recursos de Amazon EC2, consulte Tipos de recursos definidos por Amazon EC2 en Guía del usuario de IAM.

Claves de condición de Amazon EC2

En la instrucción de una política, tiene la opción de especificar las condiciones que controlan cuando está en vigor. Cada condición contiene uno o varios pares clave-valor. Las claves de condición no distinguen entre mayúsculas y minúsculas. Hemos definido claves de condición generales de AWS y también claves de condición específicas de los servicios.

Para obtener una lista de claves de condición específicas del servicio para Amazon EC2, consulte Claves de condición para Amazon EC2 en la Guía del usuario de IAM. Amazon EC2 también implementa claves de condición que se aplican a todo AWS. Para obtener más información, consulte Información disponible en todas las solicitudes en la Guía del usuario de IAM.

Para utilizar una clave de condición en la política de IAM, utilice la instrucción Condition. Por ejemplo, la política siguiente concede a los usuarios permiso para agregar y eliminar reglas de entrada y salida para cualquier grupo de seguridad. Utiliza la clave de condición ec2:Vpc para especificar que estas acciones solo se pueden realizar en grupos de seguridad de una VPC específica.

{ "Version": "2012-10-17", "Statement":[{ "Effect":"Allow", "Action": [ "ec2:AuthorizeSecurityGroupIngress", "ec2:AuthorizeSecurityGroupEgress", "ec2:RevokeSecurityGroupIngress", "ec2:RevokeSecurityGroupEgress"], "Resource": "arn:aws:ec2:region:account:security-group/*", "Condition": { "StringEquals": { "ec2:Vpc": "arn:aws:ec2:region:account:vpc/vpc-11223344556677889" } } } ] }

Si especifica varias condiciones o varias claves en una condición, las evaluamos con una operación lógica AND. Si especifica una condición con varios valores para una clave, evaluamos la condición con una operación lógica OR. Para conceder los permisos, es necesario que se cumplan todas las condiciones.

También puede utilizar comodines al especificar las condiciones. Por ejemplo, puede conceder a un usuario de IAM permiso para utilizar recursos con una etiqueta que especifique su nombre de usuario de IAM. Para obtener más información, consulte Variables de políticas en la Guía del usuario de IAM.

importante

Muchas claves de condición son específicas de un recurso y algunas acciones de API utilizan varios recursos. Si escribe una política con una clave de condición, use el elemento Resource de la instrucción para especificar el recurso en el que se aplica la clave de condición. Si no lo hace, la política puede impedir que los usuarios ejecuten la acción, ya que la comprobación de la condición dará un error en el caso de los recursos en los que la clave de la condición no se aplica. Si no quiere especificar un recurso o si ha escrito el elemento Action de su política para que contenga varias acciones de API, debe utilizar el tipo de condición ...IfExists para asegurarse de que no se tenga en cuenta la clave de condición en el caso de los recursos que no la utilicen. Para obtener más información, consulte ...IfExists Conditions en la Guía del usuario de IAM.

Todas las acciones de Amazon EC2 admiten las claves de condición aws:RequestedRegion y ec2:Region. Para obtener más información, consulte Ejemplo: Limitar el acceso a una región específica.

La clave ec2:SourceInstanceARN se puede usar para condiciones que especifiquen el ARN de la instancia desde la que se realiza una solicitud. Esta clave de condición está disponible en todo AWS y no es específica de un servicio. Para ver ejemplos de políticas, consulte Amazon EC2: permite que una instancia EC2 asocie o separe volúmenes y Ejemplo: Permitir que una instancia específica vea los recursos de otros servicios de AWS. La clave ec2:SourceInstanceARN no se puede usar como una variable para rellenar el ARN del elemento Resource en una instrucción.

Para obtener ejemplos de instrucciones de política de Amazon EC2, consulte Políticas de ejemplo para trabajar con la AWS CLI o un SDK de AWS.

Comprobar que los usuarios tienen los permisos necesarios

Una vez creada la política de IAM, le recomendamos que compruebe si concede permisos a los usuarios para utilizar las acciones de la API concretas y los recursos necesarios antes de pasar la política a producción.

En primer lugar, cree un usuario de IAM para realizar pruebas y luego asocie la política de IAM que creó al usuario de prueba. A continuación, realice una solicitud como usuario de prueba.

Si la acción de Amazon EC2 que va a probar crea o modifica un recurso, debería realizar la solicitud utilizando el parámetro DryRun (o ejecutar el comando de la AWS CLI con la opción --dry-run). En este caso, la llamada completa la comprobación de autorización, pero no la operación. Por ejemplo, puede comprobar si el usuario puede finalizar una instancia determinada sin finalizarla en realidad. Si el usuario de prueba tiene los permisos necesarios, la solicitud devolverá DryRunOperation; de lo contrario, devolverá UnauthorizedOperation.

Si la política no concede los permisos previstos al usuario o es demasiado permisiva, puede ajustarla según sea necesario y repetir las pruebas hasta obtener el resultado deseado.

importante

Puede que los cambios en la política tarden varios minutos en propagarse y surtir efecto. Por lo tanto, le recomendamos que espere cinco minutos antes de probar las actualizaciones de la misma.

Si se produce un error en la comprobación de autorización, la solicitud devuelve un mensaje codificado con información de diagnóstico. Puede descodificar el mensaje usando la acción DecodeAuthorizationMessage. Para obtener más información, consulte DecodeAuthorizationMessage en la AWS Security Token Service API Reference y decode-authorization-message en la AWS CLI Command Reference.