Saltar al contenido

¿Cómo puedo restringir el acceso de las identidades de IAM a recursos específicos de Amazon EC2?

4 minutos de lectura
0

Quiero restringir el acceso de las identidades de AWS Identity and Access Management (IAM) a un recurso específico de Amazon Elastic Compute Cloud (Amazon EC2).

Descripción corta

Amazon EC2 admite parcialmente los permisos o condiciones de nivel de recursos. Puedes usar permisos a nivel de recursos para controlar cómo se permite a las identidades de IAM acceder a recursos específicos de Amazon EC2.

También puedes usar ABAC (autorización basada en etiquetas) para controlar el acceso a los recursos de AWS. Para obtener más información, consulta Tutorial de IAM: definición de permisos para acceder a los recursos de AWS en función de etiquetas.

Resolución

Utiliza el siguiente ejemplo de políticas de IAM para restringir el acceso a las instancias de Amazon EC2 en tu caso de uso. A continuación, adjunta la política a la identidad de IAM a la que deseas restringir el acceso.

Restringir el acceso solo a instancias de inicio, parada o reinicio

El siguiente ejemplo de política restringe el acceso a una identidad de IAM solo para iniciar, detener o reiniciar instancias EC2:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:Describe*",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:StartInstances",
                "ec2:StopInstances",
                "ec2:RebootInstances"
            ],
            "Resource": [
                "arn:aws:ec2:*:AccountId:instance/*"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/Owner": "Bob"
                }
            }
        }
    ]
}

Nota: Sustituye Propietario por la clave de la etiqueta, Bob por el valor de la etiqueta y AccountId por el ID de tu cuenta de AWS.

Para restringir otros recursos de Amazon EC2 por región de AWS, asegúrate de que las acciones admitan los permisos y las condiciones a nivel de recursos.

Restringir el inicio de instancias de EC2 por etiqueta

El siguiente ejemplo de política utiliza la clave de etiqueta Propietario para restringir el acceso a una identidad de IAM solo para iniciar instancias de EC2:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:*:AccountId:instance/*"
            ],
            "Condition": {
                "StringNotLike": {
                    "aws:RequestTag/Owner": "*"
                }
            }
        },
        {
            "Sid": "AllowRunInstances",
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": [
                "arn:aws:ec2:*::image/*",
                "arn:aws:ec2:*::snapshot/*",
                "arn:aws:ec2:*:*:subnet/*",
                "arn:aws:ec2:*:*:network-interface/*",
                "arn:aws:ec2:*:*:security-group/*",
                "arn:aws:ec2:*:*:key-pair/*",
                "arn:aws:ec2:*:*:instance/*",
                "arn:aws:ec2:*:*:volume/*"
            ]
        },
        {
            "Sid": "AllowToDescribeAll",
            "Effect": "Allow",
            "Action": [
                "ec2:Describe*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowCreateTagsOnLaunching",
            "Effect": "Allow",
            "Action": [
                "ec2:CreateTags"
            ],
            "Resource": [
                "arn:aws:ec2:*:AccountId:*/*"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:CreateAction": [
                        "RunInstances"
                    ]
                }
            }
        }
    ]
}

Nota: Sustituye Propietario por la clave de la etiqueta y AccountId por el ID de tu cuenta.

Restringir el inicio de instancias de EC2 por tipo de instancia

El siguiente ejemplo de política restringe el acceso a una identidad de IAM solo para iniciar instancias de EC2 con el tipo de instancia t3.*:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:*:AccountId:instance/*"
            ],
            "Condition": {
                "StringNotLike": {
                    "ec2:InstanceType": "t3.*"
                }
            }
        },
        {
            "Sid": "AllowRunInstances",
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": [
                "arn:aws:ec2:*::image/*",
                "arn:aws:ec2:*::snapshot/*",
                "arn:aws:ec2:*:*:subnet/*",
                "arn:aws:ec2:*:*:network-interface/*",
                "arn:aws:ec2:*:*:security-group/*",
                "arn:aws:ec2:*:*:key-pair/*",
                "arn:aws:ec2:*:*:instance/*",
                "arn:aws:ec2:*:*:volume/*"
            ]
        },
        {
            "Sid": "AllowToDescribeAll",
            "Effect": "Allow",
            "Action": [
                "ec2:Describe*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowCreateTagsOnLaunching",
            "Effect": "Allow",
            "Action": [
                "ec2:CreateTags"
            ],
            "Resource": [
                "arn:aws:ec2:*:AccountId:*/*"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:CreateAction": [
                        "RunInstances"
                    ]
                }
            }
        }
    ]
}

Nota: Sustituye el tipo de instancia t3.* por tu tipo de instancia, por ejemplo, t3.nano. Además, reemplaza AccountId por el ID de tu cuenta.

Para obtener más información, consulta las convenciones de nomenclatura de los tipos de instancias de Amazon EC2.

Información relacionada

¿Cómo puedo crear una política de IAM para controlar el acceso a los recursos de Amazon EC2 mediante etiquetas?

¿Cómo puedo usar las etiquetas de políticas de IAM para restringir la forma en que se puede crear y acceder a una instancia de EC2 o un volumen de EBS?

Políticas basadas en identidad para Amazon EC2