Ejemplos de políticas de Amazon VPC - Amazon Virtual Private Cloud

Ejemplos de políticas de Amazon VPC

De manera predeterminada, los roles de IAM no tienen permiso para crear ni modificar recursos de VPC. Tampoco pueden realizar tareas mediante la AWS Management Console, la AWS CLI o la API de AWS. Un administrador de IAM debe crear políticas de IAM que concedan permiso a los roles para realizar operaciones de API concretas en los recursos especificados que necesiten. El administrador debe asociar esas políticas a los roles de IAM que necesiten esos permisos.

Para obtener información acerca de cómo crear una política basada en identidades de IAM con estos documentos de políticas JSON de ejemplo, consulte Creación de políticas de IAM en la Guía del usuario de IAM.

Prácticas recomendadas sobre las políticas

Las políticas basadas en identidades determinan si alguien puede crear, eliminar o acceder a los recursos de Amazon VPC de su cuenta. Estas acciones pueden generar costos adicionales para su Cuenta de AWS. Siga estas directrices y recomendaciones al crear o editar políticas basadas en identidades:

  • Comience con las políticas gestionadas por AWSy continúe con los permisos de privilegio mínimo: a fin de comenzar a conceder permisos a los usuarios y las cargas de trabajo, utilice las políticas gestionadas por AWS, que conceden permisos para muchos casos de uso comunes. Están disponibles en su Cuenta de AWS. Se recomienda definir políticas gestionadas por el cliente de AWS específicas para sus casos de uso a fin de reducir aún más los permisos. Con el fin de obtener más información, consulte las políticas gestionadas por AWS o las políticas gestionadas por AWS para funciones de trabajo en la Guía de usuario de IAM.

  • Aplique permisos de privilegio mínimo: cuando establezca permisos con políticas de IAM, conceda solo los permisos necesarios para realizar una tarea. Para ello, debe definir las acciones que se puedes llevar a cabo en determinados recursos en condiciones específicas, también conocidos como permisos de privilegios mínimos. Con el fin de obtener más información sobre el uso de IAM para aplicar permisos, consulta Políticas y permisos en IAM en la Guía del usuario de IAM.

  • Utiliza condiciones en las políticas de IAM para restringir aún más el acceso: puedes agregar una condición a sus políticas para limitar el acceso a las acciones y los recursos. Por ejemplo, puedes escribir una condición de políticas para especificar que todas las solicitudes deben enviarse utilizando SSL. También puedes usar condiciones para conceder acceso a acciones de servicios si se emplean a través de un Servicio de AWS determinado como, por ejemplo, AWS CloudFormation. Para obtener más información, consulta Elementos de la política de JSON de IAM: Condición en la Guía del usuario de IAM.

  • Utiliza el analizador de acceso de IAM para validar las políticas de IAM con el fin de garantizar la seguridad y funcionalidad de los permisos: el analizador de acceso de IAM valida políticas nuevas y existentes para que respeten el lenguaje (JSON) de las políticas de IAM y las prácticas recomendadas de IAM. El analizador de acceso de IAM proporciona más de 100 verificaciones de políticas y recomendaciones procesables para ayudar a crear políticas seguras y funcionales. Para obtener más información, consulte Validación de políticas mediante el Analizador de acceso de IAM en la Guía del usuario de IAM.

  • Solicite la autenticación multifactor (MFA): si se encuentra en una situación en la que necesita usuarios raíz o de IAM en su Cuenta de AWS, active la MFA para mayor seguridad. Para solicitar la MFA cuando se invocan las operaciones de la API, agregue las condiciones de la MFA a sus políticas. Para obtener más información, consulte Acceso seguro a la API con MFA en la Guía del usuario de IAM.

Para obtener más información sobre las prácticas recomendadas de IAM, consulta las Prácticas recomendadas de seguridad en IAM en la Guía del usuario de IAM.

Utilizar la consola de Amazon VPC

Para acceder a la consola de Amazon VPC, debe tener un conjunto mínimo de permisos. Estos permisos deben permitirle mostrar y consultar los detalles sobre los recursos de Amazon VPC en la cuenta de AWS. Si se crea una política basada en identidad que es más restrictiva que los permisos necesarios mínimos, la consola no funcionará del modo esperado para las entidades (roles de IAM) que tengan esa política.

