Políticas de exemplo para trabalhar no console do Amazon EC2 - Amazon Elastic Compute Cloud

Políticas de exemplo para trabalhar no console do Amazon EC2

É possível usar as políticas do IAM para conceder permissões aos usuários para visualizarem e trabalharem com recursos específicos no console do Amazon EC2. É possível usar os exemplos de políticas da seção anterior. No entanto, eles foram criados para solicitações feitas com a AWS CLI ou com um AWS SDK. O console usa ações de API adicionais para seus recursos, portanto, essas políticas talvez não funcionem como esperado. Por exemplo, um usuário que tem permissão para usar somente a ação da API DescribeVolumes encontrará erros ao tentar visualizar volumes no console. Esta seção demonstra políticas que permitem que os usuários trabalhem com partes específicas do console.

dica

Para ajudar a descobrir quais ações de API são necessárias para realizar tarefas no console, é possível usar um serviço como o AWS CloudTrail. Para obter mais informações, consulte o Guia do usuário do AWS CloudTrail. Se sua política não conceder permissão para criar ou modificar um recurso específico, o console exibirá uma mensagem codificada com informações de diagnóstico. É possível decodificar a mensagem usando a ação de API DecodeAuthorizationMessage para AWS STS, ou o comando decode-authorization-message na AWS CLI.

Para obter informações adicionais sobre como criar políticas para o console do Amazon EC2, consulte a seguinte postagem do Blog de segurança da AWS: Granting Users Permission to Work in the Amazon EC2 Console (Conceder permissão aos usuários para trabalhar no console do Amazon EC2).

Exemplo: acesso somente leitura

Para permitir que os usuários visualizem todos os recursos no console do Amazon EC2, é possível usar a mesma política como no exemplo a seguir: Exemplo: acesso somente leitura. Os usuários não podem executar nenhuma ação nesses recursos ou criar novos recursos, a menos que outra declaração conceda permissão a eles para fazer isso.

Visualizar instâncias, AMIs e snapshots

Como alternativa, é possível fornecer acesso somente leitura a um subconjunto de recursos. Para fazer isso, substitua o caractere curinga * na ação de API ec2:Describe por ações ec2:Describe específicas para cada recurso. A política a seguir permite que os usuários visualizem todas as instâncias, AMIs e snapshots no console do Amazon EC2. A ação ec2:DescribeTags permite que os usuários visualizem AMIs públicas. O console requer que as informações de marcação exibam AMIs públicas. No entanto, é possível remover essa ação para permitir que os usuários visualizem somente AMIs privadas.

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

As ações da API ec2:Describe* do Amazon EC2 não oferecem suporte a permissões em nível de recurso, portanto, não é possível controlar quais recursos individuais os usuários podem visualizar no console. Portanto, o caractere curinga * é necessário no elemento Resource da declaração acima. Para obter mais informações sobre quais ARNs é possível usar com quais ações de API do Amazon EC2, consulte Ações, recursos e chaves de condição do Amazon EC2 no .

Visualizar instâncias e métricas do CloudWatch

A política a seguir permite que os usuários visualizem instâncias no console do Amazon EC2, bem como alarmes e métricas do CloudWatch na guia Monitoring (Monitoramento) da página Instances (Instâncias). O console do Amazon EC2 usa a API do CloudWatch para exibir os alarmes e as métricas, portanto, conceda aos usuários permissão para usar as ações cloudwatch:DescribeAlarms e cloudwatch:GetMetricStatistics.

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

Exemplo: usar o assistente de execução do EC2

O assistente de execução do Amazon EC2 é uma série de telas com opções para configurar e executar uma instância. Sua política deve incluir permissão para usar as ações de API que permitem que os usuários trabalhem com as opções do assistente. Se a política não incluir a permissão para usar essas ações, alguns itens do assistente poderão não ser carregados corretamente, e os usuários não poderão concluir uma execução.

Acesso básico ao assistente de execução

