Uso de etiquetas para controlar el acceso a los recursos API de REST de API Gateway
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. 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 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
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
.
{ "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
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
.
{ "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
La siguiente política de ejemplo permite a un usuario realizar todas las acciones de API Gateway, excepto cambiar las etiquetas.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "apigateway:*" ], "Resource": [ "*" ], }, { "Effect": "Deny", "Action": [ "apigateway:*" ], "Resource": "arn:aws:apigateway:*::/tags*", } ] }
Permitir operaciones de etiquetado
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.
{ "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:*::*", ] } ] }