SAE能够通过RAM角色扮演的方式实现跨账号拉取阿里云镜像,即用户A扮演用户B的角色拉取用户B的私有镜像。本文介绍跨账号拉取阿里云镜像的操作步骤。
步骤一:创建RAM角色
通过用户B的阿里云账号,创建用户A的受信实体为阿里云账号类型的RAM角色。
使用RAM管理员登录RAM控制台。
在左侧导航栏,选择 。
在角色页面,单击创建角色。
在创建角色页面,选择可信实体类型为阿里云账号,然后单击下一步。
在配置角色页签,输入角色名称和备注,选择其他云账号并输入用户A的阿里云账号,然后单击完成。
说明如果您仅允许指定的RAM用户扮演该RAM角色,而不是阿里云账号(主账号)下的所有RAM用户,您可以采取以下两种方式:
修改RAM角色的信任策略。具体操作,请参见示例一:修改RAM角色的可信实体为阿里云账号。
修改RAM用户的角色扮演权限策略。具体操作,请参见能否指定RAM用户具体可以扮演哪个RAM角色?。
单击关闭。
步骤二:为RAM角色授权
为步骤一创建的RAM角色,配置拉取用户B私有镜像的权限和信任策略。本步骤以在现有权限策略里添加镜像相关权限为例,如果您需要新建权限策略,请参见创建自定义权限策略。
使用阿里云账号登录RAM控制台。
在左侧导航栏,选择 。
在权限策略页面,单击目标权限策略名称。
在策略内容页签,单击修改策略内容。
通过可视化编辑或脚本编辑模式修改权限策略内容,然后单击继续编辑基本信息。
重要请确保该RAM角色有cr.*的相关权限。
需要添加的相关权限如下。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "cr:GetAuthorizationToken", "cr:ListInstanceEndpoint", "cr:PullRepository", "cr:GetRepository", "cr:ListRepositoryTag" ], "Resource": "*" } ] }
修改备注,然后单击确定。
在左侧导航栏,选择 。
在角色页面,单击目标RAM角色操作列的新增授权。
您也可以选中多个RAM角色,单击角色列表下方的新增授权,为RAM角色批量授权。
在新增授权面板,按需添加权限,单击确定,然后单击完成。
步骤三:为RAM角色配置信任策略
在创建的用户B的RAM角色上配置信任策略,允许用户A账号对应的SAE服务账号进行角色扮演。
使用RAM管理员登录RAM控制台。
在左侧导航栏,选择 。
在角色页面,单击目标RAM角色名称。
在信任策略页签,单击编辑信任策略。将
Principal
中的RAM
字段修改为Service
字段,然后单击保存信任策略。示例代码如下。
修改前
修改后
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "acs:ram::123456789012****:root" ] } } ], "Version": "1" }
该RAM角色可以被阿里云账号(AccountID=123456789012****)下授权的任何RAM用户、RAM角色扮演。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "123456789012****@sae.aliyuncs.com" ] } } ], "Version": "1" }
该RAM角色可以被阿里云账号(AccountID=123456789012****)对应的SAE服务账号(123456789012****@sae.aliyuncs.com)扮演。
说明本示例中的
Service
为待跨账号拉取镜像的服务。
步骤四:部署SAE应用
您可以登录RAM控制台,在RAM角色的基本信息页面一键复制ARN。创建和部署应用时选择跨账号拉取镜像,并输入acrAssumeRoleArn配置。在配置镜像区域单击其它阿里云账号私有镜像,在acrAssumeRoleArn文本框输入用户B的Worker RAM角色的ARN。具体操作,请参见以下文档: