Control de acceso a los recursos de AWS mediante etiquetas - AWS Identity and Access Management

Control de acceso a los recursos de AWS mediante etiquetas

Puede utilizar etiquetas para controlar el acceso a los recursos de AWS que admiten el etiquetado, incluidos los recursos de IAM. Puede etiquetar usuarios y roles de IAM para controlar a qué pueden tener acceso. Para obtener información sobre cómo etiquetar usuarios y roles de IAM, consulte Etiquetado de recursos de IAM. Además, puede controlar el acceso a los siguientes recursos de IAM: políticas administradas por el cliente, proveedores de identidad de IAM, perfiles de instancia, certificados de servidor y dispositivos MFA virtuales. Para ver un tutorial sobre cómo crear y probar una política que permita a los roles de IAM con etiquetas principales obtener acceso a los recursos con etiquetas coincidentes, consulte Tutorial de IAM: definición de permisos para acceder a los recursos de AWS en función de etiquetas. Utilice la información de la siguiente sección para controlar el acceso a otros recursos de AWS, incluidos los recursos de IAM, sin etiquetar usuarios o roles de IAM.

Para utilizar etiquetas para controlar el acceso a sus recursos de AWS, debe entender cómo AWS otorga el acceso. AWS se compone de colecciones de recursos. Una instancia de Amazon EC2 es un recurso. Un bucket de Amazon S3 es un recurso. Puede utilizar la API de AWS, la AWS CLI o la AWS Management Console para realizar una operación, como crear un bucket en Amazon S3. Cuando lo haga, envíe una solicitud para dicha operación. La solicitud especifica una acción, un recurso, una entidad principal (usuario o rol), una cuenta principal y toda la información de la solicitud necesaria. Toda esta información proporciona el contexto.

AWS comprueba entonces que usted (la entidad principal) se ha autenticado (ha iniciado sesión) y está autorizado (tiene permiso) para realizar la acción especificada en el recurso especificado. Durante la autorización, AWS comprueba todas las políticas aplicables al contexto de la solicitud. La mayoría de las políticas se almacenan en AWS como documentos JSON y especifican los permisos de las entidades principales. Para obtener más información sobre los tipos de políticas y sus usos, consulte Políticas y permisos en IAM.

AWS autoriza la solicitud únicamente si cada parte de la solicitud está permitida por las políticas. Para ver un diagrama y obtener más información sobre la infraestructura de IAM, consulte Entender cómo funciona IAM. Para obtener información detallada acerca de cómo IAM determina si una solicitud está permitida, consulte Lógica de evaluación de políticas.

Las etiquetas pueden complicar este proceso, ya que se pueden adjuntar al recurso o pasarse dentro de la solicitud a los servicios que admiten etiquetado. Para controlar el acceso según las etiquetas, debe proporcionar información de las etiquetas en el elemento de condición de una política. Para saber si un servicio de AWS admite el acceso de control usando etiquetas, consulte Servicios de AWS que funcionan con IAM y busque los servicios que tengan en la columna Autorización basada en etiquetas. Elija el nombre del servicio para ver la documentación sobre la autorización y el control de acceso para dicho servicio.

A continuación, puede crear una política de IAM que permita o deniegue el acceso a un recurso en función de la etiqueta de dicho recurso. En dicha política, puede utilizar las claves de condición de etiqueta para controlar el acceso a cualquiera de las siguientes operaciones:

  • Recurso – Controla el acceso a los recursos de servicio de AWS basado en las etiquetas de esos recursos. Para ello, utilice la clave de condición ResourceTag/nombre-clave para determinar si se permite o no el acceso al recurso en función de las etiquetas adjuntas al recurso.

  • Solicitud – Controla las etiquetas que se pueden pasar en una solicitud. Para ello, utilice la clave de condición aws:RequestTag/nombre-clave para especificar qué pares de clave-valor de etiqueta se pueden pasar en una solicitud que etiqueta o elimina la etiqueta de un recurso de AWS.

  • Cualquier parte del proceso de autorización – Utilice la clave de condición aws:TagKeys para controlar si se pueden utilizar claves de etiqueta específicas en un recurso o en una solicitud.

