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 de entidades 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 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 son otro elemento que se deben considerar, ya que se pueden adjuntar al recurso o pasarse en la solicitud a servicios que admitan 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 utilizando 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 a fin de especificar qué pares de clave-valor de etiqueta se pueden aprobar en una solicitud para etiquetar un recurso de AWS.

  • Cualquier parte del proceso de autorización: utilice la clave de condición aws:TagKeys para controlar si claves de etiqueta específicas pueden estar 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.

nota

Algunos servicios permiten que los usuarios especifiquen etiquetas cuando crean el recurso si tienen permisos para utilizar la acción que crea el recurso.

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.

aviso

No intente controlar quién puede pasar un rol etiquetando el rol y, a continuación, utilizando la clave de condición ResourceTag en una política con la acción iam:PassRole. Este planteamiento no da resultados fiables. 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.

Este ejemplo muestra cómo podría crear una política basada en identidad 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.

En el siguiente ejemplo, se muestra cómo se puede crear una política basada en identidad que utilice la etiqueta principal team en el ARN del recurso. La política concede permiso para eliminar colas de Amazon Simple Queue Service, pero solo si el nombre de la cola comienza con el nombre del equipo seguido de -queue. Por ejemplo, qa-queue si qa es el nombre del equipo para la etiqueta principal team.

{ "Version": "2012-10-17", "Statement": { "Sid": "AllQueueActions", "Effect": "Allow", "Action": "sqs:DeleteQueue", "Resource": "arn:aws:sqs:us-east-2::${aws:PrincipalTag/team}-queue" } }

Control del acceso durante solicitudes de AWS

Puede utilizar condiciones en sus políticas de IAM para controlar qué pares de clave y valor de etiqueta pueden incluirse en una solicitud que aplica etiquetas a un recurso de AWS.

Este ejemplo muestra cómo podría crear una política basada en identidad que permite utilizar la acción CreateTags de Amazon EC2 para asociar etiquetas a una instancia. Solo puede asociar etiquetas si la etiqueta contiene la clave environment y los valores production o preprod. 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, utilizar 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 una solicitud.

Le recomendamos que cuando utilice políticas para controlar el acceso mediante etiquetas, utilice la clave de condiciónaws:TagKeys. Puede que los servicios de AWS que admiten etiquetas le permitan crear varios nombres de clave de etiqueta que se diferencien únicamente por el uso de 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, o bien utilice políticas de etiquetas, disponibles con AWS Organizations. Para obtener más información, consulte Políticas de etiquetas en la Guía del usuario de Organizations.

Este ejemplo muestra cómo se puede crear una política basada en identidad que permita crear y etiquetar un secreto de Secrets Manager, pero solo con las claves de etiqueta environment o cost-center. La condición Null garantiza que la condición se evalúe como false si no hay etiquetas en la solicitud.

{ "Effect": "Allow", "Action": [ "secretsmanager:CreateSecret", "secretsmanager:TagResource" ], "Resource": "*", "Condition": { "Null": { "aws:TagKeys": "false" }, "ForAllValues:StringEquals": { "aws:TagKeys": [ "environment", "cost-center" ] } } }