Políticas de ejemplo para trabajar en la consola de Amazon EC2 - Amazon Elastic Compute Cloud

Políticas de ejemplo para trabajar en la consola de Amazon EC2

Puede utilizar políticas de IAM para conceder a los usuarios permisos para ver y utilizar recursos específicos en la consola de Amazon EC2. Puede utilizar las políticas de ejemplo de la sección anterior; sin embargo, estas son específicas para solicitudes que se realizan con AWS CLI o un AWS SDK. La consola utiliza acciones de API adicionales para sus características, por lo que es posible que estas políticas no funcionen como es debido. Por ejemplo, un usuario que tenga permiso para utilizar únicamente la acción de API DescribeVolumes obtendrá errores cuando intente ver volúmenes en la consola. En esta sección se muestran políticas que permiten a los usuarios utilizar partes específicas de la consola.

sugerencia

Para ayudarle a establecer qué acciones de API son necesarias para realizar tareas en la consola, puede utilizar un servicio como AWS CloudTrail. Para obtener más información, consulte AWS CloudTrail User Guide. Si su política no concede permiso para crear o modificar un recurso concreto, la consola muestra un mensaje codificado con información de diagnóstico. Puede descodificar el mensaje mediante la acción DecodeAuthorizationMessage de la API para AWS STS o el comando decode-authorization-message de la AWS CLI.

Para obtener más información sobre cómo crear políticas para la consola de Amazon EC2, consulte la siguiente entrada del blog de seguridad de AWS: Granting Users Permission to Work in the Amazon EC2 Console.

Ejemplo: Acceso de solo lectura

Para permitir a los usuarios ver todos los recursos de la consola de Amazon EC2, puede utilizar la política del ejemplo siguiente: Ejemplo: Acceso de solo lectura. Los usuarios no pueden realizar ninguna acción en dichos recursos ni crear recursos nuevos a menos que otra instrucción les conceda permiso para ello.

Ver instancias, AMI e instantáneas

Como alternativa, puede proporcionar acceso de solo lectura a un subconjunto de recursos. Para ello, reemplace el carácter comodín * en la acción de API ec2:Describe con acciones ec2:Describe específicas para cada recurso. La siguiente política permite a los usuarios ver todas las instancias, AMI e instantáneas de la consola de Amazon EC2. La acción ec2:DescribeTags permite a los usuarios ver AMI públicas. La consola exige la información de etiquetado para mostrar las AMI públicas; sin embargo, puede eliminar esta acción para permitir que los usuarios vean únicamente AMI privadas.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeImages", "ec2:DescribeTags", "ec2:DescribeSnapshots" ], "Resource": "*" } ] }
nota

Las acciones de API ec2:Describe* de Amazon EC2 no admiten los permisos de nivel de recursos, por lo que no puede controlar qué recursos individuales pueden ver los usuarios en la consola. Por lo tanto, el carácter comodín * es necesario en el elemento Resource de la instrucción anterior. Para obtener más información acerca de qué ARN puede utilizar con qué acciones de la API de Amazon EC2, consulte Acciones, recursos y claves de condición para Amazon EC2 en la Guía del usuario de IAM.

Ver instancias y métricas de CloudWatch

La siguiente política permite a los usuarios ver instancias en la consola de Amazon EC2; así como alarmas y métricas de CloudWatch en la pestaña Monitoring (Monitorización) de la página Instances (Instancias). La consola de Amazon EC2 utiliza la API de CloudWatch para visualizar las alarmas y las métricas, por lo que debe conceder a los usuarios permiso para utilizar las acciones cloudwatch:DescribeAlarms y cloudwatch:GetMetricStatistics.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "cloudwatch:DescribeAlarms", "cloudwatch:GetMetricStatistics" ], "Resource": "*" } ] }

Ejemplo: Usar el asistente para el lanzamiento de EC2

El asistente para el lanzamiento de Amazon EC2 consiste en una serie de pantallas con opciones para configurar y lanzar una instancia. Su política debe incluir un permiso para utilizar acciones de la API que permitan a los usuarios trabajar con opciones del asistente. Si su política no incluye dicho permiso, algunos elementos del asistente no se podrán cargar correctamente y los usuarios no podrán completar el lanzamiento.

