

# Uso de etiquetas para controlar el acceso a los recursos API de REST de API Gateway
<a name="apigateway-tagging-iam-policy"></a>

Las condiciones de las políticas de AWS Identity and Access Management forman parte de la sintaxis que se utiliza para especificar los permisos de los recursos de API Gateway. Para obtener más información sobre la especificación de políticas de IAM, consulte [Control del acceso a una API de REST con permisos de IAM](permissions.md). En API Gateway, los recursos pueden tener etiquetas, y algunas acciones pueden incluir etiquetas. Al crear una política de IAM, puede utilizar las claves de condición de etiqueta para controlar:
+ Qué usuarios pueden realizar acciones en un recurso de API Gateway, basándose en las etiquetas que ya tiene el recurso.
+ Qué etiquetas se pueden pasar en la solicitud de una acción.
+ Si se pueden utilizar claves de etiqueta específicas en una solicitud.

El uso del control de acceso basado en atributos puede permitir un control más preciso que el control a nivel de API, así como un control más dinámico que el control de acceso basado en recursos. Se pueden crear políticas de IAM que permitan o no una operación basada en las etiquetas que se proporcionan en la solicitud (etiquetas de solicitud) o en las etiquetas del recurso en el que se está operando (etiquetas de recurso). En general, las etiquetas de recursos corresponden a recursos que ya existen. Las etiquetas de solicitud corresponden al momento en que se crean nuevos recursos.

Para la sintaxis y semántica completas de las claves de condición de etiquetas, consulte [Control del acceso mediante etiquetas](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html) en la *Guía del usuario de IAM*.

Los siguientes ejemplos muestran cómo especificar condiciones de etiquetas en las políticas para los usuarios de API Gateway.

## Limitar acciones en función de etiquetas de recursos
<a name="apigateway-tagging-iam-policy-example-1"></a>

La siguiente política de ejemplo concede permiso a los usuarios para realizar todas las acciones en todos los recursos, siempre y cuando esos recursos no tengan la etiqueta `Environment` con un valor de `prod`.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "apigateway:*",
      "Resource": "*"
    },
    {
      "Effect": "Deny",
      "Action": [
        "apigateway:*"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Environment": "prod"
        }
      }
    }
  ]
}
```

------

## Permitir acciones en función de las etiquetas de recursos
<a name="apigateway-tagging-iam-policy-example-3"></a>

La siguiente política de ejemplo permite a los usuarios realizar todas las acciones en los recursos de API Gateway, siempre y cuando esos recursos tengan la etiqueta `Environment` con un valor de `Development`. La instrucción `Deny` impide que el usuario cambie el valor de la etiqueta `Environment`.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "ConditionallyAllow",
      "Effect": "Allow",
      "Action": [
        "apigateway:*"
      ],
      "Resource": [
        "arn:aws:apigateway:*::*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Environment": "Development"
        }
      }
    },
    {
      "Sid": "AllowTagging",
      "Effect": "Allow",
      "Action": [
        "apigateway:*"
      ],
      "Resource": [
        "arn:aws:apigateway:*::/tags/*"
      ]
    },
    {
      "Sid": "DenyChangingTag",
      "Effect": "Deny",
      "Action": [
        "apigateway:*"
      ],
      "Resource": [
        "arn:aws:apigateway:*::/tags/*"
      ],
      "Condition": {
        "ForAnyValue:StringEquals": {
          "aws:TagKeys": "Environment"
        }
      }
    }
  ]
}
```

------

## Denegar operaciones de etiquetado
<a name="deny-tagging"></a>

La siguiente política de ejemplo permite a un usuario realizar todas las acciones de API Gateway, excepto cambiar las etiquetas.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "apigateway:*"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Deny",
            "Action": [
                "apigateway:*"
            ],
            "Resource": "arn:aws:apigateway:*::/tags*"
        }
    ]
}
```

------

## Permitir operaciones de etiquetado
<a name="allow-tagging"></a>

La siguiente política de ejemplo permite a un usuario obtener todos los recursos de API Gateway y cambiar las etiquetas de esos recursos. Para obtener las etiquetas de un recurso, el usuario debe tener permisos `GET` para ese recurso. Para actualizar las etiquetas de un recurso, el usuario debe tener permisos `PATCH` para ese recurso.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "apigateway:GET",
                "apigateway:PUT",
                "apigateway:POST",
                "apigateway:DELETE"
            ],
            "Resource": [
                "arn:aws:apigateway:*::/tags/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "apigateway:GET",
                "apigateway:PATCH"
            ],
            "Resource": [
                "arn:aws:apigateway:*::*"
            ]
        }
    ]
}
```

------