使用标签控制对华为云资源的访问
您可以使用标签以控制对支持标签的华为云资源的访问。因为标签可以附加到资源,您可以创建身份策略以对附加标签的资源进行访问控制。
要实现基于标签的访问控制,您需要在身份策略的条件元素中提供标签信息。然后,您可以创建一个根据资源的标签允许或拒绝访问资源的身份策略。在该身份策略中您可以使用标签条件键以控制任何以下内容的访问:
- 资源:请使用g:ResourceTag/key-name条件键根据附加到资源的标签确定是否允许访问该资源。
- 请求:仅当用户在调用API时传入了标签(例如为资源添加标签的API,创建资源同时支持传入标签的API等),请使用g:RequestTag/key-name条件键指定在资源中添加、更改、删除的标签。
- 主体:根据附加到发出请求的主体(当前支持IAM用户和信任委托)的标签,控制允许该主体执行哪些操作。请使用g:PrincipalTag/key-name条件键指定具体条件键的主体的访问控制。
- 授权过程:使用g:TagKeys条件键来控制是否可以在请求中使用特定的标签键。用户在调用API时传入了标签(例如为资源添加标签的API,创建资源同时支持传入标签的API等),请求中会携带该属性,即所有标签的key组成的列表。
控制对华为云资源的访问
您可以根据华为云上资源附加的标签,使用IAM身份策略中的条件键控制对该资源的访问。您可以使用全局条件键g:ResourceTag/key-name执行该操作。
此示例的效果只有ecs所属的用户才有权限启动或停止该实例,例如,您有一个用户名为ecsAdministrator的IAM子用户,这个用户创建的ecs实例会附加Owner=ecsAdministrator的标签标识。
{ "Version": "5.0", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:cloudServers:start", "ecs:cloudServers:stop" ], "Resource": [ "ecs:*:*:instance:*" ], "Condition": { "StringEquals": { "g:ResourceTag/Owner": [ "${g:UserName}" ] } } } ] }
根据标签键值对控制访问
您可以在IAM身份策略中使用条件键来控制可在请求中传递哪些标签键值对(需要该请求对应的华为云资源支持标签功能)。
{ "Version": "5.0", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:cloudServers:batchCreateServerTags" ], "Condition": { "StringEquals": { "g:RequestTag/Owner": [ "ecsAdministrator", "ecsDeveLop" ] } } } ] }
根据标签键控制访问
您可以在IAM身份策略中使用条件键来控制是否可以在请求中使用特定的条件键。
{ "Version": "5.0", "Statement": [{ "Effect": "Allow", "Action": [ "ecs:cloudServers:batchCreateServerTags" ], "Condition": { "ForAnyValue:StringEquals": { "g:TagKeys": [ "Owner", "Share" ] } } }] }