Lakehouse for Apache Iceberg 支持对 Cloud Storage 中使用 Lakehouse 运行时目录的 Apache Iceberg 表进行表级访问权限控制。
数据湖仓运行时目录用于管理表元数据,而 Identity and Access Management (IAM) 政策用于定义权限。gcloud CLI 提供获取和设置这些 IAM 政策所需的命令。
准备工作
-
启用 BigLake API。
启用 API 所需的角色
如需启用 API,您需要拥有 Service Usage Admin IAM 角色 (
roles/serviceusage.serviceUsageAdmin),该角色包含serviceusage.services.enable权限。了解如何授予角色。 - 安装并初始化 Google Cloud SDK。
- 验证您是否已拥有 Apache Iceberg REST Catalog 端点和命名空间。
- 验证您在指定目录和命名空间中是否已存在 Lakehouse Iceberg 表。
所需的角色
如需获得管理 Iceberg 表的访问控制列表 (ACL) 所需的权限,请让您的管理员为您授予以下 IAM 角色:
- 所有用户: 针对项目的 BigLake Admin (roles/biglake.admin)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
工作原理
IAM 政策用于定义哪些主账号对资源拥有特定角色和权限。您可以通过获取和设置这些政策来管理对资源的访问权限。
相关 IAM 角色
您可以将以下常见 IAM 角色应用于 Lakehouse 资源:
roles/biglake.admin:提供对 Lakehouse 资源的完全控制权限。roles/biglake.user:允许正文使用 Lakehouse 资源,包括读取和写入表数据。roles/biglake.viewer:允许正文查看 Lakehouse 资源和读取表数据。
最佳做法
- 最小权限:仅向用户和服务账号授予必要的权限。
- 使用 ETag:使用
set-iam-policy时,请务必在政策文件中包含最近一次get-iam-policy调用的etag,以避免意外覆盖。 - 审核日志记录:确保已启用 Cloud Audit Logs 以跟踪对 IAM 政策的更改。
- 版本控制:将政策文件存储在版本控制系统中。
将 ACL 角色应用于表
下一部分将介绍如何将 ACL 应用于表。
获取 IAM 政策
如需查看 Lakehouse Iceberg 表的当前 IAM 政策,请使用 gcloud biglake iceberg tables
get-iam-policy 命令。
如需获取 IAM 政策,请运行以下命令:
gcloud biglake iceberg tables get-iam-policy TABLE_NAME \ --catalog=CATALOG_NAME \ --namespace=NAMESPACE_NAME \ --project=PROJECT_ID替换以下内容:
TABLE_NAME:目标 Lakehouse Iceberg 表的名称。CATALOG_NAME:Apache Iceberg REST Catalog 端点的名称。NAMESPACE_NAME:目录中命名空间的名称。PROJECT_ID: Google Cloud项目 ID。
该命令会以 YAML 格式输出 IAM 政策,其中显示了当前的角色绑定和成员。
设置 IAM 政策
如需更新 Lakehouse Iceberg 表的 IAM 政策,请使用 gcloud biglake iceberg tables set-iam-policy 命令。此命令使用包含要应用的政策的本地 JSON 或 YAML 文件。
创建 JSON 或 YAML 格式的本地政策文件。该政策文件必须包含绑定和
etag。etag值提供乐观的并发控制,以防止覆盖更改。如需获取当前的etag,请先运行get-iam-policy命令。以下示例展示了一个名为
policy.json的政策文件:{ "bindings": [ { "role": "roles/biglake.viewer", "members": [ "user:test-user@example.com" ] }, { "role": "roles/biglake.user", "members": [ "user:someone@example.com" ] } ], "etag": "BwYXa9UuR8w=", "version": 3 }如需设置 IAM 政策,请运行以下命令:
gcloud biglake iceberg tables set-iam-policy TABLE_NAME POLICY_FILE \ --catalog=CATALOG_NAME \ --namespace=NAMESPACE_NAME \ --project=PROJECT_ID替换以下内容:
TABLE_NAME:目标 Lakehouse Iceberg 表的名称。POLICY_FILE:本地政策文件的路径。CATALOG_NAME:Apache Iceberg REST Catalog 端点的名称。NAMESPACE_NAME:目录中命名空间的名称。PROJECT_ID:您的 Google Cloud 项目 ID。
后续步骤
- 详细了解 IAM。
- 查看 Lakehouse IAM 角色和权限的完整列表。
- 了解 Lakehouse 概念。