管理 Lakehouse Iceberg REST 目录表 ACL

Lakehouse for Apache Iceberg 支持对 Cloud Storage 中使用 Lakehouse 运行时目录的 Apache Iceberg 表进行表级访问权限控制。

数据湖仓运行时目录用于管理表元数据,而 Identity and Access Management (IAM) 政策用于定义权限。gcloud CLI 提供获取和设置这些 IAM 政策所需的命令。

准备工作

  1. 验证是否已为您的 Google Cloud 项目启用结算功能

  2. 启用 BigLake API。

    启用 API 所需的角色

    如需启用 API,您需要拥有 Service Usage Admin IAM 角色 (roles/serviceusage.serviceUsageAdmin),该角色包含 serviceusage.services.enable 权限。了解如何授予角色

    启用 API

  3. 安装并初始化 Google Cloud SDK。
  4. 验证您是否已拥有 Apache Iceberg REST Catalog 端点和命名空间。
  5. 验证您在指定目录和命名空间中是否已存在 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 命令。

  1. 如需获取 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。
  2. 该命令会以 YAML 格式输出 IAM 政策,其中显示了当前的角色绑定和成员。

设置 IAM 政策

如需更新 Lakehouse Iceberg 表的 IAM 政策,请使用 gcloud biglake iceberg tables set-iam-policy 命令。此命令使用包含要应用的政策的本地 JSON 或 YAML 文件。

  1. 创建 JSON 或 YAML 格式的本地政策文件。该政策文件必须包含绑定和 etagetag 值提供乐观的并发控制,以防止覆盖更改。如需获取当前的 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
    }
    
  2. 如需设置 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。

后续步骤