La siguiente política concede permiso a un rol para enumerar los recursos en la consola de la VPC, pero no para crearlos, actualizarlos ni eliminarlos.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeAccountAttributes", "ec2:DescribeAddresses", "ec2:DescribeAvailabilityZones", "ec2:DescribeClassicLinkInstances", "ec2:DescribeClientVpnEndpoints", "ec2:DescribeCustomerGateways", "ec2:DescribeDhcpOptions", "ec2:DescribeEgressOnlyInternetGateways", "ec2:DescribeFlowLogs", "ec2:DescribeInternetGateways", "ec2:DescribeManagedPrefixLists", "ec2:DescribeMovingAddresses", "ec2:DescribeNatGateways", "ec2:DescribeNetworkAcls", "ec2:DescribeNetworkInterfaceAttribute", "ec2:DescribeNetworkInterfacePermissions", "ec2:DescribeNetworkInterfaces", "ec2:DescribePrefixLists", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroupReferences", "ec2:DescribeSecurityGroups", "ec2:DescribeSecurityGroupRules", "ec2:DescribeStaleSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeTags", "ec2:DescribeTrafficMirrorFilters", "ec2:DescribeTrafficMirrorSessions", "ec2:DescribeTrafficMirrorTargets", "ec2:DescribeTransitGateways", "ec2:DescribeTransitGatewayVpcAttachments", "ec2:DescribeTransitGatewayRouteTables", "ec2:DescribeVpcAttribute", "ec2:DescribeVpcClassicLink", "ec2:DescribeVpcClassicLinkDnsSupport", "ec2:DescribeVpcEndpoints", "ec2:DescribeVpcEndpointConnectionNotifications", "ec2:DescribeVpcEndpointConnections", "ec2:DescribeVpcEndpointServiceConfigurations", "ec2:DescribeVpcEndpointServicePermissions", "ec2:DescribeVpcEndpointServices", "ec2:DescribeVpcPeeringConnections", "ec2:DescribeVpcs", "ec2:DescribeVpnConnections", "ec2:DescribeVpnGateways", "ec2:GetManagedPrefixListAssociations", "ec2:GetManagedPrefixListEntries" ], "Resource": "*" } ] }

No es necesario conceder permisos mínimos para la consola a los roles que solo realizan llamadas a la AWS CLI o a la API de AWS. En lugar de ello, conceda acceso únicamente a las acciones que coincidan con la operación de API que el rol necesite ejecutar.

Crear una VPC con una subred pública

En el siguiente ejemplo se permite a los roles crear VPC, subredes, tablas de enrutamiento y puertas de enlace de Internet. Los roles también pueden asociar una puerta de enlace de Internet a una VPC y crear enrutamientos en tablas de enrutamiento. La acción ec2:ModifyVpcAttribute permite a los roles habilitar nombres de host de DNS para la VPC, con el fin de que cada instancia lanzada en una VPC reciba un nombre de host de DNS.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:CreateVpc", "ec2:CreateSubnet", "ec2:DescribeAvailabilityZones", "ec2:CreateRouteTable", "ec2:CreateRoute", "ec2:CreateInternetGateway", "ec2:AttachInternetGateway", "ec2:AssociateRouteTable", "ec2:ModifyVpcAttribute" ], "Resource": "*" } ] }

La política anterior también permite a los roles crear una VPC en la consola de Amazon VPC.

Modificar y eliminar recursos de VPC

