AWS Transfer Family 基于标签的策略示例 - AWS Transfer Family

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWS Transfer Family 基于标签的策略示例

以下是如何根据标签控制 AWS Transfer Family 资源访问权限的示例。

使用标签控制对 AWS Transfer Family 资源的访问

IAM 策略中的条件是所需语法的一部分,您可以使用它们指定对 AWS Transfer Family 资源的权限。您可以根据这些 AWS Transfer Family 资源的标签来控制对这些资源(例如用户、服务器、角色和其他实体)的访问权限。标签是键值对。有关为资源添加标签的更多信息,请参阅中的为AWS 资源添加标签AWS 一般参考

在中 AWS Transfer Family,资源可以有标签,有些操作可以包含标签。在创建 IAM 策略时,您可以使用标签条件键来控制以下:

  • 根据 AWS Transfer Family 资源所具有的标签,哪些用户可以对资源执行操作。

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

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

通过使用基于标签的访问控制,您可以应用比 API 级别更精细的控制。与使用基于资源的访问控制相比,您还可以应用更多动态控制。您可以创建 IAM 策略,以允许或拒绝按请求中提供的标签(请求标签)执行操作。您还可以根据正在操作资源的标签(资源标签)创建 IAM 策略。通常,资源标签用于资源上已有的标签,请求标签用于向资源添加标签或从资源中删除标签。

有关标签条件键的完整请求和语义,请参阅 IAM 用户指南中的使用资源标签控制 AWS 资源的访问。有关使用 API Gateway 指定 IAM 策略的详细信息,请参阅 API Gateway 开发人员指南中的控制访问具有 IAM 权限的 API

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

您可根据标签拒绝资源上执行的操作。如果用户或服务器资源通过秘钥 stage 和值 prod 标记,则以下示例策略拒绝 TagResourceUntagResourceStartServerStopServerDescribeServer 以及 DescribeUser 操作。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "transfer:TagResource", "transfer:UntagResource", "transfer:StartServer", "transfer:StopServer", "transfer:DescribeServer", "transfer:DescribeUser ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/stage": "prod" } } } ] }

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

您可以允许根据标签对资源执行操作。如果用户或服务器资源通过秘钥 stage 和值 prod 标记,则以下示例策略拒绝 TagResourceUntagResourceStartServerStopServerDescribeServer 以及 DescribeUser 操作。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "transfer:TagResource", "transfer:UntagResource", "transfer:StartServer", "transfer:StopServer", "transfer:DescribeServer", "transfer:DescribeUser ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/stage": "prod" } } } ] }

示例 3:拒绝根据请求标签创建用户或服务器

以下示例策略包含两个语句。如果标签的成本中心密钥无值,则第一条语句拒绝对所有资源执行 CreateServer 操作。

如果标签的成本中心密钥包含除 1、2 或 3 之外的任何其他值,则第二条语句将拒绝 CreateServer 操作。

注意

此策略确实允许创建或删除包含 costcenter 秘钥和 123 值的资源。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "transfer:CreateServer" ], "Resource": [ "*" ], "Condition": { "Null": { "aws:RequestTag/costcenter": "true" } } }, { "Effect": "Deny", "Action": "transfer:CreateServer", "Resource": [ "*" ], "Condition": { "ForAnyValue:StringNotEquals": { "aws:RequestTag/costcenter": [ "1", "2", "3" ] } } } ] }