前提条件
配置桶ACL的账号需要是桶 的拥有者,或者具备该桶的ACL写权限。
使用方式
OBS支持通过控制台、API、SDK、OBS Browser+、obsutil方式配置桶ACL。
使用OBS控制台
- 在OBS管理控制台左侧导航栏选择“桶列表”。
- 在OBS管理控制台桶列表中,单击待操作的桶,进入“对象”页面。
- 在左侧导航栏,单击“权限控制 > 桶ACL”。
- 在“桶ACL”中,支持切换公共权限(私有/公共读/公共读写),快速配置匿名用户的桶ACL访问权限。
- 公共读/公共读写权限切换私有权限,切换后除桶或对象的所有者外,其余用户无访问权限。
- 私有权限切换公共读权限,可以使任何用户在不用身份认证的情况下直接读取桶内的对象,请谨慎操作。
- 私有权限切换公共读写权限,可以使任何用户在不用身份认证的情况下直接读/写/删桶内的对象,请谨慎操作。
图1 修改公共权限
- 单击用户类型操作列的“编辑”可按照需求通过勾选相应权限对拥有者、匿名用户以及日志投递用户组赋予目标桶的ACL权限。
- 单击页面中部的“导出”,可导出桶ACLs权限信息,包含用户类型、账号、桶访问权限和ACL访问权限。
- 单击页面中部的“增加”,可对特定账号添加ACL权限。
输入特定账号的“账号ID”,并为其设定相应的ACL权限。“账号ID”可通过“我的凭证”页面查看。
单击“确定”。
勾选“桶访问权限>读取权限”,才支持勾选“对象权限>对象读权限”。
图2 添加权限
使用图形化工具OBS Browser+
- 登录OBS Browser+。
- 选中待配置的桶,单击“桶ACLs”。
- 根据需求设置目标桶的ACL权限,单击“确认”,如图3所示。
图3 配置ACL
当用户新创建一个桶时,如果不指定相应的ACL权限,OBS Browser+自动将该桶设置为仅允许桶的所有者访问,其他任何人无法访问该桶及桶内的对象。
使用命令行工具obsutil
命令结构:
- Windows操作系统
obsutil chattri obs://bucket [-sc=xxx] [-acl=xxx] [-aclXml=xxx] [-config=xxx] [-e=xxx] [-i=xxx] [-k=xxx] [-t=xxx]
- macOS/Linux操作系统
./obsutil chattri obs://bucket [-sc=xxx] [-acl=xxx] [-aclXml=xxx] [-config=xxx] [-e=xxx] [-i=xxx] [-k=xxx] [-t=xxx]
运行示例:
参数说明:
参数 |
约束 |
描述 |
bucket |
必选 |
桶名。 |
sc |
附加参数,可选 |
桶的默认存储类型。支持的值:
- standard:标准存储,访问时延低、吞吐量高,适用于有大量热点文件(平均一个月多次)或小文件(小于1MB)。
- warm:低频访问存储,可用性略低于standard,适用于不频繁访问(平均一年少于12次)但在需要时也要求快速访问数据的业务场景。
- cold:归档存储,安全、持久且成本极低,适用于很少访问(平均一年访问一次)数据的业务场景。
- deep-archive:深度归档存储(受限公测),适用于长期不访问(平均几年访问一次)数据的业务场景,其成本相比归档存储更低,但相应的数据恢复时间将更长,一般为数小时。
说明:
如果桶的可用区是多AZ,则不支持修改其默认存储类型为cold。
|
acl |
附加参数,可选 |
桶的预定义访问策略。支持的值:
- private
- public-read
- public-read-write
说明:
以上三个值分别对应:私有读写、公共读、公共读写,三种预定义访问策略。
|
aclXml |
附加参数,可选 |
桶的访问策略(xml格式表示)。
<AccessControlPolicy>
<Owner>
<ID>ownerid</ID>
</Owner>
<AccessControlList>
<Grant>
<Grantee>
<ID>userid</ID>
</Grantee>
<Permission>[WRITE|WRITE_ACP|READ|READ_ACP|FULL_CONTROL]</Permission>
</Grant>
<Grant>
<Grantee>
<Canned>Everyone</Canned>
</Grantee>
<Permission>[WRITE|WRITE_ACP|READ|READ_ACP|FULL_CONTROL]</Permission>
</Grant>
</AccessControlList>
</AccessControlPolicy>
说明:
- Owner节点为可选,指定桶拥有者ID。
- AccessControlList节点下的Grant子节点包含被授权的用户列表,Grantee子节点指定被授权用户的ID,Canned子节点指定被授权的用户组(当前仅支持Everyone)。
- 可支持被授予的权限有:WRITE(写权限)、WRITE_ACP(写ACL权限)、READ(读权限)、READ_ACP(读ACL权限)和FULL_CONTROL(完全控制权限)。
须知:
由于该参数值必定含有<和>,作为命令运行时,必须使用引号转义(macOS/Linux操作系统使用单引号,Windows操作系统使用双引号)。
|
config |
附加参数,可选 |
运行当前命令时的自定义配置文件,可支持的配置参数请参考配置参数说明。 |
e |
附加参数,可选 |
指定终端节点。 |
i |
附加参数,可选 |
指定用户的AK。 |
k |
附加参数,可选 |
指定用户的SK。 |
t |
附加参数,可选 |
指定用户的securitytoken。 |
每次命令只能选择设置sc、acl和aclXml中的一个。
后续操作
通过桶ACL授予指定账号一定权限后,被授权用户即可使用自己的身份凭证(访问密钥AK和SK)通过OBS Browser+挂载外部桶的方式访问该桶。
授予匿名用户一定权限后,匿名用户可以在不经过任何身份认证的情况下访问该桶。此处的匿名用户可以是注册用户,也可以是非注册用户。注册用户可以直接通过以上两种方式访问桶,而非注册用户一般可以通过以下方式访问桶:
- 通过桶的访问域名,在浏览器中直接打开,可以查看到桶内对象列表。
- 通过在第三方系统配置桶的访问域名,与桶直接对接。