配置Spark对接LakeFormation授权管理
LakeFormation数据湖权限支持配置数据库、数据表、函数等维度的权限。云服务管理员可针对不同的管理对象配置不同IAM用户组的权限,统一对数据湖资源进行管理。
MRS集群对接LakeFormation后,LakeFormation服务中的相关数据湖权限策略及角色信息会自动同步至MRS Ranger,对于MRS集群内的用户,可通过关联至对应Ranger角色后获取对应资源的访问权限。
开启数据源鉴权时需为Spark组件配置相关访问权限。
前提条件
- 本章节内容仅适用于MRS 3.6.0及之后版本。
- LakeFormation实例运行正常,数据库、数据表、数据权限等页面加载正常。
- 集群关闭Kerberos认证(普通模式),且运行正常,包含Guardian、Ranger、Hive、Spark等服务。
- 已完成MRS集群对接LakeFormation,并配置MRS集群Spark组件的存算分离,详情可参考创建集群时配置LakeFormation数据连接或为已有集群配置LakeFormation数据连接。
- 已下载安装了集群客户端,例如安装目录为“/opt/client”。
- 已登录MRS集群的FusionInsight Manager界面添加人机用户“sparkuser”,加入hadoop、hive用户组,用户创建成功后初始化密码。
授权插件说明
Spark组件提供了两种授权插件选项:Ranger授权插件和LakeFormation授权插件,LakeFormation授权插件仅适用于MRS 3.6.0及之后版本。
Spark组件默认采用Ranger授权插件进行权限管理。这种配置依赖于用户在LakeFormation中设置的数据权限策略同步机制。通过这一机制,数据权限得以实时更新和同步,确保权限管理的时效性和准确性。
如果您希望切换到LakeFormation授权插件,需要进行以下配置:
- 禁用Ranger授权插件: 登录Manager页面,在Spark服务界面停用Ranger鉴权。重新下载客户端,或手动刷新客户端配置文件“客户端安装目录/Spark/spark/conf/spark-defaults.conf”中参数“spark.ranger.plugin.authorization.enable”值为“false”。Spark关闭Ranger鉴权后,需要重启Spark服务。
- 启用LakeFormation授权插件: 设置配置参数 spark.lakeformation.plugin.authorization.enable=true 以启用LakeFormation授权插件。
- 独立性:LakeFormation授权插件不依赖于数据湖权限策略的同步机制,因此在某些场景下可能更为轻便和高效。
- 兼容性:由于Ranger授权插件通过同步权限策略兼容Lakeformation统一元数据,存在少量差异,可参考表1。
- 权限策略重置:切换授权插件需要重启Spark组件,并同步客户端配置。并注意二者兼容性。
- 差异性:LakeFormation授权插件不支持SET ROLE ADMIN命令。
操作步骤
- 关闭Kerberos认证的集群(普通模式)默认关闭Ranger鉴权,需要参考以下步骤开启Spark的Ranger鉴权。
- 在LakeFormation中添加鉴权角色。
- 登录LakeFormation管理控制台。
- 在LakeFormation管理控制台,选择“数据权限 > 角色”页面,单击“创建角色”,“角色名称”填写“spark_role”,单击“确定”。
- 在Ranger为待鉴权用户添加角色。
- 使用Ranger管理员用户rangeradmin(默认密码为Rangeradmin@123)登录Ranger管理页面。
- 在“Roles”页签,单击在LakeFormation创建的角色名,如“spark_role”,在“Users”项的“Select User”框中选择待鉴权的人机用户,如“sparkuser”,然后单击“Add Users”,单击“Save”。
- 在LakeFormation对角色进行授权。
进入LakeFormation的“数据授权”页面,单击“授权”,编辑如下,将访问表所需的权限赋予“spark_role”,单击“确定”。
- 主体类型:选择“角色”。
- 选择角色:下拉框选择刚创建的角色“spark_role”。
- 授权类型:选择“资源”。
- Catalog:选择“hive”。
- 选择数据库、表、列、函数等待授权的资源类型。
- 操作类型:参考表1。
表1 类型说明 类型
SQL 语句
Ranger授权插件所需资源权限
LakeFormation授权插件所需资源权限
(仅适用于MRS 3.6.0及之后版本)
DDL语句
ALTER DATABASE
database:ALTER
database:ALTER
ALTER TABLE
table:ALTER
table:ALTER
ALTER VIEW
column:SELECT
column:SELECT
table:ALTER
table:ALTER
CREATE DATABASE
None
catalog:CREATE_DATABASE
CREATE OR REPLACE FUNCTION (CREATE)
database:CREATE_FUNC
database:CREATE_FUNC
tempudfadmin(Ranger添加)
CREATE OR REPLACE FUNCTION (REPLACE)
database:CREATE_FUNC
database:CREATE_FUNC
function:ALTER
CREATE TABLE
database:CREATE_TABLE
database:CREATE_TABLE
CREATE VIEW
database:CREATE_TABLE
database:CREATE_TABLE
column:SELECT
column:SELECT
DROP DATABASE
database:DROP
database:DROP
DROP FUNCTION
function:DROP
function:DROP
tempudfadmin(Ranger添加)
DROP TABLE
table:DROP
table:DROP
DROP VIEW
table:DROP(target)
table:DROP(target)
REPAIR TABLE
table:ALTER
table:ALTER
TRUNCATE TABLE
table:UPDATE
table:UPDATE 或 table:DELETE
table:SELECT
USE DATABASE
None
database:任意权限
DML语句
INSERT TABLE
table:UPDATE
table:INSERT
LOAD DATA
table:UPDATE
table:SELECT
table:UPDATE
DR语句
SELECT
column:SELECT
column:SELECT
EXPLAIN
取决于执行sql
取决于执行sql
Auxiliary语句
ANALYZE TABLE
table:SELECT
table:SELECT
table:DESCRIBE
DESCRIBE DATABASE
None
None
DESCRIBE FUNCTION
None
None
DESCRIBE QUERY
None
table:SELECT
DESCRIBE TABLE
table:DESCRIBE
table:DESCRIBE
REFRESH TABLE
None
table:SELECT
REFRESH FUNCTION
None
None
SHOW COLUMNS
table:DESCRIBE
table:DESCRIBE
SHOW CREATE TABLE
table:DESCRIBE
table:DESCRIBE
SHOW DATABASES
None
None
SHOW FUNCTIONS
None
None
SHOW PARTITIONS
table:DESCRIBE
table:DESCRIBE
SHOW TABLE EXTENDED
None
None
SHOW TABLES
None
None
SHOW TBLPROPERTIES
None
table:DESCRIBE
SHOW VIEWS
None
None
UNCACHE TABLE
None
table:SELECT