实现Apache Superset的行级安全性,需要进行以下步骤:
为每个用户创建一个角色,并将相应的表分配给该角色。
创建一个视图来限制用户能够查看的数据。示例代码如下:
CREATE VIEW view_name AS
SELECT * FROM table_name
WHERE user_id = current_user;
其中,user_id是存储在表中的用户ID列,current_user是系统提供的变量,表示当前登录的用户。
{
"database_name": "my_database",
"expose_in_sqllab": true,
"sqlalchemy_uri": "postgresql://user:password@localhost:5432/my_database",
"tables": [{
"default_endpoint": "database",
"name": "secured_table",
"schema": "public",
"table_name": "view_name"
}]
}
在这个数据源中,secured_table指向了上面创建的视图。
将数据源分配给用户角色。可以在Superset的“安全性”页面中进行设置。
确保所有查询都使用这个数据源。可以在查询面板中检查。
这样,每个用户都只能看到其自己的数据,并且无法查看其他用户的数据。