系统访问控制¶
Presto 将身份验证到协调器的用户主体与负责运行查询的用户名分开。例如,在运行 Presto CLI 时,可以使用 --user
选项指定 Presto 用户名。
默认情况下,Presto 协调器允许任何主体以任何 Presto 用户身份运行查询。在安全环境中,这可能不是期望的行为,可能需要自定义。
实现¶
SystemAccessControlFactory
负责创建 SystemAccessControl
实例。它还定义了一个 SystemAccessControl
名称,管理员在 Presto 配置中使用该名称。
SystemAccessControl
实现有几个职责
验证给定主体是否被授权以特定用户身份执行查询。
确定给定用户是否可以更改给定系统属性的值。
在所有目录中执行访问检查。这些访问检查发生在任何连接器特定检查之前,因此可以拒绝连接器
ConnectorAccessControl
允许的权限。
SystemAccessControl
和 SystemAccessControlFactory
的实现必须作为插件包装并安装在 Presto 集群上。
配置¶
在实现 SystemAccessControl
和 SystemAccessControlFactory
的插件安装在协调器上后,使用 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