OSS的访问

OSS访问的URL

OSS是基于HTTP API的对象存储,用户在进行所有的操作的时候都需要指定访问的OSS资源, 这个资源可以是Bucket,也可以是Object。在访问的时候,是以URL的形式来表示OSS的资源的。 OSS的URL构成

<Schema>://<Bucket>.<Endpoint>/<Object> 三级域名访问方式

Schema:值为HTTP或者为HTTPS
Bucket:用户的OSS存储空间
Endpoint:用户的Bucket所在数据中心的访问域名
Object:用户上传在OSS上的文件

注意

  1. 这里的Endpoint需要和Bucket所在的数据中心(Region)一致。也就是说:如果Bucket创建在杭州,就需要使用杭州的Endpoint,不能使用其他区域的Endpoint。
  2. ECS访问OSS可以使用同区域OSS的内网Endpoint。 Region和对应Endpoint的列表可以参考访问域名。

假如用户使用HTTPS请求杭州的OSS,Bucket名字叫oss-sample, Object名字叫mytest/oss-test-object, 那么用户访问的三级域名为:

https://oss-sample.oss-cn-hangzhou.aliyuncs.com/mytest/oss-test-object

用户可以直接将Object的URL链接放入HTML中使用,如下所示:

<img src="https://oss-example.oss-cn-hangzhou.aliyuncs.com/aliyun-logo.png" />

OSS访问的安全性

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

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

OSS访问验证流程

匿名请求访问流程

  1. 用户的请求被发送到OSS的HTTP服务器上。
  2. OSS根据URL解析出Bucket和Object。
  3. 如果Object没有设置ACL,那么继续4;否则判断Object的ACL是否允许匿名用户访问,允许则跳到5,不允许则拒绝请求,请求结束。
  4. 判断Bucket的ACL是否允许匿名用户访问,不允许则返回,请求结束。
  5. 权限验证通过,返回Object的内容给用户。

带身份验证请求访问流程

  1. 用户的请求被发送到OSS的HTTP服务器上。
  2. OSS根据URL解析出Bucket和Object。
  3. OSS根据请求的OSS的AccessKeyId获取请求者的相关身份信息,如果未获取成功,则返回,请求结束。如果获取成功,但请求者不被允许访问此资源,则返回,请求结束。如果获取成功,但OSS端根据请求的HTTP参数,计算的签名和请求发送的签名字符串不匹配,则返回,请求结束。
  4. 如果Object没有设置ACL,那么继续5;否则判断Object的ACL是否允许匿名用户访问,允许则跳到6,不允许则拒绝请求,请求结束。
  5. 判断Bucket的ACL是否允许匿名用户访问,不允许则返回,请求结束。
  6. 权限验证通过,返回Object的内容给用户。

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

  • 使用控制台访问OSS: 控制台中对用户隐藏了身份验证的细节,使用控制台访问OSS的用户无需关注细节。
  • 使用SDK访问OSS: OSS提供了多种开发语言的SDK,SDK中实现了签名算法,只需要将AK信息作为参数输入即可。
  • 根据API访问OSS: 如果您想用自己喜欢的语言来封装调用REST API接口,您需要实现签名算法来计算签名。具体的签名算法可以参考API Reference中的在Header中包含签名和在URL中包含签名。

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

results matching ""

    No results matching ""