Exemplos de políticas da Amazon VPC - Amazon Virtual Private Cloud

Exemplos de políticas da Amazon VPC

Por padrão, os usuários e as funções do IAM não têm permissão para criar ou modificar recursos da VPC. Eles também não podem executar tarefas usando o AWS Management Console, a AWS CLI ou uma API da AWS. Um administrador do IAM deve criar políticas do IAM que concedam aos usuários e perfis permissão para executarem operações de API específicas nos recursos especificados de que precisam. O administrador deve anexar essas políticas aos usuários ou grupos do IAM que exigem essas permissões.

Para saber como criar uma política baseada em identidade do IAM usando esses exemplos de documentos de política JSON, consulte Criar políticas na guia JSON no Manual do usuário do IAM.

Melhores práticas de políticas

As políticas baseadas em identidade são muito eficientes. Elas determinam se alguém pode criar, acessar ou excluir recursos do Amazon VPC em sua conta. Essas ações podem incorrer em custos para a Conta da AWS. Ao criar ou editar políticas baseadas em identidade, siga estas diretrizes e recomendações:

  • Comece usando políticas gerenciadas pela AWS: para começar a usar a Amazon VPC rapidamente, use as políticas gerenciadas pela AWS para conceder a seus funcionários as permissões necessárias. Essas políticas já estão disponíveis em sua conta e são mantidas e atualizadas pela AWS. Para obter mais informações, consulte Começar a usar permissões com políticas gerenciadas da AWS no Guia do usuário do IAM.

  • Conceder privilégio mínimo: ao criar políticas personalizadas, conceda apenas as permissões necessárias para executar uma tarefa. Comece com um conjunto mínimo de permissões e conceda permissões adicionais conforme necessário. Fazer isso é mais seguro do que começar com permissões que são muito lenientes e tentar restringi-las superiormente. Para obter mais informações, consulte Conceder privilégio mínimo no Guia do usuário do IAM.

  • Habilitar MFA para operações confidenciais: para aumentar a segurança, exija que os usuários do IAM usem Multi-Factor Authentication (MFA) para acessar recursos ou operações de API confidenciais. Para obter mais informações, consulte Usar autenticação multifator (MFA) AWS no Guia do usuário do IAM.

  • Usar condições de política para segurança adicional: na medida do possível, defina as condições sob as quais suas políticas baseadas em identidade permitem o acesso a um recurso. Por exemplo, você pode gravar condições para especificar um intervalo de endereços IP permitidos do qual a solicitação deve partir. Você também pode escrever condições para permitir somente solicitações em uma data especificada ou período ou para exigir o uso de SSL ou MFA. Para obter mais informações, consulte Elementos de política JSON do IAM: condição no Manual do usuário do IAM.

Use o console da Amazon VPC.

Para acessar o console da Amazon VPC, você deve ter um conjunto mínimo de permissões. Essas permissões devem permitir listar e visualizar detalhes sobre os recursos da Amazon VPC em sua conta da AWS. Se você criar uma política baseada em identidade que seja mais restritiva que as permissões mínimas necessárias, o console não funcionará como pretendido para entidades (usuários ou funções do IAM) com essa política.

A política a seguir concede permissão aos usuários para listar recursos no console da VPC, mas não para criá-los, atualizá-los ou excluí-los.

{ "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": "*" } ] }

Não é necessário conceder permissões mínimas do console para usuários que fazem chamadas somente à AWS CLI ou à API do AWS. Em vez disso, para esses usuários, permita o acesso somente às ações que correspondam à operação da API que precisam executar.

Criar uma VPC com uma sub-rede pública

O exemplo a seguir permite que os usuários criem VPCs, sub-redes, tabelas de rota e gateways da Internet. Os usuários também podem anexar um gateway da Internet a uma VPC e criar rotas em tabelas de rotas. A ação ec2:ModifyVpcAttribute permite que os usuários habilitem nomes de host DNS para a VPC, para que cada instância executada nessa VPC receba um nome de host 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": "*" } ] }

A política anterior também permite que os usuários criem uma VPC no console da Amazon VPC.

Modificar e excluir recursos da VPC

É possível controlar quais recursos da VPC os usuários podem modificar ou excluir. Por exemplo, a política a seguir permite que os usuários trabalhem com e excluam tabelas de rotas com a tag Purpose=Test. A política também especifica que os usuários podem excluir somente os gateways da Internet que tenham a tag Purpose=Test. Os usuários não podem trabalhar com tabelas de rota ou gateways da Internet que não tenham essa tag.

{ "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" } } } ] }

Gerenciar grupos de segurança

A política a seguir permite que os usuários gerenciem grupos de segurança. A primeira declaração permite que os usuários excluam qualquer grupo de segurança com a etiqueta Stack=test e gerenciem as regras de entrada e saída para qualquer grupo de segurança com a etiqueta Stack=test. A segunda declaração requer que os usuários marquem quaisquer grupos de segurança criados com a tag Stack=Test. A terceira declaração permite que os usuários criem etiquetas ao criar um grupo de segurança. A quarta instrução permite que os usuários visualizem qualquer grupo de segurança e regra de grupo de segurança. A quinta declaração permite aos usuários criar um grupo de segurança em uma VPC.

{ "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 os usuários alterem o grupo de segurança associado a uma instância, adicione a ação ec2:ModifyInstanceAttribute à sua política.

Para permitir que os usuários alterem grupos de segurança de uma interface de rede, adicione a ação ec2:ModifyNetworkInterfaceAttribute à sua política.

Gerenciar regras de grupos de segurança

A política a seguir concede aos usuários permissão para visualizar todos os grupos de segurança e regras de grupo de segurança, adicionar e remover regras de entrada e de saída para os grupos de segurança de uma VPC específica e modificar descrições de regras para a VPC especificada. A primeira declaração usa a chave de condição ec2:Vpc para permissões de escopo para uma VPC específica.

A segunda declaração concede permissão aos usuários para descrever todos os grupos de segurança, regras do grupo de segurança e tags. Isso permite que os usuários visualizem as regras de grupo de segurança a fim de modificá-las.

{ "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": "*" } ] }

Executar instâncias em uma sub-rede específica

A política a seguir concede permissões aos usuários para executarem instâncias em uma sub-rede específica e usarem um security group específico na solicitação. A política faz isso especificando o ARN para a sub-rede e o ARN para o grupo de segurança. Se usuários tentarem executar uma instância em uma sub-rede diferente ou usar um security group diferente, haverá falha na solicitação (a menos que outra política ou instrução conceda aos usuários permissão para fazer isso).

A política também concede permissão para usar o recurso de interface de rede. Quando executada em uma sub-rede, a solicitação RunInstances cria uma interface de rede primária por padrão, para que o usuário precise de permissão para criar esse recurso quando executar a instância.

{ "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" ] } ] }

Executar instâncias em uma VPC específica

A política a seguir concede permissões aos usuários para executarem instâncias em qualquer sub-rede de uma VPC específica. A política faz isso, aplicando uma chave de condição (ec2:Vpc) ao recurso de sub-rede.

A política também concede permissão aos usuários de executarem instâncias usando somente AMIs que possuam a tag "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/*" ] } ] }

Exemplos adicionais de políticas da Amazon VPC

É possível encontrar políticas do IAM de exemplo adicionais relacionadas à Amazon VPC na documentação a seguir: