使用标签控制对IAM用户和信任委托的访问
可以将标签附加到IAM资源,或者将标签附加到请求的主体,在请求中传递标签并通过标签进行访问控制。

IAM用户或信任委托可以同时是资源和主体。
例如:您可以编写一个允许具有type=employee标签的IAM用户才能执行查询用户组操作的身份策略。在该示例中,IAM用户可以查看账号下所有用户组,只要其具备type=employee标签。
要实现基于标签的访问控制,您需要在身份策略的条件元素中提供标签信息。在创建IAM身份策略时,您可以使用IAM标签和关联的标签条件键控制对以下内容的访问:
- 资源:根据标签控制对用户或信任委托资源的访问。请使用g:ResourceTag/<tag-key>条件键指定必须将哪个标签键值对附加到资源。
- 请求:仅当用户在调用API时传入了标签(例如为资源添加标签的API,创建资源同时支持传入标签的API等),请求中会携带该属性,用于控制仅允许用户创建哪些标签。请使用g:RequestTag/<tag-key>条件键来指定可在IAM用户或委托中添加、更改、删除的标签。
- 主体:根据附加到发出请求的主体(当前支持IAM用户和信任委托)的标签,控制允许该主体执行哪些操作。请使用g:PrincipalTag/<tag-key>条件键指定具备条件键的主体的访问控制。
- 授权过程:使用g:TagKeys条件键来控制是否可以在请求中使用特定的标签键。用户在调用API时传入了标签(例如为资源添加标签的API,创建资源同时支持传入标签的API等),请求中会携带该属性,即所有标签的key组成的列表。
控制IAM主体的访问
您可以根据附加到主体身上的标签来控制允许该人员执行哪些操作。
此示例表示如何创建允许此账号中附加了type=employee标签的用户或信任委托可以查看此账号用户列表的身份策略。
{ "Version": "5.0", "Statement": [{ "Effect": "Allow", "Action": [ "iam:users:listUsersV5" ], "Condition": { "StringEquals": { "g:PrincipalTag/type": [ "employee" ] } } }] }
控制给用户或信任委托添加哪些标签键
您可以在IAM身份策略中使用标签来控制是否可以在请求中或通过主体使用特定的标签键。
此示例表示仅允许用户创建带有标签键为visible的标签。
{ "Version": "5.0", "Statement": [{ "Effect": "Allow", "Action": [ "iam::tagForResourceV5" ], "Condition": { "ForAnyValue:StringEquals": { "g:TagKeys": [ "visible" ] } } }] }