访问控制
Ozone 多租户依赖 Apache Ranger 来对资源实施访问控制。
Ranger 策略
创建租户时,Ozone 会在该租户的卷上创建一组 Ranger 策略,允许以下操作:
所有用户都能创建新的存储桶;
只有存储桶所有者(即创建该存储桶的用户)和租户管理员才能访问存储桶内容。
- 注意:对于 Ozone 管理员,通常还会有其他的 Ranger 策略授予他们对集群的完全访问权限,如果有这种情况,他们同样应该能够访问这些存储桶。不过,仍然可以创建新的 Ranger 策略来明确拒绝他们访问存储桶。
Ranger 管理员负责手动添加新策略,以允许或拒绝其他任何访问模式。例如:
允许租户中的所有用户对某个存储桶拥有只读访问权限。
- 对应的 Ranger 策略 Allow Condition:
Roles = tenantName-UserRole, Permissions = READ,LIST
- 对应的 Ranger 策略 Allow Condition:
建议新增策略,而不是编辑 Ozone 创建的默认租户策略。请勿移除这些默认租户策略上的 Policy Label,否则 Ozone Manager 可能无法与 Ranger 就这些策略进行同步。
Ranger 角色
这些新的 Ranger 策略在其 Allow Conditions 中会包含相应的 Ranger 角色。
也就是说,当管理员通过 CLI 创建租户时,会创建 tenantName-UserRole 和 tenantName-AdminRole 这两个 Ranger 角色。
tenantName-UserRole 包含分配到该租户的所有用户名列表。
tenantName-AdminRole 包含分配到该租户的所有租户管理员列表。
我们使用 Ranger 角色主要是为了便于租户内的用户管理:
当有新用户被分配到租户时,Ozone Manager 只需将新用户添加到
tenantName-UserRoleRanger 角色中。当分配新的租户管理员时,Ozone Manager 只需将该用户名添加到
tenantName-AdminRoleRanger 角色中。被委派的租户管理员会勾选 "Role Admin" 复选框,而非被委派的租户管理员则不会。- Ranger 角色中的角色管理员拥有编辑该 Ranger 角色的权限。
并且由于
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 线程执行以下工作:
清理已删除租户所对应的默认租户策略。
检查默认租户角色是否失去同步(可能由 OM 在用户分配/撤销操作期间崩溃导致)。如果出现这种情况,则覆盖这些角色。
执行上一次同步以来由 Ozone 租户命令排队的所有 Ranger 更新(写入)操作(如果有的话)。
- 这意味着对于任何租户写入操作(租户创建/删除、租户用户分配/撤销/授予管理员/撤销管理员等),Ranger 的策略和角色更新都会存在延迟。
默认情况下,只有存储桶的所有者对其创建的存储桶拥有完全访问权限。其他普通用户将无法访问他们不拥有的存储桶的内容。
因此,为了在不放宽默认存储桶策略(例如允许所有租户用户对所有存储桶进行 LIST 和 READ 访问)的情况下与其他用户共享存储桶,集群管理员或租户管理员需要在 Ranger 中为该存储桶手动创建一个新的 Ozone 策略。
此外,如果集群管理员或租户管理员希望存储桶所有者(他是一名没有任何超级用户权限的普通租户用户)能够编辑该存储桶的策略,那么在 Ranger 中为该存储桶手动创建新的 Ozone 策略时,管理员需要明确授予存储桶所有者用户对该存储桶的 ALL 权限,并且勾选该策略中存储桶所有者用户的「Delegated Admin」(委派管理员)复选框。
注意:
这里必须指定实际的用户名(例如
hive)。灵活的{OWNER}标签不适用于 Ranger 的「Delegated Admin」复选框。更多技术细节请参阅:{OWNER}标签仅在 Ozone Manager(OM)执行权限检查时才有意义。在该权限检查过程中,OM 会填充此{OWNER}标签实际代表的内容。例如,假设
hive是存储桶的所有者,那么在 OM 执行存储桶列表权限检查时,{OWNER}将变成用户hive;- 补充说明:由于 OM 的分层权限检查,在此存储桶权限检查之前,假设
om是该存储桶所属父卷的所有者,那么在此次存储桶权限检查之前的卷读取权限检查中,{OWNER}将会变成用户om。
- 补充说明:由于 OM 的分层权限检查,在此存储桶权限检查之前,假设
不要将 Ranger Web UI 中的「Delegated Admin」复选框与租户委派管理员混淆。它们在概念上类似(拥有额外权限),但并不相同。
- 在策略规则中使用 Ranger 策略的「Delegated Admin」复选框时,该用户、该用户组中的用户或该角色中的用户,只要能够登录 Ranger Web UI,就可以编辑该策略。
- 租户委派管理员有权在租户中分配和撤销租户管理员。
有了这条新的 Ranger 策略,只要存储桶所有者能够登录 Ranger Web 界面,就可以自行编辑存储桶策略,例如在无需管理员手动干预的情况下,将存储桶共享给其他用户。
评论
登录后参与评论
KnowForge