Como posso criar uma política do IAM para conceder explicitamente permissões a um usuário, grupo ou perfil do IAM para criar e gerenciar instâncias do EC2 em uma VPC especificada usando tags?

5 minuto de leitura
0

Como posso criar uma política de gerenciamento de identidade e acesso (IAM) da AWS que conceda explicitamente a um usuário, grupo ou perfil do IAM permissões para criar e gerenciar instâncias do Amazon Elastic Compute Cloud (Amazon EC2) em uma VPC especificada? A política deve limitar as permissões para que a entidade do IAM possa criar instâncias do EC2 com tags específicas e gerenciar essas instâncias do EC2 em uma VPC usando essas tags.

Breve descrição

O Amazon EC2 fornece permissões limitadas em nível de recurso com suporte, mas há várias ações, recursos e condições a serem considerados. Certas ações da API do Amazon EC2, como o lançamento de uma instância do EC2, podem ser controladas por meio do VPC ARN usando tags para controlar as instâncias.

Resolução

Aplique uma política personalizada do IAM para restringir as permissões de um usuário, grupo ou perfil do IAM para criar instâncias do EC2 em uma VPC especificada com tags. Use a condição de política “ec2:ResourceTags” para limitar o controle às instâncias. Essa política concede permissões para iniciar instâncias do EC2 em uma VPC designada com uma tag exclusiva. Em seguida, você pode gerenciar essas instâncias do EC2 usando tags restritivas.

Crie uma política gerenciada para aplicar às entidades do IAM que iniciam suas instâncias

1.    Abra o console do IAM, escolha Políticas e, em seguida, escolha Criar política.