Para concluir uma execução com êxito, os usuários devem receber permissão para usar a ação de API ec2:RunInstances e, pelo menos, as seguintes ações de API:

  • ec2:DescribeImages: para visualizar e selecionar uma AMI.

  • ec2:DescribeInstanceTypes: para visualizar e selecionar um tipo de instância.

  • ec2:DescribeVpcs: para ver as opções de rede disponíveis.

  • ec2:DescribeSubnets: para visualizar todas as sub-redes disponíveis da VPC escolhida.

  • ec2:DescribeSecurityGroups ou ec2:CreateSecurityGroup: para visualizar e selecionar um grupo de segurança existente ou criar um.

  • ec2:DescribeKeyPairs ou ec2:CreateKeyPair: para selecionar um par de chaves ou criar um par.

  • ec2:AuthorizeSecurityGroupIngress: para adicionar regras de entrada.

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

É possível adicionar ações de API à sua política para fornecer mais opções aos usuários, por exemplo:

  • ec2:DescribeAvailabilityZones: para ver e selecionar uma zona de disponibilidade específica.

  • ec2:DescribeNetworkInterfaces: para visualizar e selecionar interfaces de rede existentes para a sub-rede selecionada.

  • Para adicionar regras de saída para grupos de segurança da VPC, os usuários devem receber a permissão para usar a ação de API ec2:AuthorizeSecurityGroupEgress. Para modificar ou excluir regras existentes, os usuários devem receber permissão para usar a ação de API relevante ec2:RevokeSecurityGroup*.

  • ec2:CreateTags: para marcar os recursos criados por RunInstances. Para obter mais informações, consulte Conceder permissão para marcar recursos durante a criação. Se os usuários não tiverem permissão para usar essa ação e tentarem aplicar tags na página de marcação do assistente de execução, haverá falha na execução.

    Importante

    Tenha cuidado ao conceder aos usuários permissão para usar a ação ec2:CreateTags, pois isso limita sua capacidade de usar a chave de condição aws:ResourceTag para restringir o uso de outros recursos. Se você conceder aos usuários permissão para usar a ação ec2:CreateTags, eles poderão alterar a tag de um recurso para contornar essas restrições. Para obter mais informações, consulte Controlar o acesso aos recursos do EC2 usando tags de recursos.

  • Para usar parâmetros do Systems Manager ao selecionar uma AMI, adicione ssm:DescribeParameters e ssm:GetParameters à política. ssm:DescribeParameters concede aos usuários do IAM permissão para visualizar e selecionar parâmetros do Systems Manager. ssm:GetParameters concede aos usuários do IAM a permissão para obter os valores dos parâmetros do Systems Manager. Também é possível restringir o acesso a parâmetros específicos do Systems Manager. Para obter mais informações, consulte Restringir acesso a parâmetros específicos do Systems Manager posteriormente nesta seção.

Atualmente, as ações de API Amazon EC2 do Describe* não oferecem suporte a permissões em nível de recurso, portanto, não é possível restringir quais recursos individuais os usuários podem visualizar no assistente de execução. Contudo, é possível aplicar permissões em nível de recurso na ação de API ec2:RunInstances para restringir os recursos que os usuários podem usar para executar uma instância. Haverá falha na execução se os usuários selecionarem opções que não estão autorizados a usar.

Restringir o acesso a um tipo de instância, uma sub-rede e uma região específicos

A política a seguir permite que os usuários executem instâncias t2.micro usando AMIs de propriedade da Amazon e apenas em uma sub-rede específica (subnet-1a2b3c4d). Os usuários só podem executar na região sa-east-1. Se os usuários selecionarem outra região ou selecionarem outro tipo de instância, outra AMI ou outra sub-rede no assistente de execução, a execução falhará.

A primeira declaração concede aos usuários permissão para visualizar as opções no assistente de execução ou criar novas, conforme explicado no exemplo acima. A segunda declaração concede aos usuários permissão para usarem a interface de rede, o volume, o par de chaves, o grupo de segurança e os recursos de sub-rede para a ação ec2:RunInstances, que são necessários para executar uma instância em uma VPC. Para obter mais informações sobre como usar a ação ec2:RunInstances, consulte Executar instâncias (RunInstances). A terceira e a quarta declaração concedem aos usuários permissão para usarem a instância e os recursos das AMIs respectivamente, mas somente se a instância for uma instância t2.micro, e somente se a AMI for de propriedade da Amazon.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeImages", "ec2:DescribeInstanceTypes", "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 o acesso a parâmetros específicos do Systems Manager

