重要
Lakebase 自动缩放在以下区域处于 Beta 版本:eastus2,westeurope,westus。
Lakebase 自动缩放是最新版本的 Lakebase,可自动缩放计算、缩放到零、分支和即时还原。 有关 与 Lakebase 预配的功能比较,请参阅 在版本之间进行选择。
了解如何设置有权访问 Lakebase 项目和数据库的新用户。 本教程介绍项目级权限(用于管理 Lakebase 资源)和数据库级权限(用于通过 Postgres 访问数据)。
关于两个权限系统
Lakebase Postgres 使用两层权限:
项目权限(ACL):控制平台级作,例如创建分支、管理计算和管理项目设置。 这些通过 Lakebase 应用进行管理。
Postgres 角色权限:控制对数据库本身内数据的访问。 这些命令通过标准 Postgres
GRANT命令进行管理。
这些系统 没有自动同步。 可以根据组织的要求单独或共同授予这些权限:
- 向需要平台访问和数据库访问的用户授予这两个层。
- 仅向管理基础结构但不需要查询数据的用户授予项目权限。
- 仅向需要查询数据但不需要管理 Lakebase 资源的用户授予数据库访问权限(可以使用连接详细信息等
psql工具进行连接)。
本教程演示如何设置两个访问层:
- 授予项目权限,以便用户可以使用 Lakebase 平台资源(本教程使用 CAN MANAGE 进行完全访问权限,还可以授予 CAN USE 用于仅查看和使用访问权限)
- 使用适当的数据库权限创建 Postgres 角色,以便连接到和查询数据库
默认权限
默认情况下,所有工作区用户都继承 CAN CREATE 权限,该权限允许查看和创建项目。 若要授予对项目资源和数据库的其他访问权限,必须显式分配 CAN USE 或 CAN MANAGE。
先决条件
- 包含数据库的 Lakebase 项目
- 工作区管理员或 CAN MANAGE 对项目的权限
- 创建项目所在的同一工作区内用户的 Azure Databricks 身份(电子邮件地址)
方案:添加具有读写访问权限的数据分析师
让我们逐步讲解如何添加一个名为 Alex Lopez 谁需要的数据分析师:
- 能够创建和管理分支、计算和数据库(可管理)
- 在您的 Postgres 数据库的
public模式中,对表进行读取和写入访问权限。 - 能够创建新表进行分析
步骤 1:授予项目权限
首先,向用户授予 CAN MANAGE 权限,以便他们可以执行项目管理作。
- 导航到 Lakebase App 中的项目。
- 单击左侧栏中 的“设置 ”。
- 滚动到 “项目权限 ”部分。
- 单击“ 授予权限”。
- 搜索并选择用户。
- 选择 “CAN MANAGE ”权限。
- 单击授权。
CAN MANAGE 允许的内容:
- 创建和删除分支
- 管理计算和配置项目设置
- 创建和管理数据库和 Postgres 角色
- 完全控制项目运作
注释
可管理授予对项目的完全权限,包括许多其他操作。 CAN USE 允许查看和使用资源(列表、查看、获取连接 URI 和某些分支作),而无需完全管理。 有关所有权限级别及每个级别允许的特定操作的完整列表,请参阅Lakebase 项目 ACL。
步骤 2:为用户创建 Postgres 角色
现在创建一个 OAuth 角色,使 Alex 能够使用其 Azure Databricks 标识和 OAuth 令牌进行身份验证。 作为项目所有者,你具有创建角色所需的权限。
打开 Lakebase SQL 编辑器并连接到项目。
databricks_auth创建扩展(如果尚未启用):CREATE EXTENSION IF NOT EXISTS databricks_auth;使用该
databricks_create_role函数为 Alex 创建 OAuth Postgres 角色:SELECT databricks_create_role('alex.lopez@databricks.com', 'USER');
这会创建一个 OAuth 角色,该角色:
- 其名称与 Azure Databricks 标识相同(
alex.lopez@databricks.com) - 可以使用 OAuth 令牌进行身份验证
- 具有 LOGIN 权限
- 尚没有数据库权限(接下来我们将授予这些权限)
注释
关于 OAuth 角色:
- OAuth 角色使用限时令牌进行身份验证(1 小时后过期)
- 用户从 Lakebase 应用连接对话框获取令牌
- 最适合交互式会话和工作区集成的工作流
- 有关详细信息,请参阅 “关于身份验证”
步骤 3:授予 Postgres 数据库权限
现在授予 Alex 所需的数据库权限。 我们将向他们提供对架构的 public 读写访问权限。
-- Grant CONNECT permission on the database
GRANT CONNECT ON DATABASE databricks_postgres TO "alex.lopez@databricks.com";
-- Grant USAGE permission on the public schema (required to access objects in it)
GRANT USAGE ON SCHEMA public TO "alex.lopez@databricks.com";
-- Grant CREATE permission on the public schema (allows creating new tables)
GRANT CREATE ON SCHEMA public TO "alex.lopez@databricks.com";
-- Grant read-write access to all existing tables in public schema
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO "alex.lopez@databricks.com";
-- Grant permissions on future tables (so Alex can access new tables automatically)
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO "alex.lopez@databricks.com";
-- Grant permission to use sequences (needed for SERIAL columns)
GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO "alex.lopez@databricks.com";
-- Grant permissions on future sequences
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT USAGE, SELECT ON SEQUENCES TO "alex.lopez@databricks.com";
这些权限允许的内容:
-
CONNECT:连接到数据库 -
USAGE基于架构:访问架构中的对象 -
CREATE基于架构:创建新表、视图、函数 -
SELECT, INSERT, UPDATE, DELETE对表:读取和写入数据 - 序列权限:使用自动递增列
步骤 4:测试连接
让 Alex 验证他们是否可以连接和访问数据库。
使用 Lakebase SQL 编辑器:
Alex 打开 Lakebase App 并导航到项目。
Alex 打开 Lakebase SQL 编辑器。
在 SQL 编辑器中,Alex 应能够运行以下查询来验证权限:
-- Check role memberships SELECT rolname FROM pg_roles WHERE rolname = 'alex.lopez@databricks.com'; -- Verify can read data SELECT * FROM your_table LIMIT 5; -- Verify can write data INSERT INTO your_table (column1, column2) VALUES ('test', 'value'); -- Verify can create tables CREATE TABLE alex_analysis ( id SERIAL PRIMARY KEY, notes TEXT, created_at TIMESTAMP DEFAULT NOW() );
或者,使用 psql:
Alex 还可以从外部工具进行连接,例如 psql:
- 在项目仪表板中,单击“ 连接”。
- 选择分支、计算和数据库。
- 从“ 角色 ”下拉列表中选择
alex.lopez@databricks.com。 - 复制
psql连接代码片段。 - 单击 “复制 OAuth 令牌 ”获取身份验证令牌。
- 使用复制的
psql命令进行连接,并在系统提示输入密码时输入 OAuth 令牌。 - 运行上面所示的相同验证查询。
替代方法:只读数据库访问
对于只需在不修改数据的情况下查询数据的用户,请授予相同的项目权限,但使用限制性更高的数据库权限:
项目权限
授予 CAN USE 权限,以实现仅供查看和使用的项目访问(例如,连接 URI、分支列表)。 授予 CAN MANAGE 权限,以允许创建数据库、角色和其他项目操作。
数据库权限
-- Create OAuth role
SELECT databricks_create_role('analyst@databricks.com', 'USER');
-- Grant CONNECT permission
GRANT CONNECT ON DATABASE databricks_postgres TO "analyst@databricks.com";
-- Grant USAGE on the public schema
GRANT USAGE ON SCHEMA public TO "analyst@databricks.com";
-- Grant SELECT-only access to all existing tables
GRANT SELECT ON ALL TABLES IN SCHEMA public TO "analyst@databricks.com";
-- Grant SELECT-only access to future tables
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT ON TABLES TO "analyst@databricks.com";
-- Grant USAGE on sequences (needed to view sequence values)
GRANT USAGE ON ALL SEQUENCES IN SCHEMA public TO "analyst@databricks.com";
此授予:
- 对所有表的读取访问权限
- 查看数据库结构
- 无法修改数据(否 INSERT、 UPDATE、DELETE)
- 无法创建表或其他对象
使用组和服务主体
可以按照相同的过程授予对 Azure Databricks 组和服务主体的访问权限。 通过 Lakebase App UI 授予项目权限,使用 databricks_create_role() 创建 OAuth 角色,并授予数据库权限。 有关详细信息,请参阅组和服务主体。
使用原生 Postgres 密码角色
作为 OAuth 角色的替代方法,可以为无法每小时刷新令牌、长时间运行的进程或不支持 OAuth 的外部工具的应用程序创建本机 Postgres 密码角色。 有关创建和管理密码角色的说明,请参阅 “管理 Postgres 角色”。