对象存储OSS提供多层次权限控制机制,确保数据在存储和访问过程中的安全性。以下介绍OSS权限与访问控制的整体架构,帮助理解各控制方式的定位和差异,根据业务需求选择合适的方案。
快速选择
场景 | 推荐方案 |
数据私有,阻止非授权用户和匿名访问 | Bucket ACL设为私有(默认配置) |
对外提供公开可读的静态资源 | Bucket ACL设为公共读,配合防盗链防止资源盗用 |
授权多个用户访问特定Bucket | Bucket Policy,仅需单条策略即可指定允许的用户列表 |
统一管理某个用户可访问的所有资源 | RAM Policy绑定到该用户 |
将资源共享给其他阿里云账号 | |
同一Bucket为多个应用或团队提供差异化访问 | 接入点,每个应用或团队独立的入口和策略 |
防止误配置导致数据公开泄露 | |
浏览器端JavaScript访问OSS |
鉴权机制
OSS根据请求类型采用不同的鉴权流程:
签名请求:OSS验证签名有效性后,分别评估RAM Policy、Bucket Policy、ACL,综合判定是否允许访问。
匿名请求:OSS评估Bucket Policy和ACL是否允许公开访问。
鉴权结果分为三类:Allow(策略明确授权)、Explicit Deny(策略明确拒绝,优先级最高)、Implicit Deny(无授权则拒绝)。
完整的鉴权流程请参见OSS鉴权详解。
权限控制方式
ACL
ACL(访问控制列表)通过预定义的权限等级控制资源的公开或私有状态,是最简单的权限控制方式。
Bucket ACL控制存储空间的默认访问权限,Object ACL控制单个对象的权限(优先级更高),Object ACL未指定时默认继承Bucket ACL。支持以下权限等级:
权限等级 | 效果 |
私有(private) | 数据私有,仅资源拥有者或被授权用户可访问 |
公共读(public-read) | 任何人可读取,仅资源拥有者或被授权用户可写入 |
公共读写(public-read-write) | 任何人可公开读取和写入 |
ACL仅支持预定义等级,无法指定授权对象或条件限制。如需精细控制,请使用Bucket Policy或RAM Policy。
Bucket Policy
Bucket Policy是配置在Bucket上的授权策略,定义谁可以访问此Bucket中的资源。支持授权给RAM用户、其他阿里云账号或匿名用户,并可设置IP地址、VPC、时间等条件限制。
当需要授权多个用户访问同一Bucket时,单条Bucket Policy即可完成,无需为每个用户单独配置。
实践教程:基于VPC Policy和Bucket Policy实现双重访问控制 | 基于Bucket Policy实现跨部门数据共享
RAM Policy
RAM Policy是绑定到用户身份上的授权策略,定义该用户可以访问哪些OSS资源,适合统一管理某个用户或应用在多个Bucket上的权限。
OSS提供系统策略(如AliyunOSSFullAccess、AliyunOSSReadOnlyAccess)可直接使用,也支持自定义策略。通过RAM角色可实现跨账号访问和STS临时授权。
Bucket Policy与RAM Policy区别
维度 | Bucket Policy | RAM Policy |
配置位置 | Bucket上 | RAM身份主体上 |
管理视角 | 以资源为中心:谁可以访问此资源 | 以身份为中心:身份主体可访问哪些资源 |
匿名访问 | 支持 | 不支持 |
选择建议:授权多个用户访问同一资源时Bucket Policy更高效;管理单个用户的所有资源权限时RAM Policy更直观;需要匿名访问时只能用Bucket Policy。两者可同时使用,OSS会综合评估,都允许时请求才通过。
接入点
接入点(Access Point)为Bucket提供独立的访问入口。当一个Bucket需要被多个应用或团队以不同权限访问时,可为每个访问方创建独立的接入点,通过接入点策略(AP Policy)分别管理各自的权限,避免在单一Bucket Policy中维护复杂的规则。
每个接入点拥有独立的访问域名、AP Policy和网络限制配置。用户通过接入点访问时,需要RAM Policy与Bucket Policy的合并结果为Allow,且AP Policy也为Allow,请求才通过。
安全防护
阻止公共访问
阻止公共访问开启后,即使ACL或Bucket Policy配置了公开授权也不会生效,防止因误配置导致数据泄露。可在账号级别(作用于所有Bucket)、Bucket级别或接入点级别独立配置,优先级依次递减。
存储敏感数据且无匿名访问需求时,建议在账号级别开启此功能。
防盗链
防盗链通过校验HTTP请求头中的Referer字段,阻止未授权站点引用OSS资源。支持白名单模式(仅允许指定域名)和黑名单模式(拒绝指定域名)。适用于防止图片、视频等资源被盗用。
Referer可被伪造,如需更高安全性建议使用签名URL。
跨域设置
浏览器默认禁止网页JavaScript访问不同域名的资源。通过配置CORS规则,OSS会在响应中返回允许跨域的头信息,使浏览器放行请求。适用于前端直传文件、获取资源等场景。
授权策略语法
Bucket Policy、RAM Policy和AP Policy均使用JSON格式定义,核心元素包括:
元素 | 说明 |
Effect | 授权效果: |
Principal | 授权对象(RAM Policy不需要) |
Action | 授权操作,如 |
Resource | 授权资源范围 |
Condition | 生效条件(可选) |
完整的语法说明和Action列表请参见OSS授权语法与元素。