S3 多租户

概述

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

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

在 Ozone 多租户功能出现之前,所有对 Ozone 的 S3 访问(通过 S3 Gateway)都被限制在单一指定的 S3 卷中(即默认的卷 s3v)。

Ozone 多租户允许创建多个可通过 S3 访问的卷。每个卷可以由各自的租户管理员分别管理:通过 CLI 进行用户操作,通过 Apache Ranger 进行访问控制。

多租户为 Ozone 引入了租户的概念。每个租户都有自己的指定卷。分配到某个租户的每个用户,都可以使用一对 Access ID 与 Secret Key 来访问相应的卷,这对密钥在 Ozone 集群管理员或租户管理员使用 CLI 将该用户分配到租户时生成。

note

该多租户功能允许将 Ozone 资源划分到不同的隔离区域(租户)中。

这种多租户支持还允许用户通过 AWS S3 API 访问 Ozone 卷(无需对 API 做任何修改)。

基础知识

  1. 初始租户的创建必须由 Ozone 集群管理员通过 CLI 完成。

  2. Ozone 集群管理员必须分配该租户的第一个用户。分配完成后,会为该用户生成一对 Access ID 与 Secret Key(密钥对),以便通过 S3 Gateway 进行访问。

    • 该密钥对用于通过来自 S3 Gateway 的客户端请求,向 Ozone Manager 认证终端用户。系统会根据 Access ID 选择租户卷。

    • 认证成功后,Ozone Manager 使用底层用户名(而非 Access ID)来识别用户。用户名用于在 Apache Ranger 中执行授权检查。

    • 密钥对与其被分配的用户名绑定。如果一个用户在多个租户中被分配了密钥对,那么所有密钥对在 Ozone Manager 内部都指向同一个用户名。

    • 在同一个租户中,一个用户只能被分配一对密钥对。如果用户已被分配到同一租户(即该用户在此租户中已拥有 Access ID),Ozone Manager 会拒绝再次分配租户用户的请求。

    • 一个用户可以被分配到多个租户。该用户访问每个租户时会使用不同的密钥对。例如,testuser 可以使用 tenantone$testuser 访问 tenantone 的存储桶,使用 tenanttwo$testuser 通过 S3 Gateway 访问 tenanttwo 的存储桶。

      • 如果需要跨租户(跨卷)访问,可以设置存储桶链接。请参阅创建存储桶链接章节。
  3. Ozone 集群管理员随后可以将租户管理员角色分配给该用户。

  4. 租户管理员能够将新用户分配到租户。

    • 如果他们是被委派的租户管理员(这是默认情况),他们甚至可以在其租户中分配新的租户管理员。
    • 请注意,租户管理员仍然需要使用 Ozone 租户 CLI 来将新用户分配到租户。
  • 一旦租户管理员获取到 Kerberos TGT(通过 kinit),他们就可以运行 user assign 命令来分配新用户。Ozone Manager 会识别出他们是租户管理员,并允许其在自己的租户内执行该操作。
  1. 之后,用户可以使用任意 S3 兼容客户端(awscli、Python boto3 库等),通过 S3 Gateway 使用生成的密钥对访问租户卷中的存储桶。

后续步骤

参考资料

面向开发者:请查看上游 Jira HDDS-4944 及所附的设计文档。

评论

登录后参与评论

正在加载评论…