A política a seguir concede acesso para usar parâmetros do Systems Manager com um nome específico.

A primeira instrução concede aos usuários permissão para visualizar parâmetros do Systems Manager ao selecionar uma AMI no assistente de inicialização. A segunda instrução concede aos usuários a permissão para usar somente parâmetros denominados 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-*" } ] }

Exemplo: trabalhar com volumes

A política a seguir concede aos usuários permissão para visualizar e criar volumes, e para anexar e desanexar volumes em instâncias específicas.

Os usuários podem anexar um volume às instâncias que tenham a tag "purpose=test" e também desanexar volumes dessas instâncias. Para anexar um volume usando o console do Amazon EC2, é útil que os usuários tenham permissão para usar a ação ec2:DescribeInstances, pois isso permite que eles selecionem uma instância de uma lista pré-preenchida na caixa de diálogo Attach Volume (Anexar volume). No entanto, isso também permite que os usuários visualizem todas as instâncias na página Instances no console, portanto, é possível omitir essa ação.

Na primeira instrução, a ação ec2:DescribeAvailabilityZones é necessária para garantir que um usuário possa selecionar uma zona de disponibilidade ao criar um volume.

Os usuários não podem marcar os volumes que criam (durante ou após a criação do volume).

{ "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": { "aws:ResourceTag/purpose": "test" } } }, { "Effect": "Allow", "Action": [ "ec2:AttachVolume", "ec2:DetachVolume" ], "Resource": "arn:aws:ec2:region:111122223333:volume/*" } ] }

Exemplo: trabalhar com grupos de segurança

Visualizar grupos de segurança e adicionar e remover regras

A política a seguir concede aos usuários permissão para visualizar grupos de segurança no console do Amazon EC2, adicionar e remover regras de entrada e de saída, bem como listar e modificar descrições de regras de grupo de segurança existentes que têm a etiqueta Department=Test.

Na primeira declaração, a ação ec2:DescribeTags permite que os usuários visualizem tags no console, o que facilita a identificação dos grupos de segurança que eles têm permissão para modificar.

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

Trabalhar com a caixa de diálogo Create Security Group (Criar grupo de segurança)

É possível criar uma política que permita que os usuários trabalhem com a caixa de diálogo Create Security Group (Criar grupo de segurança) no console do Amazon EC2. Para usar essa caixa de diálogo, os usuários devem receber a permissão para usar pelo menos as seguintes ações de API:

  • ec2:CreateSecurityGroup: para criar um novo grupo de segurança.

  • ec2:DescribeVpcs: para visualizar uma lista de VPCs existentes na lista VPC.

Com essas permissões, os usuários podem criar um novo grupo de segurança com êxito, mas não podem adicionar nenhuma regra a ele. Para trabalhar com regras na caixa de diálogo Create Security Group (Criar grupo de segurança), é possível adicionar as seguintes ações de API à sua política:

  • ec2:AuthorizeSecurityGroupIngress: para adicionar regras de entrada.

  • ec2:AuthorizeSecurityGroupEgress: para adicionar regras de saída aos grupos de segurança da VPC.

  • ec2:RevokeSecurityGroupIngress: para modificar ou excluir regras de entrada existentes. Isso é útil para permitir que os usuários usem o recurso Copy to new no console. Esse recurso abre a caixa de diálogo Create Security Group (Criar grupo de segurança) e preenche-a com as mesmas regras do security group que foi selecionado.

  • ec2:RevokeSecurityGroupEgress: para modificar ou excluir regras de saída de grupos de segurança da VPC. Isso é útil para permitir que os usuários modifiquem ou excluam a regra de saída padrão que permite todo o tráfego de saída.

  • ec2:DeleteSecurityGroup: para prover quando regras inválidas não podem ser salvas. O console primeiro cria o grupo de segurança e, em seguida, adiciona as regras especificadas. Se as regras forem inválidas, a ação falhará, e o console tentará excluir o grupo de segurança. O usuário permanece na caixa de diálogo Create Security Group (Criar grupo de segurança) para que possa corrigir a regra inválida e tentar criar o security group novamente. Essa ação de API não é necessária, mas se um usuário não receber permissão para usá-la e tentar criar um grupo de segurança com regras inválidas, o grupo de segurança será criado sem nenhuma regra, e o usuário deverá adicioná-las posteriormente.

  • ec2:UpdateSecurityGroupRuleDescriptionsIngress: para adicionar ou atualizar descrições de regras de grupo de segurança de entrada (inbound).

  • ec2:UpdateSecurityGroupRuleDescriptionsEgress: para adicionar ou atualizar descrições de regras de grupo de segurança de saída (outbound).

  • ec2:ModifySecurityGroupRules: para modificar as regras do grupo de segurança.

  • ec2:DescribeSecurityGroupRules: para listar as regras do grupo de segurança.

