使用标签控制对 API Gateway 资源的访问 - Amazon API Gateway
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用标签控制对 API Gateway 资源的访问

Amazon Identity and Access Management 策略中的条件是所需语法的一部分,您可以使用它们指定对 API Gateway 资源的权限。有关指定 IAM 策略的详情,请参阅使用 IAM 权限控制对 API 的访问。在 API Gateway 中,资源可以具有标签,而且某些操作可以包括标签。在创建 IAM 策略时,您可以使用标签条件键来控制:

  • 哪些用户可以基于资源已有的标签对 API Gateway 资源执行操作。

  • 哪些标签可以在操作的请求中传递。

  • 是否特定标签键可在请求中使用。

通过将标签用于基于属性的访问控制,可以实现比 API 级别控制更精细的控制以及比基于资源的访问控制更动态的控制。可以创建 IAM 策略,以允许或拒绝根据请求中提供的标签(请求标签)或正在操作的资源的标签(资源标签)执行操作。一般而言,资源标签用于已经存在的资源。请求标签适用于您创建新资源时。

有关标签条件键的完整请求和语义,请参阅 IAM 用户指南中的使用标签控制访问

以下示例演示如何为 API Gateway 用户指定策略中的标签条件。

示例 1:基于资源标签限制操作

以下示例策略向用户授予对所有资源执行 GET 操作的权限。此外,如果某个资源具有名为 iamrole 且值为 readWrite 的标签,该策略将向用户授予对资源执行所有操作的权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "apigateway:GET", "Resource": "*" }, { "Effect": "Allow", "Action": "apigateway:*", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/iamrole": "readWrite" } } } ] }

示例 2:基于请求中的标签限制操作

以下示例策略指定:

  • 当用户创建新阶段时,创建阶段的请求必须包含名为 stage 的标签。

  • stage 标记的值必须为 betagammaprod。否则,创建阶段的请求将被拒绝。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "apigateway:*" ], "Resource": [ "*" ] }, { "Effect": "Deny", "Action": "apigateway:POST", "Resource": "arn:aws:apigateway:*::/restapis/*/stages", "Condition": { "Null": { "aws:RequestTag/stage": "true" } } }, { "Effect": "Deny", "Action": "apigateway:POST", "Resource": "arn:aws:apigateway:*::/restapis/*/stages", "Condition": { "StringNotEquals": { "aws:RequestTag/stage": [ "beta", "gamma", "prod" ] } } } ] }

示例 3:基于资源标签拒绝操作

以下示例策略允许用户在默认情况下针对 API Gateway 资源执行所有操作。如果资源具有名为 stage 且值为 prod 的标签,则会拒绝用户对此资源执行修改(PATCHPUTPOST, DELETE)的权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "apigateway:*", "Resource": "*" }, { "Effect": "Deny", "Action": [ "apigateway:PATCH", "apigateway:PUT", "apigateway:POST", "apigateway:DELETE" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/stage": "prod" } } } ] }

示例 4:基于资源标签允许操作

以下示例策略允许用户在默认情况下针对所有 API Gateway 资源执行所有操作。如果资源具有名为 environment(其值为 prod)的标签,则不允许用户对资源执行任何操作。

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

示例 5:基于资源标签键允许操作

以下示例策略允许用户在默认情况下针对所有 API Gateway 资源执行所有操作。如果资源具有名为 prod 且具有任意值(包括空字符串)的标签,则不允许用户执行修改资源的操作。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "apigateway:*", "Resource": "*" }, { "Effect": "Deny", "Action": [ "apigateway:PATCH", "apigateway:PUT", "apigateway:POST", "apigateway:DELETE" ], "Resource": "*", "Condition": { "Null": { "aws:ResourceTag/prod": "false" } } } ] }