赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 对象存储
  4. 操作指南
  5. 权限控制
  6. OSS鉴权详解

OSS鉴权详解

  • 权限控制
  • 发布于 2025-04-21
  • 0 次阅读
文档编辑
文档编辑

默认情况下,OSS资源(包括Bucket和Object)默认为私有权限。只有资源拥有者或被授权的用户可以访问这些资源。您可以通过多种权限控制策略授权他人访问或使用您的OSS资源。只有通过OSS鉴权,才能访问授权资源。

请求类型

请求类型分为非匿名请求和匿名请求两种。

  • 非匿名请求

    在请求头部或在请求URL中携带和身份相关的签名信息。

  • 匿名请求

    在请求头部或在请求URL中未携带任何和身份相关的信息。

非匿名请求鉴权

鉴权说明

收到用户非匿名请求时,OSS会通过身份验证、基于角色的会话策略、基于身份的策略(RAM Policy)、Bucket Policy、Object ACL、Bucket ACL等鉴权结果来判断是允许或拒绝该请求。

image

以上鉴权流程包含的权限状态说明如下:

  • Allow:允许访问请求,即比对Policy命中了Allow规则。

  • Explicit Deny:显式拒绝访问请求,即比对Policy命中了Deny规则。

  • Implicit Deny:隐式拒绝访问请求,即Policy不存在、比对Policy未命中Allow或Deny规则。

鉴权流程

带身份验证的鉴权流程如下:

  1. 检查身份验证是否成功。

    收到用户请求后,OSS会对请求携带的签名和服务端计算的签名进行比对。

    • 不匹配:拒绝访问。

    • 匹配:判断是否为基于角色的会话策略。

  2. 判断是否为基于角色的会话策略。

    是:OSS对Session Policy进行权限比对。

    • Explicit Deny或Implicit Deny:拒绝访问。

    • Allow:继续检查RAM Policy和Bucket Policy。

    否:继续检查RAM Policy和Bucket Policy。

  3. 检查RAM Policy和Bucket Policy。

    1. RAM Policy是基于身份的策略。您可以使用RAM Policy控制用户可以访问您名下哪些资源的权限。对于用户级别的访问,需要根据请求的账号类别判断允许或拒绝访问请求。

      • 阿里云账号AccessKey:直接返回Implicit Deny。

      • RAM用户AccessKey或STS的AccessKey:Bucket不属于阿里云账号或者RAM角色Owner 时,直接返回Implicit Deny。

      • RAM服务鉴权接口对普通请求进行身份鉴权:Allow、Explicit Deny或Implicit Deny。

    2. Bucket Policy是基于资源的授权策略,Bucket Owner可以通过Bucket Policy为RAM用户或其他账号授权Bucket或Bucket内资源精确的操作权限。

      • 未设置:直接返回Implicit Deny。

      • 设置:返回结果为Allow、Explicit Deny或Implicit Deny。

  4. 检查合并结果中是否存在Explicit Deny策略。

    • 存在Explicit Deny:拒绝访问。

    • 不存在Explicit Deny:检查是否存在Allow策略。

      • 检查RAM Policy或Bucket Policy中是否存在Allow策略。

        • 存在:允许访问。

        • 不存在:判断请求来源。

          • 判断请求来源。

            • 管控类API请求:拒绝访问。

            • 数据类API请求:继续进行Object ACL或Bucket ACL的鉴权。

              • 管控类API请求包括Service操作(GetService (ListBuckets))、Bucket相关操作(例如PutBucket、GetBucketLifecycle等)、LiveChannel相关操作(例如PutLiveChannel、DeleteLiveChannel等)。

              • 数据类API请求包括Object相关操作,例如PutObject、GetObject等。

  • 鉴权Object ACL和Bucket ACL。

    根据Object ACL进行鉴权时,需要结合请求用户是否为Bucket Owner以及请求类型为读请求或写请求进行判断。

    • Allow:允许访问。

    • Deny:拒绝访问。

    如果Object ACL为继承Bucket,则继续检查Bucket ACL。

    根据Bucket ACL进行鉴权时,需要结合请求用户是否为Bucket Owner进行判断。

    • Allow:允许访问。

    • Deny:拒绝访问。

匿名请求鉴权

鉴权说明

收到用户匿名请求时,OSS会跳过身份验证、基于角色的会话策略、RAM Policy等鉴权步骤,只根据Bucket Policy、Object ACL以及Bucket ACL进行鉴权。

image

鉴权流程

匿名请求鉴权流程如下:

  1. 检查Bucket Policy。

    • Deny:拒绝访问。

    • Allow:允许访问。

    • Ignore:继续检查Object ACL。

  2. 检查Object ACL和Bucket ACL。

    • 如果Object ACL为私有:Deny,拒绝访问。

    • 如果Object ACL为公共读或公共读写:Allow,允许访问。

    • 如果Object ACL为继承Bucket,则继续检查Bucket ACL。

      • 如果Bucket ACL为公共读或公共读写:Allow,允许访问。

      • 如果Bucket ACL为私有:Deny,拒绝访问。

相关文章

OSS鉴权详解 2025-04-21 18:16

默认情况下,OSS资源(包括Bucket和Object)默认为私有权限。只有资源拥有者或被授权的用户可以访问这些资源。您可以通过多种权限控制策略授权他人访问或使用您的OSS资源。只有通过OSS鉴权,才能访问授权资源。 请求类型

阻止公共访问 2025-04-21 18:16

OSS支持通过设置Bucket Policy和ACL来实现公共访问。公共访问无需特定权限或身份验证,容易引发数据泄露和外网下行流量的风险。OSS支持在OSS全局、单个Bucket、单个接入点和单个对象FC接入点的维度一键开启阻止公共访问,以避免公共访问可能带来的风险。开启后,已有的公共访问权限会被忽

设置Bucket ACL 2025-04-21 18:16

当您希望粗粒度地控制某个Bucket的读写权限,即Bucket内的所有Object均为统一的读写权限时,您可以选择使用Bucket ACL的方式。Bucket ACL包含公共读、公共读写和私有。您可以在创建Bucket时设置Bucket ACL,也可以在创建Bucket后根据自身的业务需求修改Buc

设置Object ACL 2025-04-21 18:16

您可以使用Object ACL为Bucket中的某个Object设置特定的读写权限。Object ACL可以精确控制某个Object的访问权限,不影响其他Object。Object ACL包含公共读、公共读写、私有三种类型。您可以在上传Object时设置ACL,也可以在上传后随时修改。

Bucket Policy 2025-04-21 18:16

OSS支持面向资源的授权方式,允许在Bucket级别而不是用户级别设置权限策略。使用Bucket Policy可以授权当前云账号或者其他阿里云账号下单个或多个RAM用户、RAM角色等访问Bucket内的指定资源。Bucket Policy除提供策略语法的授权方式以外,还提供了图形化界面的授权方式,助

Bucket Policy常见示例 2025-04-21 18:16

Bucket Policy是OSS提供的一种针对存储空间(Bucket)的授权策略,使您可以精细化地授权或限制有身份的访问者(阿里云账号、RAM用户、RAM角色)或匿名访问者对指定OSS资源的访问。例如,您可以为其他阿里云账号的RAM用户授予指定OSS资源的只读权限。 通用说明 与RAM Polic

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号