Es posible que desee controlar los recursos de VPC que los roles pueden modificar o eliminar. Por ejemplo, la siguiente política permite a los roles utilizar y eliminar tablas de enrutamiento que tengan la etiqueta Purpose=Test. La política también especifica que los roles solo pueden eliminar puertas de enlace de Internet que tengan la etiqueta Purpose=Test. Los roles no pueden utilizar tablas de enrutamiento ni puertas de enlace de Internet que no tengan esta etiqueta.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:DeleteInternetGateway", "Resource": "arn:aws:ec2:*:*:internet-gateway/*", "Condition": { "StringEquals": { "ec2:ResourceTag/Purpose": "Test" } } }, { "Effect": "Allow", "Action": [ "ec2:DeleteRouteTable", "ec2:CreateRoute", "ec2:ReplaceRoute", "ec2:DeleteRoute" ], "Resource": "arn:aws:ec2:*:*:route-table/*", "Condition": { "StringEquals": { "ec2:ResourceTag/Purpose": "Test" } } } ] }

Administrar grupos de seguridad

La siguiente política permite a los roles administrar grupos de seguridad. La primera instrucción permite a los roles eliminar cualquier grupo de seguridad con la etiqueta Stack=test y administrar las reglas de entrada y salida de cualquier grupo de seguridad con la etiqueta Stack=test. La segunda instrucción exige que los roles etiqueten todos los grupos de seguridad que creen con la etiqueta Stack=Test. La tercera instrucción permite a los roles crear etiquetas cuando creen un grupo de seguridad. La cuarta instrucción permite a los roles ver cualquier grupo de seguridad y cualquier regla de grupo de seguridad. La quinta instrucción permite a los roles crear un grupo de seguridad en una VPC.

nota

AWS CloudFormation no puede utilizar esta política para crear un grupo de seguridad con las etiquetas necesarias. Si elimina la condición de la acción ec2:CreateSecurityGroup que requiere la etiqueta, la política funcionará.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:RevokeSecurityGroupIngress", "ec2:AuthorizeSecurityGroupEgress", "ec2:AuthorizeSecurityGroupIngress", "ec2:UpdateSecurityGroupRuleDescriptionsEgress", "ec2:RevokeSecurityGroupEgress", "ec2:DeleteSecurityGroup", "ec2:ModifySecurityGroupRules", "ec2:UpdateSecurityGroupRuleDescriptionsIngress" ], "Resource": "arn:aws:ec2:*:*:security-group/*", "Condition": { "StringEquals": { "ec2:ResourceTag/Stack": "test" } } }, { "Effect": "Allow", "Action": "ec2:CreateSecurityGroup", "Resource": "arn:aws:ec2:*:*:security-group/*", "Condition": { "StringEquals": { "aws:RequestTag/Stack": "test" }, "ForAllValues:StringEquals": { "aws:TagKeys": "Stack" } } }, { "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "arn:aws:ec2:*:*:security-group/*", "Condition": { "StringEquals": { "ec2:CreateAction": "CreateSecurityGroup" } } }, { "Effect": "Allow", "Action": [ "ec2:DescribeSecurityGroupRules", "ec2:DescribeVpcs", "ec2:DescribeSecurityGroups" ], "Resource": "*" }, { "Effect": "Allow", "Action": "ec2:CreateSecurityGroup", "Resource": "arn:aws:ec2:*:*:vpc/*" } ] }

Para permitir que los roles cambien el grupo de seguridad que está asociado a una instancia, agregue la acción ec2:ModifyInstanceAttribute a la política.

Para permitir que los roles cambien los grupos de seguridad de una interfaz de red, agregue la acción ec2:ModifyNetworkInterfaceAttribute a la política.

Administración de reglas de grupos de seguridad

Mediante la siguiente política, se concede a los roles permiso para ver todos los grupos de seguridad y las reglas de los grupos de seguridad, agregar y quitar reglas de entrada y salida para los grupos de seguridad de una VPC específica, y modificar las descripciones de las reglas de esa VPC específica. En la primera instrucción, se utiliza la clave de condición ec2:Vpc a fin de obtener permisos para una VPC específica.

La segunda instrucción concede a los roles permisos para describir todos los grupos de seguridad, reglas de grupos de seguridad y etiquetas. Esto permite a los roles ver las reglas de los grupos de seguridad para modificarlas.

{ "Version": "2012-10-17", "Statement":[{ "Effect":"Allow", "Action": [ "ec2:AuthorizeSecurityGroupIngress", "ec2:RevokeSecurityGroupIngress", "ec2:UpdateSecurityGroupRuleDescriptionsIngress", "ec2:AuthorizeSecurityGroupEgress", "ec2:RevokeSecurityGroupEgress", "ec2:UpdateSecurityGroupRuleDescriptionsEgress", "ec2:ModifySecurityGroupRules" ], "Resource": "arn:aws:ec2:region:account-id:security-group/*", "Condition": { "ArnEquals": { "ec2:Vpc": "arn:aws:ec2:region:account-id:vpc/vpc-id" } } }, { "Effect": "Allow", "Action": [ "ec2:DescribeSecurityGroups", "ec2:DescribeSecurityGroupRules", "ec2:DescribeTags" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:ModifySecurityGroupRules" ], "Resource": "arn:aws:ec2:region:account-id:security-group-rule/*" } ] }

Lanzar instancias en una subred específica

La siguiente política concede a los roles permiso para lanzar instancias en una subred específica, así como para utilizar un grupo de seguridad determinado en la solicitud. Esta política se consigue al especificar el ARN de la subred y el ARN del grupo de seguridad. Si los roles intentan lanzar una instancia en una subred distinta o tratan de utilizar otro grupo de seguridad, se producirá un error en la solicitud (a no ser que otra política o instrucción conceda a los roles permiso para realizar tales acciones).

La política también concede permiso para utilizar el recurso de interfaz de red. Cuando se realiza el lanzamiento en una subred, la solicitud RunInstances crea una interfaz de red principal de manera predeterminada, de modo que el rol necesita permiso para crear este recurso cuando lanza la instancia.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region::image/ami-*", "arn:aws:ec2:region:account:instance/*", "arn:aws:ec2:region:account:subnet/subnet-id", "arn:aws:ec2:region:account:network-interface/*", "arn:aws:ec2:region:account:volume/*", "arn:aws:ec2:region:account:key-pair/*", "arn:aws:ec2:region:account:security-group/sg-id" ] } ] }

Lanzar instancias en una VPC específica

La siguiente política concede a los roles permiso para lanzar instancias en cualquier subred de una VPC específica. Esto se consigue al aplicar en la política una clave de condición (ec2:Vpc) para el recurso de la subred.

La política también concede a los roles permiso para lanzar instancias utilizando solo AMI que tengan la etiqueta “department=dev”.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:region:account-id:subnet/*", "Condition": { "ArnEquals": { "ec2:Vpc": "arn:aws:ec2:region:account-id:vpc/vpc-id" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:region::image/ami-*", "Condition": { "StringEquals": { "ec2:ResourceTag/department": "dev" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region:account:instance/*", "arn:aws:ec2:region:account:volume/*", "arn:aws:ec2:region:account:network-interface/*", "arn:aws:ec2:region:account:key-pair/*", "arn:aws:ec2:region:account:security-group/*" ] } ] }

Bloqueo de acceso público de las VPC y subredes

Los siguientes ejemplos de políticas otorgan permiso a los roles para trabajar con la característica Bloqueo de acceso público (BPA) de las VPC para bloquear el acceso público a los recursos en las VPC y las subredes.

Ejemplo 1: Permitir el acceso de solo lectura a la configuración de toda la cuenta de BPA de la VPC y a las exclusiones de BPA de la VPC.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VPCBPAReadOnlyAccess", "Action": [ "ec2:DescribeVpcBlockPublicAccessOptions", "ec2:DescribeVpcBlockPublicAccessExclusions" ], "Effect": "Allow", "Resource": "*" } ] }

Ejemplo 2: Permitir el acceso completo de lectura y escritura a la configuración de toda la cuenta de BPA de la VPC y a las exclusiones de BPA de la VPC.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VPCBPAFullAccess", "Action": [ "ec2:DescribeVpcBlockPublicAccessOptions", "ec2:DescribeVpcBlockPublicAccessExclusions", "ec2:ModifyVpcBlockPublicAccessOptions", "ec2:CreateVpcBlockPublicAccessExclusion", "ec2:ModifyVpcBlockPublicAccessExclusion", "ec2:DeleteVpcBlockPublicAccessExclusion" ], "Effect": "Allow", "Resource": "*" } ] }

Ejemplo 3: Permitir el acceso a todas las API de EC2, excepto modificar la configuración de BPA de la VPC y crear exclusiones.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EC2FullAccess" "Action": [ "ec2:*", ], "Effect": "Allow", "Resource": "*" }, { "Sid": "VPCBPAPartialAccess", "Action": [ "ec2:ModifyVpcBlockPublicAccessOptions", "ec2:CreateVpcBlockPublicAccessExclusion" ], "Effect": "Deny", "Resource": "*" } ] }

Ejemplos de políticas de Amazon VPC adicionales

Puede encontrar otras políticas de IAM de ejemplo relacionadas con Amazon VPC en la siguiente documentación: