结合使用标签和 IAM 策略 - AWS IoT Core

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

结合使用标签和 IAM 策略

您可以在用于操作的IAM策略中应用基于标签的资源级权限。 AWS IoT API这可让您更好地控制用户可创建、修改或使用哪些资源。您可以在IAM策略中使用带有以下条件上下文键和值的Condition元素(也称为Condition区块),根据资源的标签控制用户访问权限(权限):

  • 使用 aws:ResourceTag/tag-key: tag-value 可允许或拒绝带特定标签的资源上的用户操作。

  • aws:RequestTag/tag-key: tag-value用于要求在API请求创建或修改允许使用标签的资源时使用(或不使用)特定标签。

  • aws:TagKeys: [tag-key, ...]用于要求在API请求创建或修改允许使用标签的资源时使用(或不使用)一组特定的标签密钥。

注意

IAM策略中的条件上下文键和值仅适用于那些将能够标记的资源的标识符作为必填参数的 AWS IoT 操作。例如,根据条件上下文键和值,DescribeEndpoint不允许或拒绝使用,因为此请求中未引用任何可标记的资源(事物组、事物类型、主题规则、作业或安全配置文件)。有关可标记 AWS IoT 资源及其支持的条件键的更多信息,请阅读的操作、资源和条件键。 AWS IoT

有关使用标签的更多信息,请参阅《AWS Identity and Access Management 用户指南》中的使用标签控制访问权限。该指南的 “IAMJSON策略参考” 部分包含中JSON策略的元素、变量和评估逻辑的详细语法、描述和示例IAM。

以下示例策略应用 ThingGroup 操作两个基于标签的限制。受此政策限制的IAM用户:

  • 无法创建标签 “env=prod” 的事物组(在示例中,请参阅行 "aws:RequestTag/env" : "prod")。

  • 无法修改或访问具有现有标签“env=prod”的资源(在示例中,请参阅行 "aws:ResourceTag/env" : "prod")。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "iot:CreateThingGroup", "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/env": "prod" } } }, { "Effect": "Deny", "Action": [ "iot:CreateThingGroup", "iot:DeleteThingGroup", "iot:DescribeThingGroup", "iot:UpdateThingGroup" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/env": "prod" } } }, { "Effect": "Allow", "Action": [ "iot:CreateThingGroup", "iot:DeleteThingGroup", "iot:DescribeThingGroup", "iot:UpdateThingGroup" ], "Resource": "*" } ] }

您还可以为给定标签键指定多个标签值,方法是将它们括在列表中,如下所示:

"StringEquals" : { "aws:ResourceTag/env" : ["dev", "test"] }
注意

如果您基于标签允许或拒绝用户访问资源,则必须考虑显式拒绝用户对相同资源添加或删除这些标签的能力。否则,用户可能通过修改资源标签来绕过您的限制并获得资源访问权限。