安全管理

访问控制

师成师成· 更新于 2026-09-29· 阅读 11 分钟· 0 次阅读

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

基于角色的访问控制

本节介绍 Apache Polaris 的访问控制工作原理。

Polaris 使用基于角色的访问控制(RBAC)模型,由 Polaris 管理员将访问权限授予目录角色,然后通过将目录角色分配给主体角色,向主体授予对资源的访问权限。

ℹ️ 信息

对于需要外部策略管理或与现有策略基础设施集成的高级授权场景,Polaris 支持与外部策略决策点(PDP)集成,例如 Open Policy Agent(OPA)。有关更多信息,请参阅外部策略决策点。

以下是理解 Polaris 访问控制的关键概念:

  • 可保护对象
  • 主体角色
  • 目录角色
  • 权限

可保护对象

可保护对象是指可以被授予访问权限的对象。Polaris 包含以下可保护对象:

  • 目录(Catalog)
  • 命名空间
  • Iceberg 表
  • 视图
  • 策略

主体角色

主体角色是 Polaris 中的一种资源,可用于将 Polaris 主体在逻辑上分组,并授予对可保护对象的权限。

Polaris 支持主体与主体角色之间的多对多关系。例如,要将相同的权限授予多个主体,可以将单个主体角色分配给这些主体。同样,一个主体也可以被授予多个主体角色。

你不会直接向主体角色授予权限。相反,你在目录角色级别配置对象权限,然后再将目录角色授予主体角色。

下表展示了你可能会在 Polaris 中配置的主体角色示例:

主体角色名称描述
Data_engineer授予多个主体以运行数据工程作业的角色。
Data_scientist授予多个主体以运行数据科学或 AI 作业的角色。

目录角色

目录角色隶属于 Polaris 中的特定目录资源,用于指定对目录或目录内对象(如目录的命名空间或表)执行操作的一组权限。你可以为一个目录创建一个或多个目录角色。

你先向目录角色授予权限,然后将该目录角色授予主体角色,从而将权限赋予一个或多个主体。

Polaris 同样支持目录角色与主体角色之间的多对多关系。你可以将同一个目录角色授予一个或多个主体角色。同样,一个主体角色也可以被授予一个或多个目录角色。

下表展示了你可能会在 Polaris 中配置的目录角色示例:

示例目录角色描述

目录管理员
一个被授予了多项权限、从而拥有对目录完全访问权限的角色。
被授予此角色的主体角色可以在该目录中创建、修改、读取、写入和删除表。

目录读取者
一个被授予了对目录中表的只读权限的角色。
被授予此角色的主体角色可以在该目录中读取表。

目录贡献者
一个被授予了对属于该目录的所有表的读写访问权限的角色。
被授予此角色的主体角色可以在该目录中对表执行读写操作。

RBAC 模型

下图展示了 Polaris 所使用的 RBAC 模型。对于每个目录,Polaris 管理员将访问权限授予目录角色,然后通过将目录角色分配给主体角色来授予主体对资源的访问权限。Polaris 支持主体与主体角色之间的多对多关系。

展示 Apache Polaris RBAC 模型的示意图。

访问控制权限

本节介绍 Polaris 访问控制模型中可用的权限。权限被授予目录角色,目录角色被授予主体角色,主体角色再被授予主体,以此指定主体可以对 Polaris 中的对象执行哪些操作。

若要授予某个对象的全部权限(删除、列出、读取、写入等),可以使用完整权限选项。

表权限

权限说明
TABLE_CREATE允许在目录中注册表。
TABLE_DROP允许从目录中删除表。
TABLE_LIST允许列出目录中的任意表。
TABLE_READ_PROPERTIES允许读取表的属性。
TABLE_WRITE_PROPERTIES允许配置表的属性。
TABLE_READ_DATA允许通过从目录获取短期只读存储凭据来读取表中的数据。
TABLE_WRITE_DATA允许通过从目录获取短期读写存储凭据来写入表中的数据。
TABLE_FULL_METADATA授予除 TABLE_READ_DATA 和 TABLE_WRITE_DATA 之外的所有表权限,这两个权限需要单独授予。
TABLE_ATTACH_POLICY允许为表附加策略。
TABLE_DETACH_POLICY允许从表上分离策略。