Acceso básico al asistente para el lanzamiento

Para completar correctamente un lanzamiento, debe darse a los usuarios permiso para utilizar la acción de API ec2:RunInstances y, como mínimo, las acciones de API siguientes:

  • ec2:DescribeImages: ver y seleccionar una AMI.

  • ec2:DescribeVpcs: ver las opciones de red disponibles.

  • ec2:DescribeSubnets: ver todas las subredes disponibles de la VPC elegida.

  • ec2:DescribeSecurityGroups o ec2:CreateSecurityGroup: para ver y seleccionar un grupo de seguridad existente o para crear uno nuevo.

  • ec2:DescribeKeyPairs o ec2:CreateKeyPair: seleccionar un par de claves existente o para crear uno nuevo.

  • ec2:AuthorizeSecurityGroupIngress: añadir reglas de entrada.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeImages", "ec2:DescribeKeyPairs", "ec2:DescribeVpcs", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:CreateSecurityGroup", "ec2:AuthorizeSecurityGroupIngress", "ec2:CreateKeyPair" ], "Resource": "*" }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "*" } ] }

Puede añadir acciones de API a su política para proporcionar más opciones para los usuarios; por ejemplo:

  • ec2:DescribeAvailabilityZones: ver y seleccionar una zona de disponibilidad específica.

  • ec2:DescribeNetworkInterfaces: ver y seleccionar interfaces de red existentes para la subred seleccionada.

  • Para añadir reglas de salida a grupos de seguridad de VPC, debe conceder permiso a los usuarios para utilizar la acción de API ec2:AuthorizeSecurityGroupEgress. Para modificar o eliminar reglas ya existentes, debe conceder permiso a los usuarios para utilizar la acción de API ec2:RevokeSecurityGroup* pertinente.

  • ec2:CreateTags: etiquetar los recursos que RunInstances crea. Para obtener más información, consulte Concesión de permisos para etiquetar recursos durante la creación. Si los usuarios no tienen permiso para utilizar esta acción e intentan aplicar etiquetas en la página de etiquetado del asistente para el lanzamiento, el lanzamiento generará un error.

    importante

    Tenga cuidado al conceder a los usuarios permiso para usar la acción ec2:CreateTags, ya que ello limita su capacidad de usar la clave de condición ec2:ResourceTag para restringir el uso de otros recursos. Si concede permiso a los usuarios para usar la acción ec2:CreateTags, pueden cambiar la etiqueta de un recurso para omitir esas restricciones. Para obtener más información, consulte Control del acceso a recursos de EC2 mediante etiquetas de recursos.

  • Para utilizar parámetros de Administrador de sistemas al seleccionar una AMI, debe agregar ssm:DescribeParameters y ssm:GetParameters a la política. ssm:DescribeParameters concede a los usuarios de IAM el permiso para ver y seleccionar parámetros de Administrador de sistemas. ssm:GetParameters concede a los usuarios de IAM el permiso para obtener los valores de los parámetros de Administrador de sistemas. También puede restringir el acceso a parámetros de Administrador de sistemas específicos. Para obtener más información, vea Restringir el acceso a parámetros específicos de Administrador de sistemas más adelante en esta sección.

Actualmente, las acciones Describe* de la API de Amazon EC2 no admiten los permisos de nivel de recursos, por lo que no puede restringir qué recursos individuales pueden ver los usuarios en el asistente para el lanzamiento. Sin embargo, puede aplicar permisos de nivel de recursos en la acción de API ec2:RunInstances para restringir qué recursos pueden utilizar los usuarios para lanzar una instancia. El lanzamiento generará un error si los usuarios seleccionan opciones sobre las que no tienen permiso de uso.

Limitar el acceso a un tipo de instancia, subred y región específicos

La política siguiente permite a los usuarios lanzar instancias t2.micro utilizando AMI propiedad de Amazon y únicamente en una subred concreta (subnet-1a2b3c4d). Los usuarios solo pueden realizar lanzamientos en la región sa-east-1. Si seleccionan otra región u otro tipo de instancia, AMI o subred en el asistente para el lanzamiento, el lanzamiento generará un error.

