如何基于RAM角色实现跨账号访问OSS

阿里云OSS的资源默认都是私有的,如果您希望您的合作伙伴可以访问您的OSS资源,可以通过RAM角色实现跨账号访问。

背景信息

某公司A希望其合作公司B可以访问自己名下OSS内的数据,但又不方便开放RAM账号给公司B。此时,公司A可创建一个RAM角色,并授权RAM角色OSS的访问权限。公司B可用RAM用户扮演这个RAM角色,实现跨账号访问的目的。

步骤1:公司A创建RAM角色并授予OSS访问权限

公司A需要先创建一个拥有OSS访问权限的RAM角色,提供给公司BRAM用户扮演。

  1. 创建RAM角色。

    1. 使用公司A账号登录RAM控制台

    2. 在左侧导航栏,选择身份管理 > 角色

    3. 角色页面,单击创建角色

    4. 创建角色面板,选择可信实体类型为阿里云账号,然后单击下一步

    5. 设置角色信息。

      1. 设置角色名称,本示例角色名称设置为admin-oss

      2. 可选:输入备注

      3. 信任的云账号选择其他云账号,然后输入公司B的阿里云账号UID(17464958576******)。

    6. 单击完成

      说明

      以上RAM角色创建后,该RAM角色默认可以被可信阿里云账号(公司B账号UID)下的所有RAM用户、RAM角色扮演。如果您希望创建的RAM角色只能被可信阿里云账号下的指定RAM用户或者RAM角色扮演,则需要对已创建RAM角色的信任策略进行手动修改。更多信息,请参见修改RAM角色的可信实体为阿里云账号

  2. RAM角色授权。

    1. 角色页面,单击目标角色admin-oss右侧的新增授权

    2. 新增授权面板,选择AliyunOSSReadOnlyAccess权限策略。

      重要

      AliyunOSSReadOnlyAccess为只读访问OSS所有资源的权限。如果您仅希望授权其他用户访问部分Bucket或者Bucket的部分目录,您可以通过创建自定义策略。关于自定义策略的更多信息,请参见RAM Policy

    3. 单击确认新增授权

步骤2:公司B创建RAM用户并授予允许扮演RAM角色的权限

公司B需要创建一个可以扮演角色的RAM用户,用于扮演公司A创建的RAM角色。

  1. 创建RAM用户。

    1. 使用公司B账号登录RAM控制台

    2. 在左侧导航栏,选择身份管理 > 用户

    3. 用户页面,单击创建用户

    4. 创建用户页面的用户账号信息区域,输入登录名称显示名称

    5. 访问方式区域,选择控制台访问,并根据需要设置控制台登录密码、重置密码策略和多因素认证策略。

      说明

      自定义登录密码时,密码必须满足密码复杂度规则。关于设置密码复杂度规则的更多信息,请参见设置RAM用户密码强度

    6. 单击确定

  2. RAM用户授权。

    1. 用户页面,找到目标RAM用户右侧的添加权限

    2. 添加权限页面,选择策略为系统策略,然后单击AliyunSTSAssumeRoleAccess策略。

    3. 单击确认新增授权

步骤3:公司BRAM用户登录控制台并扮演公司ARAM角色

公司B需使用刚创建的RAM用户登录阿里云控制台,并切换身份为公司A创建的RAM角色。

  1. 公司B使用RAM用户登录阿里云控制台。具体操作,请参见RAM用户登录阿里云控制台

  2. 鼠标移至右上角的头像上,单击切换身份

  3. 角色切换页面,输入RAM角色信息,然后单击提交

    RAM角色信息如下:

    • 企业别名/默认域名/主账号UID:填写公司A的企业别名、默认域名或者主账号UID。更多信息,请参见基本概念

      本示例以默认域名为例,输入默认域名为1178810717******.onaliyun.com1178810717******为公司A阿里云账号的UID。

    • 角色名:输入公司A创建的RAM角色admin-oss

  4. 打开OSS管理控制台即可管理公司AOSS资源。

更多参考

您也可以通过Bucket Policy实现以上需求。具体操作,请参见教程示例:基于Bucket Policy实现跨账号访问OSS