文档

跨账号访问OSS

更新时间:

本文介绍如何通过配置Bucket Policy实现IMM跨账号访问OSS资源。

Bucket Policy是阿里云OSS推出的针对Bucket的授权策略,您可以通过阿里云OSS提供的Bucket Policy授权访问其他用户的OSS资源。关于Bucket Policy的更多信息,请参见Bucket Policy

背景信息

用户A希望通过IMM提供的API处理用户B账号下的OSS资源,但用户B又不方便开放RAM用户给用户A。此时,用户B可以通过Bucket Policy授予用户A访问Bucket的权限。用户A账号获得授权后,就可以调用IMM的API处理用户B账号下指定Bucket中的资源。

前提条件

  • 用户A已创建IMM项目(例如immtest),并绑定了默认服务关联角色AliyunIMMDefaultRole,IMM默认使用此角色来访问用户A在其他云产品中的资源。

    说明

    服务关联角色是一种可信实体为阿里云服务的RAM角色,旨在解决跨云服务的授权访问问题。通过服务关联角色您可以更好地配置云服务正常操作所必需的权限,避免误操作带来的风险。关于服务关联角色的更多详细信息,请参见服务关联角色

  • 用户B已创建Bucket(例如test-bucket-2023),并已将待处理的资源上传至该Bucket。

步骤一:用户B添加Bucket Policy

用户B通过Bucket Policy授予用户A访问授权Bucket,操作步骤如下:

  1. 获取用户A的阿里云账号UID。

    1. 用户A登录阿里云控制台

    2. 将鼠标悬停至右上角的用户信息处,查看并记录账号ID,即阿里云账号UID。

  2. 用户B授予用户A服务关联角色AliyunIMMDefaultRole访问授权资源。

    1. 用户B登录OSS管理控制台

    2. 在左侧导航栏,单击Bucket 列表,然后单击目标Bucket名称。

    3. 在左侧导航栏,选择权限控制>Bucket 授权策略

    4. Bucket 授权策略页面的按语法策略添加页签,单击编辑

    5. 在语法策略输入框中,输入Bucket Policy。

      以下Bucket Policy表示允许用户A的服务关联角色AliyunIMMDefaultRole访问用户B的目标存储空间examplebucket内的所有资源,其中examplebucket为授权的Bucket名称,请根据实际值替换。关于权限策略的更多信息,请参见RAM Policy

      {
        "Version": "1",
        "Statement": [{
          "Effect": "Allow",
          "Action": [
            "ram:PassRole"
          ],
          "Principal": [
            
          ],
          "Resource": [
            "arn:sts::{用户A的阿里云账号UID}:assumed-role/AliyunIMMDefaultRole/*"
          ]
        }, {
          "Effect": "Allow",
          "Action": [
            "oss:GetObject",
            "oss:GetObjectAcl",
            "oss:ListObjects",
            "oss:RestoreObject",
            "oss:GetVodPlaylist",
            "oss:ListObjectVersions",
            "oss:GetObjectVersion",
            "oss:GetObjectVersionAcl",
            "oss:RestoreObjectVersion"
          ],
          "Principal": [
            "arn:sts::{用户A的阿里云账号UID}:assumed-role/AliyunIMMDefaultRole/*"
          ],
          "Resource": [
            "acs:oss:*:{用户B的阿里云账号UID}:examplebucket/*"
          ]
        }]
      }
    6. 单击保存

步骤二:用户A通过IMM跨账号访问OSS资源

用户B完成授权后,用户A可以通过调用API接口处理用户B指定Bucket下的资源。本文以调用DetectImageScore - 获取图片分数为例,用户A可通过该接口获取用户B拥有的Bucket中的某个图片分数。

图片信息

  • IMM项目名称:immtest

  • 待评分图片的存储地址:oss://examplebucket/test-object.jpg

请求示例

{
 "ProjectName": "immtest",
 "SourceURI": "oss://examplebucket/test-object.jpg",
}

返回示例

{
 "RequestId": "1AEABE83-5746-02E4-A97D-52EE4BB*****",
 "ImageScore": {
 "OverallQualityScore": 0.727
 }
}
说明

调用结果返回了图片分数,表示用户A可以通过调用API接口处理用户B指定Bucket下的资源,实现了跨账号访问。

  • 本页导读 (1)
文档反馈