RAM Policy是基于用户的授权策略。您可以使用RAM Policy控制用户可以访问您名下哪些资源的权限。

背景信息

  • RAM Policy语法和结构

    RAM Policy包含版本号(Version)和授权语句(Statement)。每条授权语句又包含授权效力(Effect)、操作(Action)、资源(Resource)以及限制条件(Condition,可选项)。有关权限策略的语法和结构的详情,请参见权限策略语法和结构

    其中OSS中Version、Statement以及Effect的应用规则与RAM相同。OSS的Action、Resource以及Condition说明请参见:

  • OSS常用的权限策略
    • AliyunOSSFullAccess:为RAM用户授予OSS的完全管理权限。
    • AliyunOSSReadOnlyAccess:为RAM用户授予OSS的只读访问权限。
  • OSS访问控制方式

    有关OSS包含的访问控制方式的更多信息,请参见访问控制概述

OSS Action分类

Action分为Service级别操作、Bucket级别操作以及Object级别的操作。

  • Service级别
    API Action 接口描述
    GetService (ListBuckets) oss:ListBuckets 列举请求者拥有的所有Bucket。
  • Bucket级别
    API Action 接口描述
    PutBucket oss:PutBucket 创建Bucket。
    GetBucket (ListObjects) oss:ListObjects 列举Bucket中所有Object的信息。
    GetBucketInfo oss:GetBucketInfo 查看Bucket相关信息。
    GetBucketLocation oss:GetBucketLocation 查看Bucket位置信息。
    PutBucketVersioning oss:PutBucketVersioning 设置指定Bucket的版本控制状态。
    GetBucketVersioning oss:GetBucketVersioning 获取指定Bucket的版本控制状态。
    GetBucketVersions(ListObjectVersions) oss:ListObjectVersions 列出Bucket中包括删除标记(Delete Marker)在内的所有Object的版本信息。
    PutBucketAcl oss:PutBucketAcl 设置或修改Bucket的访问权限(ACL)。
    GetBucketAcl oss:GetBucketAcl 设置或修改Bucket的ACL。
    DeleteBucket oss:DeleteBucket 删除某个Bucket。
    PutBucketLogging oss:PutBucketLogging 开启Bucket日志转存功能。
    GetBucketLogging oss:GetBucketLogging 查看Bucket日志转存配置。
    DeleteBucketLogging oss:DeleteBucketLogging 关闭Bucket日志转存功能。
    PutBucketWebsite oss:PutBucketWebsite 设置Bucket为静态网站托管模式并设置其跳转规则(RoutingRule)。
    GetBucketWebsite oss:GetBucketWebsite 查看Bucket的静态网站托管状态以及跳转规则。
    DeleteBucketWebsite oss:DeleteBucketWebsite 关闭Bucket的静态网站托管模式以及跳转规则。
    PutBucketReferer oss:PutBucketReferer 设置Bucket的防盗链。
    GetBucketReferer oss:GetBucketReferer 查看Bucket的防盗链(Referer)相关配置。
    PutBucketLifecycle oss:PutBucketLifecycle 设置Bucket的生命周期规则。
    GetBucketLifecycle oss:GetBucketLifecycle 查看Bucket的生命周期规则(Lifecycle)。
    DeleteBucketLifecycle oss:DeleteBucketLifecycle 删除Bucket的生命周期规则。
    ListMultipartUploads oss:ListMultipartUploads 列举所有执行中的Multipart Upload事件,即已经初始化但还未完成(Complete)或者还未中止(Abort)的Multipart Upload事件。
    PutBucketCors oss:PutBucketCors 设置指定Bucket的跨域资源共享CORS(Cross-Origin Resource Sharing)规则。
    GetBucketCors oss:GetBucketCors 获取指定Bucket当前的跨域资源共享CORS规则。
    DeleteBucketCors oss:DeleteBucketCors 关闭指定Bucket对应的跨域资源共享CORS功能并清空所有规则。
    PutBucketPolicy oss:PutBucketPolicy 设置指定Bucket的授权策略(Policy)。
    GetBucketPolicy oss:GetBucketPolicy 获取指定Bucket的授权策略。
    DeleteBucketPolicy oss:DeleteBucketPolicy 删除指定Bucket的授权策略。
    PutBucketTags oss:PutBucketTagging 添加或修改指定Bucket的标签。
    GetBucketTags oss:GetBucketTagging 获取Bucket的标签。
    DeleteBucketTags oss:DeleteBucketTagging 删除Bucket的标签。
    PutBucketEncryption oss:PutBucketEncryption 配置Bucket的加密规则。
    GetBucketEncryption oss:GetBucketEncryption 获取Bucket的加密规则。
    DeleteBucketEncryption oss:DeleteBucketEncryption 删除Bucket的加密规则。
    PutBucketRequestPayment oss:PutBucketRequestPayment 设置请求者付费模式。
    GetBucketRequestPayment oss:GetBucketRequestPayment 获取请求者付费模式配置信息。
    PutBucketReplication oss:PutBucketReplication 设置Bucket的数据复制规则。
    GetBucketReplication oss:GetBucketReplication 获取Bucket已设置的数据复制规则。
    DeleteBucketReplication oss:DeleteBucketReplication 停止Bucket的数据复制并删除Bucket的复制配置。
    GetBucketReplicationLocation oss:GetBucketReplicationLocation 获取可复制到的目标Bucket的所在地域。
    GetBucketReplicationProgress oss:GetBucketReplicationProgress 获取Bucket的数据复制进度。
    PutBucketInventory oss:PutBucketInventory 配置Bucket的清单(Inventory)规则。
    GetBucketInventory oss:GetBucketInventory 查看Bucket中指定的清单任务。
    ListBucketInventory oss:GetBucketInventory 批量获取Bucket中所有清单任务。
    DeleteBucketInventory oss:DeleteBucketInventory 删除Bucket中指定的清单任务。
  • Object级别
    API Action 接口描述
    PutObject oss:PutObject 上传文件(Object)。
    PostObject oss:PutObject 通过HTML表单上传的方式将Object上传到指定Bucket。
    AppendObject oss:PutObject 以追加写的方式上传Object。
    InitiateMultipartUpload oss:PutObject 在使用Multipart Upload模式传输数据前,通知OSS初始化一个分片上传(Multipart Upload)事件。
    UploadPart oss:PutObject 根据指定的Object名和uploadId来分块(Part)上传数据
    CompleteMultipartUpload oss:PutObject 在将所有数据Part都上传完成后,需调用此接口来完成整个Object的分片上传。
    AbortMultipartUpload oss:AbortMultipartUpload 取消MultipartUpload事件并删除对应的Part数据。
    PutSymlink oss:PutObject 为OSS的目标文件(TargetObject)创建软链接(Symlink)。
    GetObject oss:GetObject 获取某个Object。
    HeadObject oss:GetObject 取某个Object的元信息。
    GetObjectMeta oss:GetObject 获取Object的元数据信息,包括该Object的ETag、Size、LastModified信息。
    SelectObject oss:GetObject 对目标文件执行SQL语句,返回执行结果。
    GetSymlink oss:GetObject 获取目标文件的软链接。
    DeleteObject oss:DeleteObject 删除某个Object。
    DeleteMultipleObjects oss:DeleteObject 删除同一个Bucket中的多个Object。
    CopyObject oss:GetObject,oss:PutObject 拷贝同一地域下相同或不同Bucket之间的Object。
    UploadPartCopy oss:GetObject,oss:PutObject 在UploadPart请求的基础上增加一个请求头x-oss-copy-source来调用UploadPartCopy接口,实现从一个已存在的Object中拷贝数据来上传一个Part。
    ListParts oss:ListParts 列举指定Upload ID所属的所有已经上传成功的Part。
    PutObjectACL oss:PutObjectAcl 修改Bucket下某个Object的ACL。
    GetObjectACL oss:GetObjectAcl 获取Bucket下某个Object的ACL。
    RestoreObject oss:RestoreObject 解冻归档类型(Archive)或冷归档(Cold Archive)的Object。
    PutObjectTagging oss:PutObjectTagging 设置或更新Object的标签(Tagging)信息。
    GetObjectTagging oss:GetObjectTagging 获取Object的标签信息。
    DeleteObjectTagging oss:DeleteObjectTagging 删除指定Object的标签信息。
    GetObject(请求参数中指定versionId) oss:GetObjectVersion 下载指定版本Object。
    PutObjectACL(请求参数中指定versionId) oss:PutObjectAcl 修改Bucket下指定版本Object的ACL。
    GetObjectACL(请求参数中指定versionId) oss:GetObjectVersionAcl 获取Bucket下指定版本Object的ACL。
    RestoreObject(请求参数中指定versionId) oss:RestoreObjectVersion 解冻归档类型(Archive)或冷归档(Cold Archive)的指定版本Object。
    DeleteObject(请求参数中指定versionId) oss:DeleteObjectVersion 删除指定版本Object。
    PutObjectTagging(请求参数中指定versionId) oss:PutObjectVersionTagging 设置或更新指定版本Object的标签(Tagging)信息。
    GetObjectTagging(请求参数中指定versionId) oss:GetObjectVersionTagging 获取指定版本Object的标签信息。
    DeleteObjectTagging(请求参数中指定versionId) oss:DeleteObjectVersionTagging 删除指定版本Object的标签信息。
    PutLiveChannel oss:PutLiveChannel 通过RTMP协议上传音视频数据前,必须先调用该接口创建一个LiveChannel。
    ListLiveChannel oss:ListLiveChannel 列举指定的LiveChannel。
    DeleteLiveChannel oss:DeleteLiveChannel 删除指定的LiveChannel。
    PutLiveChannelStatus oss:PutLiveChannelStatus 在启用(enabled)和禁用(disabled)两种状态之间进行切换。
    GetLiveChannelInfo oss:GetLiveChannel 获取指定LiveChannel的配置信息。
    GetLiveChannelStat oss:GetLiveChannelStat 获取指定LiveChannel的推流状态信息。
    GetLiveChannelHistory oss:GetLiveChannelHistory 获取指定LiveChannel的推流记录。
    PostVodPlaylist oss:PostVodPlaylist 为指定的LiveChannel生成一个点播用的播放列表。
    GetVodPlaylist oss:GetVodPlaylist 查看指定LiveChannel在指定时间段内推流生成的播放列表。
    ProcessImm oss:ProcessImm 基于图片AI技术检测图片标签和置信度。
    ImgSaveAs oss:PostProcessTask 保存处理后的图片至指定Bucket。

