存储桶

所有者

师成师成· 更新于 2026-09-28· 阅读 4 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

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

在访问控制决策中,存储卷所有权优先于存储桶所有权。如果用户是存储卷所有者,则无论存储桶所有权如何,他们都拥有完全访问权限。

评论

登录后参与评论

正在加载评论…