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

Exemplos de políticas da Amazon VPC

Por padrão, os perfis 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 perfis permissão para executarem operações de API específicas nos recursos especificados de que precisam. O administrador deve anexar as políticas aos perfis do IAM que exijam 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 do IAM no Guia do usuário do IAM.

Melhores práticas de política

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

  • Comece com as políticas gerenciadas pela AWS e avance para as permissões de privilégio mínimo: para começar a conceder permissões a seus usuários e workloads, use as políticas gerenciadas pela AWS, que concedem permissões para muitos casos de uso comuns. Elas estão disponíveis em seus Conta da AWS. Recomendamos que você reduza ainda mais as permissões definindo políticas gerenciadas pelo cliente AWS específicas para seus casos de uso. Para obter mais informações, consulte Políticas gerenciadas pela AWS ou Políticas gerenciadas pela AWS para perfis de trabalho no Guia do usuário do IAM.

  • Aplique permissões de privilégio mínimo: ao definir permissões com as políticas do IAM, conceda apenas as permissões necessárias para executar uma tarefa. Você faz isso definindo as ações que podem ser executadas em recursos específicos sob condições específicas, também conhecidas como permissões de privilégio mínimo. Para obter mais informações sobre como usar o IAM para aplicar permissões, consulte Políticas e permissões no IAM no Guia do usuário do IAM.

  • Use condições nas políticas do IAM para restringir ainda mais o acesso: você pode adicionar uma condição às políticas para limitar o acesso a ações e recursos. Por exemplo, você pode gravar uma condição de política para especificar que todas as solicitações devem ser enviadas usando SSL. Você também pode usar condições para conceder acesso a ações de serviço, se elas forem usadas por meio de um AWS service (Serviço da AWS) específico, como o AWS CloudFormation. Para obter mais informações, consulte Elementos da política JSON do IAM: Condição no Guia do usuário do IAM.

  • Use o IAM Access Analyzer para validar suas políticas do IAM a fim de garantir permissões seguras e funcionais: o IAM Access Analyzer valida as políticas novas e existentes para que elas sigam a linguagem de política do IAM (JSON) e as práticas recomendadas do IAM. O IAM Access Analyzer oferece mais de 100 verificações de política e recomendações acionáveis para ajudá-lo a criar políticas seguras e funcionais. Para obter mais informações, consulte Validar políticas com o IAM Access Analyzer no Guia do usuário do IAM.

  • Exigir autenticação multifator (MFA): se houver um cenário que exija usuários do IAM ou um usuário-raiz em sua Conta da AWS, ative a MFA para obter segurança adicional. Para exigir MFA quando as operações de API forem chamadas, adicione condições de MFA às suas políticas. Para obter mais informações, consulte Acesso seguro à API com a MFA no Guia do usuário do IAM.

Para obter mais informações sobre as práticas recomendadas do IAM, consulte Práticas recomendadas de segurança no IAM no Guia 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 (perfis do IAM) com essa política.

A política a seguir concede permissão a um perfil 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 perfis que fazem chamadas somente à AWS CLI ou à API da AWS. Em vez disso, permita o acesso somente às ações que correspondem à operação da API que o perfil precisa executar.

Criar uma VPC com uma sub-rede pública

O exemplo a seguir permite que os perfis criem VPCs, sub-redes, tabelas de rota e gateways da Internet. Os perfis 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 perfis 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 perfis criem uma VPC no console da Amazon VPC.

Modificar e excluir recursos da VPC

É possível controlar os recursos da VPC que os perfis podem modificar ou excluir. Por exemplo, a política a seguir permite que os perfis trabalhem com e excluam tabelas de rotas com a etiqueta Purpose=Test. A política também especifica que os perfis podem excluir somente os gateways da Internet que tenham a etiqueta Purpose=Test. Os perfis não podem trabalhar com tabelas de rota ou gateways da Internet que não tenham essa 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" } } } ] }

Gerenciar grupos de segurança

A política a seguir permite que os perfis gerenciem grupos de segurança. A primeira instrução permite que os perfis 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 instrução requer que os perfis marquem qualquer grupo de segurança criado com a etiqueta Stack=Test. A terceira instrução permite que os perfis criem etiquetas ao criar um grupo de segurança. A quarta instrução permite que os perfis visualizem qualquer grupo de segurança e regra de grupo de segurança. A quinta instrução permite aos perfis criar um grupo de segurança em uma VPC.

nota

Essa política não pode ser usada pelo serviço do AWS CloudFormation para criar um grupo de segurança com as tags necessárias. Se você remover a condição da ação ec2:CreateSecurityGroup que exige a tag, a 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 os perfis alterem o grupo de segurança associado a uma instância, adicione a ação ec2:ModifyInstanceAttribute à sua política.

Para permitir que os perfis 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 perfis 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 instrução concede permissão aos perfis para descrever todos os grupos de segurança, regras do grupo de segurança e etiquetas. Isso permite que os perfis 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": "*" }, { "Effect": "Allow", "Action": [ "ec2:ModifySecurityGroupRules" ], "Resource": "arn:aws:ec2:region:account-id:security-group-rule/*" } ] }

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

A política a seguir concede permissões aos perfis para executar instâncias em uma sub-rede específica e usar um grupo de segurança 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 perfis tentarem executar uma instância em uma sub-rede diferente ou usar um grupo de segurança diferente, haverá falha na solicitação (a menos que outra política ou instrução conceda aos perfis 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 perfil precise de permissão para criar esse recurso ao 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 perfis para executar 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 perfis para executar instâncias usando somente AMIs que possuam a 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/*" ] } ] }

Bloquear o acesso público a VPCs e sub-redes

Os exemplos de política a seguir concedem aos perfis permissão para trabalhar com o atributo Bloquear o Acesso Público (BPA) da VPC para bloquear o acesso público a recursos em VPCs e sub-redes.

Exemplo 1: permitir o acesso somente para leitura às configurações do BPA da VPC e exclusões do BPA da VPC no âmbito total da conta.

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

Exemplo 2: permitir total acesso para leitura e gravação às configurações do BPA da VPC e exclusões do BPA da VPC no âmbito total da conta.

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

Exemplo 3: permitir acesso a todas as APIs do EC2, exceto para modificar as configurações do BPA da VPC e criar exclusões.

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

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: