文档首页/ 内容分发网络 CDN/ 常见问题/ 故障相关/ 为什么OBS桶接入CDN后,访问域名会列出所有文件列表?
更新时间:2024-02-26 GMT+08:00

为什么OBS桶接入CDN后,访问域名会列出所有文件列表?

如果用户对OBS桶有读权限,就可以读取桶内对象列表。当用户请求的是CDN加速域名的时候,OBS就默认返回桶内对象列表。您可以选择以下几种方式解决:

  1. 如果您使用的是OBS公有桶,请参考以下操作步骤解决该问题:
    1. 在OBS处开启静态网站托管,操作步骤请参考配置静态网站托管
    2. 同时在CDN域名的源站配置页面勾选“静态网站托管”。
      1. 在CDN控制台域名管理页面,单击需要配置的域名。
      2. 在“基本配置”页签下“源站配置”模块,找到对应的OBS桶源站。
      3. 单击源站“操作”列的“编辑”按钮,勾选“静态网站托管”。
      4. 单击“确定”,完成配置。

        配置“静态网站托管”后,可能会因为节点缓存导致请求依然会列出桶内对象列表,此时需要刷新首页URL,请注意:

        • 建议采用“URL刷新”刷新首页URL。
        • 谨慎使用“目录刷新”,“目录刷新”会刷新目录下所有资源,造成所有请求回源,增加源站负担。
  2. 如果您使用的是OBS私有桶,您还可以通过给“CDNAccessPrivateOBS”委托创建一条拒绝列举桶内对象的策略,达到不会列出桶文件列表的目的,步骤如下:
    1. 前往IAM控制台,在左侧菜单栏选择委托,在“CDNAccessPrivateOBS”的“操作”列,单击“授权”
    2. 在授权页面单击“新建策略”,配置如下参数:
      表1 参数说明

      参数

      说明

      策略名称

      输入自定义的桶策略名称,例如:deny ListBucket。

      策略配置方式

      可视化视图。

      策略内容

      效力

      拒绝。

      云服务

      对象存储服务(OBS)。

      操作项

      在列表一栏勾选“obs:bucket:ListBucket”。

      资源

      所有资源

      请求条件

      -

    3. 单击“下一步”,进入选择策略页面。
    4. 勾选刚创建的策略,此处示例为“deny ListBucket”,单击“下一步”,进入设置最小授权范围界面。
    5. 单击“确定”,完成授权,授权后15~20分钟生效。
    6. 授权生效后,请刷新CDN缓存后重试。