A política a seguir concede aos usuários permissão para usar a caixa de diálogo Create Security Group (Criar grupo de segurança) e criar regras de entrada e de saída para grupos de segurança associados a uma VPC específica (vpc-1a2b3c4d). Os usuários podem criar grupos de segurança para o EC2-Classic ou outra VPC, mas não podem adicionar nenhuma regra a eles. Da mesma forma, os usuários não podem adicionar nenhuma regra aos grupos de segurança existentes não associados à VPC vpc-1a2b3c4d. Os usuários também recebem permissão para visualizar todos os grupos de segurança no console. Isso facilita aos usuários identificar os grupos de segurança aos quais podem adicionar regras de entrada. Essa política também concede permissão aos usuários para excluir grupos de segurança associados à 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" } } } ] }

Exemplo: trabalhar com endereços IP elásticos

Para permitir que os usuários visualizem endereços IP elásticos no console do Amazon EC2, conceda aos usuários permissão para usar a ação ec2:DescribeAddresses.

Para permitir que os usuários trabalhem com endereços IP elásticos, é possível adicionar as seguintes ações à política.

  • ec2:AllocateAddress: para alocar um endereço IP elástico.

  • ec2:ReleaseAddress: para liberar um endereço IP elástico.

  • ec2:AssociateAddress: para associar um endereço IP elástico a uma instância ou a uma interface de rede.

  • ec2:DescribeNetworkInterfaces e ec2:DescribeInstances: para trabalhar com a tela Associate address. A tela exibe as instâncias disponíveis ou as interfaces de rede para que você possa associar um endereço IP elástico.

  • ec2:DisassociateAddress: para desassociar um endereço IP elástico de uma instância ou de uma interface de rede.

As políticas a seguir permitem que os usuários visualizem, aloquem e associem endereços IP elásticos a instâncias. Os usuários não podem associar endereços IP elásticos a interfaces de rede, desassociar endereços IP elásticos ou liberá-los.

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

Exemplo: trabalhar com Instâncias reservadas

A política a seguir pode ser anexada a um usuário do IAM. Ela dá ao usuário acesso para visualizar e modificar instâncias reservadas em sua conta, bem como para adquirir novas instâncias reservadas no AWS Management Console.

Esta política permite que os usuários visualizem todas as Instâncias reservadas, bem como Instâncias on-demand, na conta. Não é possível definir permissões em nível de recurso para Instâncias reservadas individuais.

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

A ação ec2:DescribeAvailabilityZones é necessária para garantir que o console do Amazon EC2 possa exibir informações sobre as zonas de disponibilidade nas quais é possível comprar Instâncias reservadas. A ação ec2:DescribeInstances não é necessária, mas garante que o usuário possa visualizar as instâncias na conta e comprar reservas para atender às especificações corretas.

É possível ajustar as ações de API para limitar o acesso do usuário, por exemplo, a remoção de ec2:DescribeInstances e de ec2:DescribeAvailabilityZones significa que o usuário tem acesso somente leitura.