存储桶
所有者
登录后可跨设备保存划线和私人笔记登录
1. 概述
Ozone 中的每个存储桶都具有一个 owner(属主) 属性,用于标识拥有该存储桶的用户。一个存储桶只有一个属主。存储桶属主在访问控制和属性管理中发挥着重要作用,尤其是在使用 Ozone 原生 ACL 授权时。
2. 设置存储桶属主
创建存储桶时
创建存储桶时,可以使用 --user 或 -u 命令行选项显式指定属主:
ozone sh bucket create /myvolume/mybucket --user alice如果创建时未指定所有者,所有者将根据认证方式使用默认值:
- S3 认证: 所有者默认为由 S3 访问 ID 派生出的短用户名。
- 标准认证: 所有者默认为当前用户的短用户名(
UserGroupInformation.getCurrentUser().getShortUserName())。
示例:
# Create bucket without specifying owner (defaults to current user)
$ ozone sh bucket create /myvol1/buck1
$ ozone sh bucket info /myvol1/buck1
{
"volumeName" : "myvol1",
"name" : "buck1",
"owner" : "om",
...
}更改存储桶所有权
创建后,可以使用存储桶更新命令更改存储桶所有者:
ozone sh bucket update <volume>/<bucket> --user <new_owner>或者使用简写形式:
ozone sh bucket update <volume>/<bucket> -u <new_owner>示例:
$ ozone sh bucket update /myvol1/buck1 --user bob
{
"volumeName" : "myvol1",
"name" : "buck1",
"owner" : "bob",
"modificationTime" : "2026-01-25T16:06:38.516Z",
...
}更改所有者的要求:
- 权限: 启用 Ozone ACL 时,尝试更改所有者的用户必须拥有该存储桶的
WRITE_ACL权限。这确保只有授权用户才能转移所有权。
所有者与 ACL:
通过 ozone sh bucket update -u <new_owner> 更改存储桶所有者只会更新所有权元数据,不会自动修改 ACL。原所有者的 ACL 条目保持不变。如果需要完全撤销原所有者的访问权限,必须使用 ACL 更新命令单独管理 ACL。
3. 存储桶所有者权限
属性更新
使用 Ozone 原生 ACL 授权时,存储桶所有者可以更新存储桶属性。存储桶属性包括:
- 存储类型
- 版本控制
- 加密设置
- 配额(空间配额和命名空间配额)
- 存储桶布局
- 其他存储桶元数据
访问控制检查:
对于原生 ACL 授权,存储桶属性更新的权限授予给:
- 管理员
- 存储桶所有者
对于 Ranger 授权,存储桶属性更新由 Ranger 策略决定。
4. 存储卷所有者与存储桶所有者
存储卷所有者权限:
存储卷所有者比存储桶所有者拥有更广泛的权限:
- 存储卷所有者对其存储卷内的所有资源(存储桶、键、前缀)绕过 ACL 检查。
- 存储卷所有者对其存储卷内的所有存储桶拥有隐式访问权限,不受存储桶所有权或 ACL 的限制。
存储桶所有者权限:
存储桶所有者的权限较为有限:
- 存储桶所有者可以更新存储桶属性(使用原生 ACL 授权时)。
- 存储桶所有者不会绕过存储桶内键或前缀的 ACL 检查。
- 存储桶所有权主要用于属性管理,而非用于绕过访问控制。
note
在访问控制决策中,存储卷所有权优先于存储桶所有权。如果用户是存储卷所有者,则无论存储桶所有权如何,他们都拥有完全访问权限。
评论
登录后参与评论
正在加载评论…
KnowForge