当您使用智能媒体管理(IMM)提供的功能时,需要授予RAM用户相应权限。本文介绍在对象存储OSS上使用智能媒体管理需要的权限。

权限介绍

通过对象存储OSS的x-oss-processx-oss-async-processAPI使用智能媒体管理(IMM)功能需要授予四种类型的权限,具体如下:

  • 授予用户使用OSS进行数据处理的权限。

  • 授予用户使用IMM对应数据处理功能的权限。

  • 授予IMM服务访问OSS等其他服务的权限。

  • 通过批处理和触发器进行数据处理时,授予IMM服务的权限。

OSS用户权限

您通过x-oss-processx-oss-async-process使用智能媒体管理 (IMM) 数据处理功能需要被授予OSS权限。关于如何授权,请参见为RAM用户授权。 系统权限AliyunOSSFullAccess包含所有OSS权限。若希望自定义权限请确保包含以下OSS权限:

Action

是否必须

策略描述

oss:GetObject

读取文件(Object)的权限。

oss:ProcessImm

通过OSS使用IMM进行数据处理的权限。

oss:PostProcessTask

通过POST请求使用数据处理功能的权限,例如异步处理(x-oss-async-process)。

oss:PutObject

上传文件(Object)的权限。使用另存为(sys/saveas) 时请添加此权限。

IMM用户权限

用户通过x-oss-processx-oss-async-process使用智能媒体管理 (IMM) 数据处理功能还需要被授予IMM权限。关于如何配置权限,请参见为RAM用户配置权限

系统权限AliyunIMMFullAccess包含所有IMM权限。若仅使用部分数据处理功能,也可参考下表仅授予对应功能的IMM权限:

数据处理操作

说明

Action

image/cropping

图片自动裁剪

imm:DetectImageCropping

image/faces

图片人脸检测

imm:DetectImageFaces

video/convert

创建视频转码任务

imm:CreateMediaConvertTask

video/animation

创建视频转动图任务

imm:CreateMediaConvertTask

video/sprite

创建视频截雪碧图任务

imm:CreateMediaConvertTask

video/snapshots

创建视频截帧任务

imm:CreateMediaConvertTask

video/concat

创建视频拼接任务

imm:CreateMediaConvertTask

video/info

视频信息提取

imm:DetectMediaMeta

audio/convert

创建音频转码任务

imm:CreateMediaConvertTask

audio/concat

创建音频拼接任务

imm:CreateMediaConvertTask

audio/info

音频信息提取

imm:DetectMediaMeta

doc/convert

文档转换

imm:CreateOfficeConversionTask

doc/edit

文档编辑

imm:GenerateWebofficeToken

doc/preview

文档预览

imm:GenerateWebofficeToken

doc/snapshot

文档缩略图

imm:CreateOfficeConversionTask

pointcloud/compress

点云压缩

imm:CreateCompressPointCloudTask

hls/m3u8

获取视频播放列表

imm:GenerateVideoPlaylist

hls/ts

实时转码

imm:LiveTranscoding

由于每个Bucket必须要绑定一个IMM Project,创建Project时会指定一个ServiceRole(默认为AliyunIMMDefaultRole)。如果您使用RAM用户或RAM角色访问,则必须有该ServiceRole的PassRole权限。

{
   "Effect": "Allow",
   "Action": "ram:PassRole",
   "Resource": "acs:ram:*:*:role/aliyunimmdefaultrole"  
}

IMM服务权限

智能媒体管理(IMM)进行数据处理时需要访问其他服务,例如:从OSS读取源文件、向OSS写入结果文件、数据处理任务结束时向MNS发送通知等时,您需要授予智能媒体管理(IMM)服务角色的权限。

一般情况下,默认服务角色在开通智能媒体管理时已经授予。若需要对服务角色权限进行缩小或调整,智能媒体管理 (IMM) 允许在创建IMM项目时设置服务角色。更多信息,请参见为项目配置服务角色

批处理和触发器权限

使用批处理和触发器,您需要授权给IMM服务访问其他云资源(例如OSS)的权限。没有服务角色时,您可以在云资源访问授权页面创建默认角色。

关于如何为批处理添加服务角色,请参见批处理。关于如何为触发器添加服务角色,请参见触发器

常见授权示例

完全授权

RAM Policy将允许用户通过OSS访问数据处理所有功能,示例代码如下。

{
    "Statement":[
        {
            "Effect":"Allow",
            "Action":"oss:*",
            "Resource":"*"
        },
        {
            "Effect":"Allow",
            "Action":"imm:*",
            "Resource":"*"
        },
        {
            "Effect": "Allow",
            "Action": "ram:PassRole",
            "Resource": "acs:ram:*:*:role/aliyunimmdefaultrole"
        }
    ],
    "Version":"1"
}

授权特定的操作

RAM Policy将允许用户通过OSS访问特定Bucket的文档处理功能,示例代码如下。

{
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "oss:GetObject",
                "oss:PutObject",
                "oss:PostProcessTask",
                "oss:ProcessImm"
            ],
            "Resource": [
                "acs:oss:*:*:bucketname1/*",
                "acs:oss:*:*:bucketname2/*"
            ]
        },
        {
            "Action": [
                "imm:CreateOfficeConversionTask",
                "imm:GetWebofficeURL"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Effect": "Allow",
            "Action": "ram:PassRole",
            "Resource": "acs:ram:*:*:role/aliyunimmdefaultrole"
        }
    ],
    "Version": "1"
}

批处理和触发器服务角色权限

授权给IMM服务以访问OSS的权限,示例代码如下。

{
    "Statement":[
        {
            "Action":[
                "oss:Get*",
                "oss:List*",
                "oss:Process*",
                "oss:PostProcess*",
                "oss:Put*",
                "oss:PutBucketInventory",
                "oss:GetBucketInventory",
                "oss:ListBucketInventory",
                "oss:DeleteBucketInventory",
                "oss:PutBucketNotification",
                "oss:DeleteBucketNotification",
                "oss:StartEventRecord",
                "oss:StopEventRecord",
                "oss:GetEventRecordStatus"
            ],
            "Resource":"*",
            "Effect":"Allow"
        }
    ],
    "Version":"1"
}