S3 多租户

访问控制

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

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

Ozone 多租户依赖 Apache Ranger 来对资源实施访问控制。

Ranger 策略

创建租户时,Ozone 会在该租户的卷上创建一组 Ranger 策略,允许以下操作:

  1. 所有用户都能创建新的存储桶;

  2. 只有存储桶所有者(即创建该存储桶的用户)和租户管理员才能访问存储桶内容。

    • 注意:对于 Ozone 管理员,通常还会有其他的 Ranger 策略授予他们对集群的完全访问权限,如果有这种情况,他们同样应该能够访问这些存储桶。不过,仍然可以创建新的 Ranger 策略来明确拒绝他们访问存储桶。

Ranger 管理员负责手动添加新策略,以允许或拒绝其他任何访问模式。例如:

  • 允许租户中的所有用户对某个存储桶拥有只读访问权限。

    • 对应的 Ranger 策略 Allow Condition:Roles = tenantName-UserRole, Permissions = READ,LIST

建议新增策略,而不是编辑 Ozone 创建的默认租户策略。请勿移除这些默认租户策略上的 Policy Label,否则 Ozone Manager 可能无法与 Ranger 就这些策略进行同步。

Ranger 角色

这些新的 Ranger 策略在其 Allow Conditions 中会包含相应的 Ranger 角色。

也就是说,当管理员通过 CLI 创建租户时,会创建 tenantName-UserRole 和 tenantName-AdminRole 这两个 Ranger 角色。

tenantName-UserRole 包含分配到该租户的所有用户名列表。

tenantName-AdminRole 包含分配到该租户的所有租户管理员列表。

我们使用 Ranger 角色主要是为了便于租户内的用户管理:

  1. 当有新用户被分配到租户时,Ozone Manager 只需将新用户添加到 tenantName-UserRole Ranger 角色中。

  2. 当分配新的租户管理员时,Ozone Manager 只需将该用户名添加到 tenantName-AdminRole Ranger 角色中。被委派的租户管理员会勾选 "Role Admin" 复选框,而非被委派的租户管理员则不会。

    • Ranger 角色中的角色管理员拥有编辑该 Ranger 角色的权限。
  3. 并且由于 tenantName-AdminRole 是 tenantName-UserRole 的 "Role Admin",因此 tenantName-AdminRole 中的任何用户都自动拥有向该租户添加新用户的权限,这意味着所有租户管理员(无论是否被委派)都拥有在该租户中分配和撤销用户的权限。

warning

请勿手动编辑 Ozone 创建的任何 Ranger 角色。对它们的任何更改都会被 Ozone Manager 的 Ranger 同步线程覆盖。租户成员关系的更改应使用 tenant CLI 命令来完成。

Ranger 同步

已实现一个 Ranger Sync 线程,用于在 Ozone Manager 于租户管理操作期间崩溃时,将 Ranger 的策略和角色状态与 Ozone Manager 数据库保持同步。

Ranger Sync 线程执行以下工作:

  1. 清理已删除租户所对应的默认租户策略。

  2. 检查默认租户角色是否失去同步(可能由 OM 在用户分配/撤销操作期间崩溃导致)。如果出现这种情况,则覆盖这些角色。

  3. 执行上一次同步以来由 Ozone 租户命令排队的所有 Ranger 更新(写入)操作(如果有的话)。

    • 这意味着对于任何租户写入操作(租户创建/删除、租户用户分配/撤销/授予管理员/撤销管理员等),Ranger 的策略和角色更新都会存在延迟。

默认情况下,只有存储桶的所有者对其创建的存储桶拥有完全访问权限。其他普通用户将无法访问他们不拥有的存储桶的内容。

因此,为了在不放宽默认存储桶策略(例如允许所有租户用户对所有存储桶进行 LIST 和 READ 访问)的情况下与其他用户共享存储桶,集群管理员或租户管理员需要在 Ranger 中为该存储桶手动创建一个新的 Ozone 策略。

此外,如果集群管理员或租户管理员希望存储桶所有者(他是一名没有任何超级用户权限的普通租户用户)能够编辑该存储桶的策略,那么在 Ranger 中为该存储桶手动创建新的 Ozone 策略时,管理员需要明确授予存储桶所有者用户对该存储桶的 ALL 权限,并且勾选该策略中存储桶所有者用户的「Delegated Admin」(委派管理员)复选框。

注意:

  1. 这里必须指定实际的用户名(例如 hive)。灵活的 {OWNER} 标签不适用于 Ranger 的「Delegated Admin」复选框。更多技术细节请参阅:

    • {OWNER} 标签仅在 Ozone Manager(OM)执行权限检查时才有意义。在该权限检查过程中,OM 会填充此 {OWNER} 标签实际代表的内容。

      • 例如,假设 hive 是存储桶的所有者,那么在 OM 执行存储桶列表权限检查时,{OWNER} 将变成用户 hive;

        • 补充说明:由于 OM 的分层权限检查,在此存储桶权限检查之前,假设 om 是该存储桶所属父卷的所有者,那么在此次存储桶权限检查之前的卷读取权限检查中,{OWNER} 将会变成用户 om。
  2. 不要将 Ranger Web UI 中的「Delegated Admin」复选框与租户委派管理员混淆。它们在概念上类似(拥有额外权限),但并不相同。

    • 在策略规则中使用 Ranger 策略的「Delegated Admin」复选框时,该用户、该用户组中的用户或该角色中的用户,只要能够登录 Ranger Web UI,就可以编辑该策略。
    • 租户委派管理员有权在租户中分配和撤销租户管理员。

有了这条新的 Ranger 策略,只要存储桶所有者能够登录 Ranger Web 界面,就可以自行编辑存储桶策略,例如在无需管理员手动干预的情况下,将存储桶共享给其他用户。

评论

登录后参与评论

正在加载评论…