基于标签的细粒度鉴权
操作场景
当我们在IAM控制台对容器镜像服务企业版创建策略后,接着可以对命名空间和注册表创建标签,通过策略和标签相结合,我们可以实现对企业注册表资源的细粒度鉴权,保证资源使用权限可控,安全。
前提条件
已创建命名空间标签
操作步骤
- 在IAM控制台创建一个或多个策略。 例如我们创建一个名称为policy77r463的策略。配置参数填写如表1所示:
表1 策略配置示例 参数名称
示例
参数说明
策略类型
允许
当前策略类型,有2种可选,允许或拒绝。
云服务
swr
当前策略在哪个云服务上生效
操作类型
swr:repository:downloadArtifact
当前策略对哪些操作生效,可单选、多选。
资源类型
SWR:*:*:repository:test-instance/*
当前可选资源类型有2种,特定资源、所有资源。
如选择“特定资源”可以单击“通过资源路径指定”来指定需要授权的资源。SWR资源类型说明详见:企业仓库资源。
请求条件
TagKeys=test
运算符=StringEquals
值=aaa
条件键表示策略语句的Condition元素中的键值。因为此条策略为容器镜像服务创建,所以条件键选择“服务级别条件键”。条件键不区分大小写。涉及标签的条件键如下:
- PrincipalTag
- ResourceTagKeys
- ResourceTag
- RequestTag
- TagKeys
-
条件键说明详见表2 服务级请求条件
- 运算符说明详见运算符
该条策略的JSON示例如下:{ "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "swr:repository:downloadArtifact" ], "Resource": [ "SWR:*:*:repository:*/{namespace-name}" ], "Condition": { "StringEquals": { "g:ResourceTag/test": [ "aaa" ] } } } ] }图1 创建策略
策略说明:该条策略适用于容器镜像服务,您可以将其配置给该服务内的用户/用户组A。策略配置生效后,该用户/用户组A下的用户可以下载含有“test=aaa”标签的,且命名空间名称为{namespace-name}下的仓库的制品。
当某用户/用户组想要执行仓库的下载镜像动作,企业注册表会提取该用户/用户组的标签与“test=aaa”相校验,若匹配,则准许其进行操作。反之,则操作失败。
- 将步骤1生成的策略policy77r463授权给用户/用户组A,具体操作方法详见创建用户组并授权。给命名空间{namespace-name}新增一个“test=aaa”的标签,具体操作方法详见添加命名空间标签。
- 使用步骤2授权的用户或者用户组A中的用户即可以对命名空间内名为{namespace-name}里的制品执行下载操作。