系统访问控制

Presto 将身份验证到协调器的用户主体与负责运行查询的用户名分开。例如,在运行 Presto CLI 时,可以使用 --user 选项指定 Presto 用户名。

默认情况下,Presto 协调器允许任何主体以任何 Presto 用户身份运行查询。在安全环境中,这可能不是期望的行为,可能需要自定义。

实现

SystemAccessControlFactory 负责创建 SystemAccessControl 实例。它还定义了一个 SystemAccessControl 名称,管理员在 Presto 配置中使用该名称。

SystemAccessControl 实现有几个职责

  • 验证给定主体是否被授权以特定用户身份执行查询。

  • 确定给定用户是否可以更改给定系统属性的值。

  • 在所有目录中执行访问检查。这些访问检查发生在任何连接器特定检查之前,因此可以拒绝连接器 ConnectorAccessControl 允许的权限。

SystemAccessControlSystemAccessControlFactory 的实现必须作为插件包装并安装在 Presto 集群上。

配置

在实现 SystemAccessControlSystemAccessControlFactory 的插件安装在协调器上后,使用 etc/access-control.properties 文件对其进行配置。除了 access-control.name 之外的所有属性都特定于 SystemAccessControl 实现。

Presto 使用 access-control.name 属性根据 SystemAccessControlFactory.getName() 返回的名称查找已注册的 SystemAccessControlFactory。其余属性作为映射传递给 SystemAccessControlFactory.create()

示例配置文件

access-control.name=custom-access-control
custom-property1=custom-value1
custom-property2=custom-value2