本文介绍如何在容器计算服务 ACS(Container Compute Service)中授权RAM用户容器镜像服务 ACR(Container Registry)指定命名空间的权限。
步骤一:修改服务角色授权策略
用户首次访问ACS控制台将授权创建服务角色AliyunCCManagedAcrRole,授权ACS通过该服务角色访问ACR容器镜像服务获取临时账号密码,用于启动ACS Pod实例。该服务角色默认授权策略如下:
{
"Version": "1",
"Statement": [
{
"Action": [
"cr:GetAuthorizationToken",
"cr:ListInstanceEndpoint",
"cr:PullRepository"
],
"Resource": [
"*"
],
"Effect": "Allow"
}
]
}
默认授权策略中的*
,表示完全匹配,例如"Resource"为"*",表示授予所有地域、命名空间下的所有ACR资源实例cr:GetAuthorizationToken
,cr:ListInstanceEndpoint
,cr:PullRepository
的操作权限。该默认授权策略授权范围较大,请您尽快自定义修改授权策略,将"Resource"限制在指定范围,样例如下:
acs:cr:::repository/$instanceid/$namespace/
表示指定镜像仓库实例ID和命名空间授权。acs:cr:*::repository/$instanceid/
表示指定镜像仓库实例ID授权。
步骤二:创建自定义策略
使用阿里云账号登录RAM控制台。
在左侧导航栏,选择权限管理 > 权限策略。
在权限策略页面,单击创建权限策略。
在创建权限策略页面,单击脚本编辑页签。
将以下策略内容复制到文本框中,然后根据实际情况替换策略内容中的
$instanceid
和$namespace
,单击下一步。{ "Statement": [ { "Effect": "Allow", "Action": [ "cr:ListInstance*", "cr:GetInstance*", "cr:ListSignature*" ], "Resource": "*" }, { "Action": [ "cr:*" ], "Effect": "Allow", "Resource": [ "acs:cr:*:*:repository/$instanceid/$namespace/*", "acs:cr:*:*:repository/$instanceid/$namespace" ] }, { "Action": [ "cr:List*" ], "Effect": "Allow", "Resource": [ "acs:cr:*:*:repository/$instanceid/*", "acs:cr:*:*:repository/$instanceid/*/*" ] } ], "Version": "1" }
说明策略内容中的
*
,表示完全匹配,例如:cr:ListInstance*
表示授予cr:ListInstance开头的所有action。设置
acs:cr:*:*:repository/$instanceid/$namespace/*
为acs:cr:*:*:repository/cri-123456/ns/*
,表示将参数$instanceid
与$namespace
替换为需授权的容器镜像服务实例ID和Namespace名称,授予所有地域下ID为cri-123456的实例的ns命名空间下的所有权限。
输入权限策略名称和备注。
单击确定。
步骤三:授予RAM用户自定义策略
使用阿里云账号登录RAM控制台。
在左侧导航栏,选择身份管理 > 用户。
在用户页面,单击目标RAM用户操作列的添加权限。
在添加权限面板,为RAM用户添加权限。
选择授权应用范围。
说明整个云账号:权限在当前阿里云账号内生效。
指定资源组:权限在指定的资源组内生效。指定资源组授权生效的前提是该云服务已支持资源组。更多信息,请参见支持资源组的云服务。
输入授权主体。授权主体即需要授权的RAM用户,系统会自动填入当前的RAM用户,您也可以添加其他RAM用户。
选择权限策略。
说明每次最多绑定5条策略,如需绑定更多策略,请分次操作。
单击确认新增授权。
说明使用RAM用户登录容器镜像控制台。您可以在容器镜像控制台授予的命名空间下进行构建、推送、拉取镜像等操作。