为什么OBS桶接入CDN后,访问域名会列出所有文件列表?
如果用户对OBS桶有读权限,就可以读取桶内对象列表。当用户请求的是CDN加速域名的时候,OBS就默认返回桶内对象列表。您可以选择以下几种方式解决:
- 如果您使用的是OBS公有桶,请参考以下操作步骤解决该问题:
- 在OBS处开启静态网站托管,操作步骤请参考配置静态网站托管。
- 同时在CDN域名的源站配置页面勾选“静态网站托管”。
- 在CDN控制台域名管理页面,单击需要配置的域名。
- 在“基本配置”页签下“源站配置”模块,找到对应的OBS桶源站。
- 单击源站“操作”列的“编辑”按钮,勾选“静态网站托管”。
- 单击“确定”,完成配置。
配置“静态网站托管”后,可能会因为节点缓存导致请求依然会列出桶内对象列表,此时需要刷新首页URL,请注意:
- 建议采用“URL刷新”刷新首页URL。
- 谨慎使用“目录刷新”,“目录刷新”会刷新目录下所有资源,造成所有请求回源,增加源站负担。
- 如果您使用的是OBS私有桶,请参考通过CDN加速OBS视频点播页面,“通过CDN加速OBS视频点播方案介绍>实施步骤>配置OBS高级桶策略,避免私有桶内对象被匿名用户列举”完成配置。
- 如果您使用的是OBS私有桶,您还可以通过给“CDNAccessPrivateOBS”委托创建一条拒绝列举桶内对象的策略,达到不会列出桶文件列表的目的,步骤如下:
- 前往IAM控制台,在左侧菜单栏选择“操作”列,单击“授权”。 ,在“CDNAccessPrivateOBS”的
- 在授权页面单击“新建策略”,配置如下参数:
表1 参数说明 参数
说明
策略名称
输入自定义的桶策略名称,例如:deny ListBucket。
策略配置方式
可视化视图。
策略内容
效力
拒绝。
云服务
对象存储服务(OBS)。
操作项
在列表一栏勾选“obs:bucket:ListBucket”。
资源
所有资源
请求条件
-
- 单击“下一步”,进入选择策略页面。
- 勾选刚创建的策略,此处示例为“deny ListBucket”,单击“下一步”,进入设置最小授权范围界面。
- 单击“确定”,完成授权,授权后15~20分钟生效。
- 授权生效后,请刷新CDN缓存后重试。