2.    Escolha a guia JSON e, em seguida, insira esta política personalizada:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "GrantIAMPassRoleOnlyForEC2",
      "Action": [
        "iam:PassRole"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:iam::ACCOUNTNUMBER:role/ROLENAME",
        "arn:aws:iam::ACCOUNTNUMBER:role/ROLENAME"
      ],
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": "ec2.amazonaws.com"
        }
      }
    },
    {
      "Sid": "ReadOnlyEC2WithNonResource",
      "Action": [
        "ec2:Describe*",
        "iam:ListInstanceProfiles"
      ],
      "Effect": "Allow",
      "Resource": "*"
    },
    {
      "Sid": "ModifyingEC2WithNonResource",
      "Action": [
        "ec2:CreateKeyPair",
        "ec2:CreateSecurityGroup"
      ],
      "Effect": "Allow",
      "Resource": "*"
    },
    {
      "Sid": "RunInstancesWithTagRestrictions",
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [
        "arn:aws:ec2:REGION:ACCOUNTNUMBER:instance/*",
        "arn:aws:ec2:REGION:ACCOUNTNUMBER:volume/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/TAG-KEY": "TAG-VALUE"
        }
      }
    },
    {
      "Sid": "RemainingRunInstancePermissionsNonResource",
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [
        "arn:aws:ec2:REGION::image/*",
        "arn:aws:ec2:REGION::snapshot/*",
        "arn:aws:ec2:REGION:ACCOUNTNUMBER*:network-interface/*",
        "arn:aws:ec2:REGION:ACCOUNTNUMBER*:key-pair/*",
        "arn:aws:ec2:REGION:ACCOUNTNUMBER*:security-group/*"
      ]
    },
    {
      "Sid": "EC2RunInstancesVpcSubnet",
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": "arn:aws:ec2:REGION:ACCOUNTNUMBER:subnet/*",
      "Condition": {
        "StringEquals": {
          "ec2:Vpc": "arn:aws:ec2:REGION:ACCOUNTNUMBER:vpc/VPC-ID"
        }
      }
    },
    {
      "Sid": "EC2VpcNonResourceSpecificActions",
      "Effect": "Allow",
      "Action": [
        "ec2:DeleteNetworkAcl",
        "ec2:DeleteNetworkAclEntry",
        "ec2:DeleteRoute",
        "ec2:DeleteRouteTable",
        "ec2:AuthorizeSecurityGroupEgress",
        "ec2:AuthorizeSecurityGroupIngress",
        "ec2:RevokeSecurityGroupEgress",
        "ec2:RevokeSecurityGroupIngress",
        "ec2:DeleteSecurityGroup",
        "ec2:CreateNetworkInterfacePermission",
        "ec2:CreateRoute",
        "ec2:UpdateSecurityGroupRuleDescriptionsEgress",
        "ec2:UpdateSecurityGroupRuleDescriptionsIngress"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "ec2:Vpc": "arn:aws:ec2:REGION:ACCOUNTNUMBER:vpc/VPC-ID"
        }
      }
    },
    {
      "Sid": "AllowInstanceActionsTagBased",
      "Effect": "Allow",
      "Action": [
        "ec2:RebootInstances",
        "ec2:StopInstances",
        "ec2:TerminateInstances",
        "ec2:StartInstances",
        "ec2:AttachVolume",
        "ec2:DetachVolume",
        "ec2:AssociateIamInstanceProfile",
        "ec2:DisassociateIamInstanceProfile",
        "ec2:GetConsoleScreenshot",
        "ec2:ReplaceIamInstanceProfileAssociation"
      ],
      "Resource": [
        "arn:aws:ec2:REGION:ACCOUNTNUMBER:instance/*",
        "arn:aws:ec2:REGION:ACCOUNTNUMBER:volume/*"
      ],
      "Condition": {
        "StringEquals": {
          "ec2:ResourceTag/TAG-KEY": "TAG-VALUE"
        }
      }
    },
    {
      "Sid": "AllowCreateTagsOnlyLaunching",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateTags"
      ],
      "Resource": [
        "arn:aws:ec2:REGION:ACCOUNTNUMBER:instance/*",
        "arn:aws:ec2:REGION:ACCOUNTNUMBER:volume/*"
      ],
      "Condition": {
        "StringEquals": {
          "ec2:CreateAction": "RunInstances"
        }
      }
    }
  ]
}

3.    Substitua os parâmetros ACCOUNTNUMBER, REGION, TAG-KEY, TAG-VALUE, VPC-ID e ROLENAME por valores do seu ambiente.

4.    (Opcional) Se você estiver atribuindo essa política somente a usuários ou grupos do IAM, poderá substituir os parâmetros TAG-KEY ou TAG-VALUE pela variável de política do IAM $ {aws:username}. Essa variável de política permite que o serviço do IAM preencha previamente esses parâmetros com o nome amigável do usuário chamador do IAM. Essa etapa permite que os usuários do IAM iniciem uma instância somente na VPC especificada e permite que os usuários do IAM controlem suas próprias instâncias.

5.    Escolha Revisar política e, para Nome, insira um nome. Por exemplo, insira “VPC_Lockdown_VPC-ID”, onde “VPC-ID” é a ID da VPC à qual você está aplicando essa política.

6.    Escolha Criar política.

Observação: Alguns itens devem ser substituídos por recursos específicos do seu ambiente. Para obter mais informações, consulte Amazon Resource Names (ARNs).

Anexar a política a um usuário, grupo ou perfil

1.    No painel de navegação console do IAM, escolha Usuários, Grupos ou Perfis.

2.    Escolha o usuário, grupo ou perfil ao qual você está anexando a política.

3.    Escolha Anexar políticas.

4.    Insira o nome da política que você criou na caixa de pesquisa e, em seguida, escolha sua política. Por exemplo, insira “VPC_Lockdown_VPC-ID”.

5.    Escolha Anexar política.

Uma entidade do IAM com essa política personalizada anexada pode fazer login no AWS Management Console, abrir o painel do Amazon EC2 e, em seguida, iniciar uma instância do EC2 após especificar a sub-rede, a VPC e a tag.

Essa política restringe as seguintes ações usando a condição de política “ec2:ResourceTags”:

  • Iniciar a instância
  • Interromper a instância
  • Reinicializar a instância
  • Encerrar a instância
  • Anexar um volume à instância
  • Separar um volume da instância
  • Desassociar o perfil da instância do IAM da instância
  • Substituir a associação do perfil da instância IAM pela instância
  • Obter uma captura de tela da instância no console

Essa política restringe as seguintes ações contra a VPC especificada:

  • Excluir grupos de segurança
  • Criar e excluir rotas
  • Excluir tabelas de rotas
  • Excluir ACLs de rede
  • Excluir entradas de ACL
  • Autorizar ou revogar regras de entrada e saída do grupo de segurança
  • Criar permissões de interface de rede
  • Atualizar a descrição do grupo de segurança para regras de entrada e saída

AWS OFICIAL
AWS OFICIALAtualizada há 3 anos