La primera instrucción concede a los usuarios permiso para ver las opciones del asistente para el lanzamiento, tal y como se demuestra en el ejemplo anterior. La segunda instrucción concede a los usuarios permiso para utilizar recursos de la interfaz de red, el volumen, el par de claves, el grupo de seguridad y la subred para la acción ec2:RunInstances, necesarios para lanzar una instancia en una VPC. Para obtener información sobre cómo usar la acción ec2:RunInstances, consulte Lanzar instancias (RunInstances). La tercera y la cuarta instrucción conceden a los usuarios permiso para utilizar la instancia y los recursos de la AMI respectivamente, pero solo si la instancia es una instancia t2.micro y solo si la AMI es propiedad de Amazon.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeImages", "ec2:DescribeKeyPairs", "ec2:CreateKeyPair", "ec2:DescribeVpcs", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:CreateSecurityGroup", "ec2:AuthorizeSecurityGroupIngress" ], "Resource": "*" }, { "Effect": "Allow", "Action":"ec2:RunInstances", "Resource": [ "arn:aws:ec2:sa-east-1:111122223333:network-interface/*", "arn:aws:ec2:sa-east-1:111122223333:volume/*", "arn:aws:ec2:sa-east-1:111122223333:key-pair/*", "arn:aws:ec2:sa-east-1:111122223333:security-group/*", "arn:aws:ec2:sa-east-1:111122223333:subnet/subnet-1a2b3c4d" ] }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:sa-east-1:111122223333:instance/*" ], "Condition": { "StringEquals": { "ec2:InstanceType": "t2.micro" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:sa-east-1::image/ami-*" ], "Condition": { "StringEquals": { "ec2:Owner": "amazon" } } } ] }

Restringir el acceso a parámetros específicos de Administrador de sistemas

La siguiente política concede acceso para utilizar parámetros de Administrador de sistemas con un nombre específico.

La primera instrucción concede a los usuarios permiso para ver parámetros de Administrador de sistemas al seleccionar una AMI en el asistente de inicio. La segunda instrucción concede a los usuarios el permiso para utilizar solo parámetros con nombre prod-*.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ssm:DescribeParameters" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:GetParameters" ], "Resource": "arn:aws:ssm:us-east-2:123456123:parameter/prod-*" } ] }

Ejemplo: Usar volúmenes

La siguiente política concede a los usuarios permiso para ver y crear volúmenes, además de adjuntar volúmenes a instancias específicas y separarlos de ellas.

Los usuarios pueden adjuntar cualquier volumen a instancias que tienen la etiqueta "purpose=test" y también separar volúmenes de dichas instancias. Para adjuntar un volumen mediante la consola de Amazon EC2, es conveniente que los usuarios tengan permiso para utilizar la acción ec2:DescribeInstances, ya que esto les permite seleccionar una instancia en una lista rellenada previamente en el cuadro de diálogo Attach Volume (Asociar volumen). Sin embargo, esto también permite a los usuarios ver todas las instancias de la página Instances (Instancias) de la consola, por lo que puede omitir esta acción.

En la primera instrucción, la acción ec2:DescribeAvailabilityZones es necesaria para garantizar que un usuario pueda seleccionar una zona de disponibilidad al crear un volumen.

Los usuarios no pueden etiquetar los volúmenes que crean (ni durante la creación de volúmenes ni después).

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:DescribeVolumes", "ec2:DescribeAvailabilityZones", "ec2:CreateVolume", "ec2:DescribeInstances" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:AttachVolume", "ec2:DetachVolume" ], "Resource": "arn:aws:ec2:region:111122223333:instance/*", "Condition": { "StringEquals": { "ec2:ResourceTag/purpose": "test" } } }, { "Effect": "Allow", "Action": [ "ec2:AttachVolume", "ec2:DetachVolume" ], "Resource": "arn:aws:ec2:region:111122223333:volume/*" } ] }

Ejemplo: Usar grupos de seguridad

Ver los grupos de seguridad y añadir y eliminar reglas

La siguiente política concede a los usuarios permiso para ver grupos de seguridad en la consola de Amazon EC2, así como para agregar y quitar reglas de entrada y salida para los grupos de seguridad existentes que tengan la etiqueta Department=Test.

En la primera instrucción, la acción ec2:DescribeTags permite a los usuarios ver etiquetas en la consola, lo que les facilita la identificación de los grupos de seguridad sobre los que tienen permiso de modificación.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:DescribeSecurityGroups", "ec2:DescribeTags" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:AuthorizeSecurityGroupIngress", "ec2:RevokeSecurityGroupIngress", "ec2:AuthorizeSecurityGroupEgress", "ec2:RevokeSecurityGroupEgress", "ec2:UpdateSecurityGroupRuleDescriptionsIngress", "ec2:UpdateSecurityGroupRuleDescriptionsEgress" ], "Resource": [ "arn:aws:ec2:region:111122223333:security-group/*" ], "Condition": { "StringEquals": { "ec2:ResourceTag/Department": "Test" } } } ] }

Usar el cuadro de diálogo Create Security Group (Crear grupo de seguridad)

Puede crear una política que permita a los usuarios trabajar con el cuadro de diálogo Create Security Group (Crear grupo de seguridad) en la consola de Amazon EC2. Para utilizar este cuadro de diálogo, debe darse a los usuarios permiso para utilizar como mínimo las acciones de API siguientes:

  • ec2:CreateSecurityGroup: crear un nuevo grupo de seguridad.

  • ec2:DescribeVpcs: ver una lista de las VPC existentes en la lista VPC.

Con estos permisos, los usuarios pueden crear correctamente un grupo de seguridad nuevo, pero no pueden añadirle reglas. Para trabajar con reglas en el cuadro de diálogo Create Security Group (Crear grupo de seguridad), puede añadir las acciones de la API siguientes a una política:

  • ec2:AuthorizeSecurityGroupIngress: añadir reglas de entrada.

  • ec2:AuthorizeSecurityGroupEgress: añadir reglas de salida a grupos de seguridad de la VPC.

  • ec2:RevokeSecurityGroupIngress: modificar o eliminar reglas de entradas existentes. Esta acción es útil para permitir a los usuarios utilizar la característica Copy to new (Copiar en uno nuevo) de la consola. La característica abre el cuadro de diálogo Create Security Group (Crear grupo de seguridad) y lo rellena con las mismas reglas que el grupo de seguridad que se seleccionó.

  • ec2:RevokeSecurityGroupEgress: modificar o eliminar reglas de salida de grupos de seguridad de la VPC. Es útil para permitir a los usuarios modificar o eliminar la regla de salida predeterminada que permite todo el tráfico de salida.

  • ec2:DeleteSecurityGroup: responder cuando las reglas no válidas no se pueden guardar. La consola crea primero el grupo de seguridad y después añade las reglas especificadas. Si las reglas no son válidas, la acción genera un error y la consola intenta eliminar el grupo de seguridad. El usuario permanece en el cuadro de diálogo Create Security Group (Crear grupo de seguridad) para que se pueda corregir la regla no válida y volver a intentar crear el grupo de seguridad. Esta acción de API no es obligatoria, pero si no se concede a un usuario permiso para utilizarla y el usuario intenta crear un grupo de seguridad con reglas no válidas, el grupo de seguridad se creará sin reglas y el usuario deberá añadirlas después.

  • ec2:UpdateSecurityGroupRuleDescriptionsIngress: para agregar o actualizar descripciones de reglas de grupo de seguridad de entrada (entrantes).

  • ec2:UpdateSecurityGroupRuleDescriptionsEgress: para agregar o actualizar descripciones de reglas de grupo de seguridad de salida (salientes).

Actualmente, la acción de API ec2:CreateSecurityGroup no admite permisos de nivel de recursos; sin embargo, puede aplicar estos permisos a las acciones ec2:AuthorizeSecurityGroupIngress y ec2:AuthorizeSecurityGroupEgress para controlar cómo pueden crear reglas los usuarios.

La siguiente política concede a los usuarios permiso para utilizar el cuadro de diálogo Create Security Group (Crear grupo de seguridad) y para crear reglas de entrada y de salida para los grupos de seguridad que están asociados a una VPC específica (vpc-1a2b3c4d). Los usuarios pueden crear grupos de seguridad para EC2-Classic u otra VPC, pero no pueden añadirles reglas. Igualmente, los usuarios tampoco pueden añadir reglas a ningún grupo de seguridad que no esté asociado a la VPC vpc-1a2b3c4d. También se concede permiso a los usuarios para ver todos los grupos de seguridad de la consola. Esto facilita a los usuarios la identificación de los grupos de seguridad a los que pueden añadir reglas de entrada. Esta política también concede a los usuarios permiso para eliminar grupos de seguridad que estén asociados a la VPC vpc-1a2b3c4d.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:DescribeSecurityGroups", "ec2:CreateSecurityGroup", "ec2:DescribeVpcs" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:DeleteSecurityGroup", "ec2:AuthorizeSecurityGroupIngress", "ec2:AuthorizeSecurityGroupEgress" ], "Resource": "arn:aws:ec2:region:111122223333:security-group/*", "Condition":{ "ArnEquals": { "ec2:Vpc": "arn:aws:ec2:region:111122223333:vpc/vpc-1a2b3c4d" } } } ] }

Ejemplo: Usar direcciones IP elásticas

Para permitir a los usuarios ver direcciones IP elásticas en la consola de Amazon EC2, debe concederles permiso para utilizar la acción ec2:DescribeAddresses.

Para permitir a los usuarios trabajar con direcciones IP elásticas, puede añadir las siguientes acciones a su política.

  • ec2:AllocateAddress: asignar una dirección IP elástica.

  • ec2:ReleaseAddress: liberar una dirección IP elástica.

  • ec2:AssociateAddress: asociar una dirección IP elástica a una instancia o una interfaz de red.

  • ec2:DescribeNetworkInterfaces y ec2:DescribeInstances: trabajar con la pantalla Associate address (Asociar dirección). La pantalla muestra las instancias o las interfaces de red disponibles a las que se puede adjuntar una dirección IP elástica.

  • ec2:DisassociateAddress: desvincular una dirección IP elástica de una instancia o una interfaz de red.

La siguiente política permite a los usuarios ver, asignar y asociar direcciones IP elásticas a instancias. Los usuarios no pueden asociar direcciones IP elásticas a interfaces de red, desvincular direcciones IP elásticas ni liberarlas.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeAddresses", "ec2:AllocateAddress", "ec2:DescribeInstances", "ec2:AssociateAddress" ], "Resource": "*" } ] }

Ejemplo: Usar Instancias reservadas

La siguiente política se puede adjuntar a un usuario de IAM. Proporciona al usuario acceso para ver y modificar Instancias reservadas en su cuenta, así como para comprar nuevas Instancias reservadas en la Consola de administración de AWS.

Esta política permite a los usuarios ver todas las Instancias reservadas, así como las Instancias bajo demanda, en la cuenta. No se pueden establecer permisos de nivel de recursos para Instancias reservadas individuales.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:DescribeReservedInstances", "ec2:ModifyReservedInstances", "ec2:PurchaseReservedInstancesOffering", "ec2:DescribeInstances", "ec2:DescribeInstanceTypes", "ec2:DescribeAvailabilityZones", "ec2:DescribeReservedInstancesOfferings" ], "Resource": "*" } ] }

La acción ec2:DescribeAvailabilityZones es necesaria para garantizar que la consola de Amazon EC2 pueda mostrar información sobre las zonas de disponibilidad en las que se pueden adquirir Instancias reservadas. La acción ec2:DescribeInstances no es obligatoria, pero permite asegurarse de que el usuario pueda ver las instancias de la cuenta y adquirir reservas para correlacionar las especificaciones correctas.

Puede ajustar las acciones de API para limitar el acceso de los usuarios; por ejemplo, si quita ec2:DescribeInstances y ec2:DescribeAvailabilityZones, el usuario tendrá acceso de solo lectura.