Puede crear visualmente una política de IAM utilizando JSON o importando una política administrada existente. Para obtener más información, consulte Crear políticas de IAM.

Control del acceso a los recursos de AWS

Puede utilizar las condiciones de sus políticas de IAM para controlar el acceso a los recursos de AWS en función de las etiquetas de ese recurso. Puede hacerlo a través de la clave de condición global aws:ResourceTag/tag-key o de una clave específica del servicio. Algunos servicios solo admiten la versión específica del servicio de esta clave y no la versión global.

nota

No utilice la clave de condición de ResourceTag en una política con la acción iam:PassRole. No puede utilizar la etiqueta en un rol de IAM para controlar el acceso a quién puede pasar ese rol. Para obtener más información acerca de los permisos necesarios para transferir una función a un servicio, consulte Concesión de permisos a un usuario para transferir un rol a un servicio de AWS.

En este ejemplo se muestra cómo puede crear una política de IAM que permita iniciar o detener instancias de Amazon EC2. Estas operaciones solo se permiten si la etiqueta de instancia Owner tiene el valor del nombre de dicho usuario. Esta política define los permisos para el acceso programático y a la consola.

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

También puede asociar esta política al usuario de IAM en su cuenta. Si un usuario llamado richard-roe intenta iniciar una instancia de Amazon EC2, la instancia debe tener una etiqueta Owner=richard-roe o owner=richard-roe. De lo contrario, se le denegará el acceso. La clave de la etiqueta Owner coincide con los nombres de las claves de condición Owner y owner porque no distinguen entre mayúsculas y minúsculas. Para obtener más información, consulte Elementos de política JSON de IAM: Condition.

Control del acceso durante solicitudes de AWS

Puede utilizar condiciones en sus políticas de IAM para controlar qué pares de clave-valor de etiqueta se pueden pasar en una solicitud que etiquete un recurso de AWS.

En este ejemplo se muestra cómo crear una política de IAM que permita a utilizar la acción CreateTags de Amazon EC2 para adjuntar etiquetas a una instancia. Solo puede asociar etiquetas si la etiqueta contiene la clave environment y los valores preprod o production. Si lo desea, puede utilizar el modificador ForAllValues con la clave de condición aws:TagKeys para indicar que solo se permite la clave environment en la solicitud. Esto impide a los usuarios que incluyan otras claves, por ejemplo, usar accidentalmente Environment en lugar de environment.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringEquals": { "aws:RequestTag/environment": [ "preprod", "production" ] }, "ForAllValues:StringEquals": {"aws:TagKeys": "environment"} } } }

Control del acceso en función de las claves de etiqueta

Puede utilizar una condición en sus políticas de IAM para controlar si se pueden utilizar claves de etiqueta específicas en un recurso o en una solicitud.

La práctica recomendada es que utilice políticas para controlar el acceso mediante etiquetas, utilice la clave de condición aws:TagKeys. Puede que los servicios de AWS que admiten etiquetas le permitan crear varios nombres de clave de etiqueta que se diferencien únicamente por las mayúsculas y minúsculas, como puede ser el etiquetado de una instancia de Amazon EC2 con stack=production y Stack=test. Los nombres de claves no distinguen entre mayúsculas y minúsculas en las condiciones de políticas. Esto significa que si especifica "aws:ResourceTag/TagKey1": "Value1" en el elemento de condición de su política, la condición coincidirá con una clave de etiqueta de recurso denominada TagKey1 o tagkey1, pero no con ambas. Para evitar etiquetas duplicadas con una clave que varía únicamente por las mayúsculas y minúsculas, utilice la condición aws:TagKeys para definir las claves de etiqueta que los usuarios pueden aplicar.

En este ejemplo se muestra cómo crear una política de IAM que permita crear y etiquetar un secreto de Secrets Manager, pero solo con las claves de etiqueta environment o cost-center.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "secretsmanager:CreateSecret", "secretsmanager:TagResource" ], "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": [ "environment", "cost-center" ] } } } }