视图权限

权限说明
VIEW_CREATE允许在目录中注册视图。
VIEW_DROP允许从目录中删除视图。
VIEW_LIST允许列出目录中的任意视图。
VIEW_READ_PROPERTIES允许读取视图的所有属性。
VIEW_WRITE_PROPERTIES允许配置视图的属性。
VIEW_FULL_METADATA授予所有视图权限。

⚠️ 警告

表属性和视图属性属于可读取的元数据。拥有 TABLE_READ_PROPERTIES / TABLE_FULL_METADATA 或 VIEW_READ_PROPERTIES / VIEW_FULL_METADATA 的主体可以读取它们。请勿在表属性或视图属性中存储密码、令牌、访问密钥或其他机密信息。

命名空间权限

权限描述
NAMESPACE_CREATE允许在目录(catalog)中创建命名空间。
NAMESPACE_DROP允许从目录中删除该命名空间。
NAMESPACE_LIST允许列出命名空间中的任何对象,包括嵌套的命名空间和表。
NAMESPACE_READ_PROPERTIES允许读取所有命名空间属性。
NAMESPACE_WRITE_PROPERTIES允许配置命名空间属性。
NAMESPACE_FULL_METADATA授予所有命名空间权限。
NAMESPACE_ATTACH_POLICY允许将策略附加到命名空间。
NAMESPACE_DETACH_POLICY允许从命名空间解除策略。

目录权限

权限描述

CATALOG_MANAGE_ACCESS包含向目录角色授予或撤销目录中对象权限的能力,以及向主体角色授予或撤销目录角色的能力。

CATALOG_MANAGE_CONTENT允许对目录的内容进行完整管理。该权限涵盖以下权限:

  • CATALOG_MANAGE_METADATA
  • TABLE_FULL_METADATA
  • NAMESPACE_FULL_METADATA
  • VIEW_FULL_METADATA
  • TABLE_WRITE_DATA
  • TABLE_READ_DATA
  • CATALOG_READ_PROPERTIES
  • CATALOG_WRITE_PROPERTIES

CATALOG_MANAGE_METADATA允许对目录、目录角色、命名空间和表进行完整管理。

CATALOG_READ_PROPERTIES允许列出目录并读取目录的属性。

CATALOG_WRITE_PROPERTIES允许配置目录属性。

CATALOG_ATTACH_POLICY允许将策略附加到目录。

CATALOG_DETACH_POLICY允许从目录解除策略。

策略权限

权限说明
POLICY_CREATE允许在指定的命名空间下创建策略。
POLICY_READ允许读取策略内容和元数据。
POLICY_WRITE允许更新策略详情,例如其内容或描述。
POLICY_LIST允许列出目录中的任何策略。
POLICY_DROP允许删除未附加到任何资源实体的策略。
POLICY_FULL_METADATA授予所有策略权限。
POLICY_ATTACH允许将策略附加到实体。
POLICY_DETACH允许将策略从实体上分离。

RBAC 示例

下图展示了 Polaris 中 RBAC 的工作方式,其中包含以下用户:

  • Alice: 注册 Polaris 的服务管理员。Alice 可以创建主体(principal),也可以创建目录和命名空间,并为 Polaris 资源配置访问控制。

  • Bob: 使用 Apache Spark™ 与 Polaris 交互的数据工程师。

    • Alice 为 Bob 创建了一个主体。该主体被授予了 Data_engineer 主体角色,而该角色又被授予了以下目录角色:Catalog contributor 和 Data administrator(对应下图中的 Silver 区域目录和 Gold 区域目录)。
    • Catalog contributor 角色授予在 Bronze 区域目录中创建命名空间和表的权限。
    • Data administrator 角色授予对 Silver 区域目录和 Gold 区域目录的完整管理权限。
  • Mark: 使用 Polaris 管理的数据进行模型训练的数据科学家。

    • Alice 为 Mark 创建了一个主体。该主体被授予了 Data_scientist 主体角色,而该角色又被授予了名为 Catalog reader 的目录角色。
    • Catalog reader 角色授予对名为 Gold zone catalog 的目录的只读访问权限。

展示 Apache Polaris 中 RBAC 工作方式示例的示意图。

评论

登录后参与评论

正在加载评论…