开发者社区 问答 正文

OSS的ACL验证流程是什么?


OSS访问的安全性


对OSS的HTTP请求可以根据是否携带身份验证信息分为两种请求。一种是带身份验证的请求,一种是不带身份验证的匿名请求。带身份验证的请求有如下两种情况:

  • 请求头部中带Authorization,格式为OSS + AccessKeyId + 签名字符串。
  • 请求的URL中带OSS AccessKeyId和Signature字段。


OSS访问验证流程



匿名请求访问流程


  1. 用户的请求被发送到OSS的HTTP服务器上。

  2. OSS根据URL解析出Bucket和Object。

  3. OSS检查Object是否设置了ACL。
    • 如果没有设置ACL,那么继续 [backcolor=transparent]4。
    • 如果设置了ACL,则判断Object的ACL是否允许匿名用户访问。允许则跳到[backcolor=transparent]5。
    • 不允许则拒绝请求,请求结束。

  • OSS判断Bucket的ACL是否允许匿名用户访问。
    • 允许则继续[backcolor=transparent]5。
    • 不允许则返回,请求结束。

  • 权限验证通过,返回Object的内容给用户。



  • 带身份验证请求访问流程


    1. 用户的请求被发送到OSS的HTTP服务器上。

    2. OSS根据URL解析出Bucket和Object。

    3. OSS根据请求的OSS的AccessKeyId获取请求者的相关身份信息,进行身份鉴权。
      • 如果未获取成功,则返回,请求结束。
      • 如果获取成功,但请求者不被允许访问此资源,则返回,请求结束。
      • 如果获取成功,但OSS端根据请求的HTTP参数,计算的签名和请求发送的签名字符串不匹配,则返回,请求结束。
      • 如果身份鉴权成功,那么继续[backcolor=transparent]4。

  • OSS检查Object是否设置了ACL。
    • 如果Object没有设置ACL,那么继续[backcolor=transparent]5。
    • 如果Object设置了ACL,OSS判断Object的ACL是否允许匿名用户访问。允许则跳到[backcolor=transparent]6。
    • 不允许则拒绝请求,请求结束。

  • OSS判断Bucket的ACL是否允许匿名用户访问。
    • 允许则继续[backcolor=transparent]6。
    • 不允许则返回,请求结束。

  • 权限验证通过,返回Object的内容给用户。



  • 带身份验证访问OSS的三种方法


    • 使用控制台访问OSS:控制台中对用户隐藏了身份验证的细节,使用控制台访问OSS的用户无需关注细节。

    • 使用SDK访问OSS:OSS提供了多种开发语言的SDK,SDK中实现了签名算法,只需要将AK信息作为参数输入即可。

    • 根据API访问OSS:如果您想用自己喜欢的语言来封装调用RESTful API接口,您需要实现签名算法来计算签名。具体的签名算法可以参考API手册中的 在Header中包含签名在URL中包含签名

    关于AccessKey相关的解释及更详细的身份验证的操作请参见 访问控制

    展开
    收起
    青衫无名 2017-10-17 15:12:39 3079 分享 版权
    阿里云 AI 助理回答

    阿里云对象存储(OSS)在设计上充分考虑了安全性,确保用户数据既能够被合法访问,又能有效防止未授权的访问。您提到的两种请求类型和相应的访问验证流程,正是OSS实现安全控制的核心机制。

    匿名请求访问流程

    对于匿名请求,即不携带任何身份验证信息的请求,OSS会根据Bucket和Object的访问控制列表(ACL)来决定是否允许访问。如果Bucket或Object的ACL设置为允许公共读取,那么请求会被接受,否则请求会被拒绝。这一机制适用于那些希望公开分享某些资源的场景,比如网站的静态资源、公开的数据集等。

    带身份验证请求访问流程

    带身份验证的请求则更加安全,它要求每个请求都必须包含有效的签名信息,这个签名是基于用户的AccessKey ID、私有密钥(SecretAccessKey)、请求方法、请求时间以及其他请求参数计算得出的。通过这种方式,即使请求被截获,没有正确的密钥也无法伪造有效的请求。OSS服务器会对收到的签名进行验证,只有当签名匹配且请求者拥有相应权限时,请求才会被处理。这一步骤确保了即使是内部人员,也只有获得授权的用户才能访问特定的资源。

    带身份验证访问OSS的三种方法

    1. 使用控制台访问OSS:阿里云提供的管理控制台对用户友好,隐藏了复杂的签名过程,用户只需登录阿里云账号即可操作OSS资源。
    2. 使用SDK访问OSS:阿里云提供了多种语言的SDK,如Java、Python、Node.js等,这些SDK内置了签名算法,开发者只需提供AccessKey ID和SecretAccessKey,SDK会自动处理签名,简化开发工作。
    3. 直接调用RESTful API:对于更高级的定制需求,开发者可以按照OSS API文档手动实现签名逻辑,并直接调用API接口。虽然这种方式较为复杂,但提供了最大的灵活性。

    AccessKey管理

    AccessKey是访问阿里云服务的重要凭证,包括AccessKey ID和SecretAccessKey两部分。为了保证安全性,建议: - 不要在代码中硬编码AccessKey,尤其是SecretAccessKey。 - 定期轮换AccessKey。 - 限制AccessKey的权限范围,遵循最小权限原则。 - 使用RAM(Resource Access Management)创建子账号并分配特定权限,避免使用主账号的AccessKey。

    通过上述措施,阿里云OSS确保了数据访问的安全性,同时兼顾了使用的便利性和灵活性。

    有帮助
    无帮助
    AI 助理回答生成答案可能存在不准确,仅供参考
    0 条回答
    写回答
    取消 提交回答