OSS Resource说明

在OSS中,Resource指代某个具体资源或者某些资源,支持通配符星号(*)。单个RAM Policy允许包含多个Resource。

Resource规则:acs:oss:{region}:{bucket_owner}:{bucket_name}/{object_name}

针对Bucket级别的Resource设置,不需要在{bucket_name}之后添加正斜线(/)以及{object_name},即acs:oss:{region}:{bucket_owner}:{bucket_name}。region字段当前仅支持设置为通配符星号(*)。

OSS Condition说明

Condition代表Policy授权的条件。OSS支持的Condition如下:

Condition 说明
acs:SourceIp 指定普通IP网段,支持通配符星号(*)。
acs:UserAgent 指定HTTP User-Agent头。

类型:字符串

acs:CurrentTime 请求到达OSS服务端的时间。

格式:ISO8601

acs:SecureTransport 请求的协议类型。如果请求是HTTP协议,则为HTTP,如果请求是HTTPS协议,则为HTTPS。
oss:Prefix 用于ListObjects请求时,列举指定前缀的Object。
oss:Delimiter 用于ListObjects请求时,对Object名字进行分组的字符。
acs:AccessId 请求中携带的AccessId。
oss:BucketTag 存储空间标签(BucketTag)。

单个BucketTag可以作为一个Condition。当设置多个BucketTag时,需在每个BucketTag前加上oss:BucketTag/,组成多个Condition。

acs:MFAPresent 是否启用了多因素认证MFA(Multi-factor authentication)。
取值:
  • true:已启用多因素认证。
  • false:未启用多因素认证。
oss:ExistingObjectTag 请求的Object已存在标签。

单个ObjectTag可以作为一个Condition。当设置多个ObjectTag时,需在每个ObjectTag前加上oss:ExistingObjectTag/,组成多个Condition。

主要针对GetObjectHeadObject等读取文件接口以及PutObjectTaggingGetObjectTagging等ObjectTagging接口。

oss:RequestObjectTag 请求中携带的对象标签。

单个ObjectTag可以作为一个Condition。当设置多个ObjectTag时,需在每个ObjectTag前加上oss:RequestObjectTag/,组成多个Condition。

主要针对PutObjectPostObject等写入文件接口以及PutObjectTaggingGetObjectTagging等ObjectTagging接口。

常见示例

您可以使用RAM Policy实现不同场景下的用户权限策略。更多信息,请参见RAM Policy常见示例