¿Cómo puedo crear una política de IAM para conceder explícitamente permisos a un usuario, grupo o rol de IAM de modo que pueda crear y administrar instancias de EC2 en una VPC específica mediante etiquetas?

5 minutos de lectura
0

¿Cómo puedo crear una política de AWS Identity and Access Management (IAM) que otorgue de forma explícita a un usuario, grupo o rol de IAM permisos para crear y administrar instancias de Amazon Elastic Compute Cloud (Amazon EC2) en una VPC específica? La política debe limitar los permisos para que la entidad de IAM pueda crear instancias de EC2 con etiquetas específicas y administrar esas instancias de EC2 en una VPC mediante esas etiquetas.

Breve descripción

Amazon EC2 proporciona permisos admitidos limitados de los recursos, pero hay varios recursos, acciones y condiciones que se deben tener en cuenta. Algunas acciones de la API de Amazon EC2, como el lanzamiento de una instancia de EC2, se pueden controlar mediante el ARN de la VPC con etiquetas para controlar las instancias.

Solución

Aplique una política de IAM personalizada con el fin de restringir los permisos de un usuario, grupo o rol de IAM para crear instancias de EC2 en una VPC específica con etiquetas. Utilice la condición de política «ec2:ResourceTags» para limitar el control a las instancias. Esta política otorga permisos para lanzar instancias de EC2 en una VPC designada con una etiqueta única. A continuación, puede administrar esas instancias de EC2 mediante etiquetas restrictivas.

Creación de una política administrada para aplicarla a las entidades de IAM que lanzan sus instancias

1.    Abra la consola de IAM, elija Políticas y, a continuación, seleccione Crear política.

2.    Seleccione la pestaña JSON y, luego, introduzca 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.    Sustituya los parámetros ACCOUNTNUMBER, REGION, TAG-KEY, TAG-VALUE, VPC-ID y ROLENAME por valores de su entorno.

4.    (Opcional) Si asigna esta política únicamente a usuarios o grupos de IAM, puede sustituir los parámetros TAG-KEY o TAG-VALUE con la variable de política de IAM ${aws:username}. Esta variable de política permite al servicio de IAM rellenar previamente estos parámetros con el nombre intuitivo del usuario de IAM que llama. Este paso permite a los usuarios de IAM lanzar una instancia únicamente en la VPC especificada y controlar sus propias instancias.

5.    Elija Revisar la política y luego introduzca un valor en Nombre. Por ejemplo, introduzca «VPC_Lockdown_VPC-ID», siendo «VPC-ID» el ID de la VPC a la que está aplicando la política.

6.    Elija Crear política.

Nota: Algunos elementos se deben sustituir por recursos específicos de su entorno. Para obtener más información, consulte Nombres de recursos de Amazon (ARN).

Asociación de una política a un usuario, grupo o rol

1.    En el panel de navegación de la consola de IAM, elija Usuarios, Grupos o Roles.

2.    Elija el usuario, grupo o rol al que va a asociar la política.

3.    Elija Asociar políticas.

4.    Introduzca el nombre de la política que creó en el cuadro de búsqueda y luego elija su política. Por ejemplo, introduzca «VPC_Lockdown_VPC-ID».

5.    Elija Asociar política.

Una entidad de IAM con esta política personalizada asociada puede iniciar sesión en la consola de administración de AWS, abrir el panel de Amazon EC2 y, a continuación, lanzar una instancia de EC2 después de especificar la subred, la VPC y la etiqueta.

Esta política restringe las siguientes acciones mediante la condición de política «ec2:ResourceTags»:

  • Iniciar la instancia
  • Detener la instancia
  • Reiniciar la instancia
  • Terminar la instancia
  • Asociar un volumen a la instancia
  • Separar un volumen de la instancia
  • Desasociar el perfil de instancia de IAM de la instancia
  • Sustituir la asociación de perfiles de instancia de IAM para la instancia
  • Obtener una captura de pantalla de la instancia en la consola

Esta política restringe las siguientes acciones en el caso de la VPC especificada:

  • Eliminar grupos de seguridad
  • Crear y eliminar rutas
  • Eliminar tablas de rutas
  • Eliminar ACL de red
  • Eliminar entradas de ACL
  • Autorizar o revocar reglas de entrada y salida del grupo de seguridad
  • Crear permisos de interfaz de red
  • Actualizar la descripción del grupo de seguridad para las reglas de entrada y salida

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años