内容分发网络 CDN-为什么OBS桶接入CDN后,访问域名会列出所有文件列表?

时间:2023-11-17 17:15:36

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

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

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

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

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

      参数

      说明

      策略名称

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

      策略配置方式

      可视化视图。

      策略内容

      效力

      拒绝。

      云服务

      对象存储服务 (OBS)。

      操作项

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

      资源

      所有资源

      请求条件

      -

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