访问 Dataproc Metastore 的 gRPC 端点

本页面介绍了如何授予 Google Cloud 用户账号或服务账号 对使用 gRPC 端点的 Dataproc Metastore 服务的访问权限 协议

关于授予 gRPC 元数据角色

向某个账号授予对元数据的访问权限时,请考虑以下事项: 概念:

  • 要提供的访问权限级别。您授予控制权限的访问权限级别 一个账号可以访问多少元数据例如,您可以选择 提供对存储在特定数据库、特定表或 也可以提供对整个项目的访问权限
  • 需要访问权限的主账号。您使用 IAM 主账号(身份) 运行您的作业。例如,您可以使用用户账号或服务账号(通常是 Dataproc 虚拟机服务账号)运行 Dataproc 集群作业。

    如需详细了解您可以用来登录的账号 Dataproc Metastore,请参阅 Dataproc 服务 账号

根据所需的控制范围,向您的主账号授予 下列预定义 IAM 角色:

  • 授予对元数据资源的完整访问权限。Metadata Owner 角色 (roles/metastore.metadataOwner)
  • 如需授予对元数据的读写权限:Metadata Editor 角色 roles/metastore.metadataEditor)
  • 如需授予对元数据的读取权限:Metadata Viewer 角色 (roles/metastore.metadataViewer)

准备工作

所需的角色

为了获得向主账号授予对 Dataproc Metastore 元数据的访问权限所需的权限, 请让管理员授予您 以下 IAM 角色,同时遵循最小权限原则:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

这些预定义角色包含向主账号授予对 Dataproc Metastore 元数据的访问权限所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需向主账号授予对 Dataproc Metastore 元数据的访问权限,您需要拥有以下权限:

  • resourcemanager.projects.get
  • resourcemanager.projects.getIamPolicy
  • resourcemanager.projects.setIamPolicy

您也可以使用自定义角色或其他预定义角色来获取这些权限。

如需详细了解特定 Dataproc Metastore 角色和权限,请参阅 Dataproc Metastore IAM 概览

向主账号账号授予对元数据的访问权限

您可以在项目级授予主账号访问元数据的权限, 服务层级、数据库层级或表层级。

在项目级授予访问权限

授予对项目中所有 Dataproc Metastore 元数据的访问权限 级别,您必须向主账号授予元数据角色。

gcloud CLI

如需向指定项目中的所有 Dataproc Metastore 服务授予元数据角色,请运行以下 gcloud projects add-iam-policy-binding 命令:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=PRINCIPAL \
    --role=METASTORE_ROLE

替换以下内容:

  • PROJECT_ID:您要向其授予元数据访问权限的 Google Cloud 项目的 ID。
  • PRINCIPAL:主账号的类型和电子邮件 ID(电子邮件地址)。
    • 对于用户账号:user:EMAIL_ID
    • 对于服务账号:serviceAccount:EMAIL_ID
    • 对于 Google 群组:group:EMAIL_ID
    • 对于其他主账号类型:与身份相关的概念
  • METASTORE_ROLE:以下角色之一(具体取决于您要授予主账号的访问权限范围):roles/metastore.metadataViewerroles/metastore.metadataEditorroles/metastore.metadataOwner

在服务级别授予访问权限

授予对该服务中所有 Dataproc Metastore 元数据的访问权限 级别,您必须向主账号授予元数据角色。

gcloud CLI

以单个 Pod 的粒度授予元数据角色 Dataproc Metastore Metastore 服务,请运行以下命令 gcloud metastore services add-iam-policy-binding 命令:

gcloud metastore services add-iam-policy-binding SERVICE_ID \
  --location=LOCATION \
  --member=PRINCIPAL \
  --role=METASTORE_ROLE

替换以下内容:

  • SERVICE_ID:Dataproc Metastore 服务的 ID 或完全限定的标识符。
  • LOCATION:您要授予访问权限的 Dataproc Metastore 所在的区域。
  • PRINCIPAL:主账号的类型和电子邮件 ID(电子邮件地址):
    • 对于用户账号:user:EMAIL_ID
    • 对于服务账号:serviceAccount:EMAIL_ID
    • 对于 Google 群组:group:EMAIL_ID
    • 对于其他主账号类型:与身份相关的概念
  • METASTORE_ROLE:以下角色之一(具体取决于您要授予主账号的访问权限范围):roles/metastore.metadataViewerroles/metastore.metadataEditorroles/metastore.metadataOwner

在数据库级别授予访问权限

如需授予对特定数据库中所有 Dataproc Metastore 元数据的访问权限,您必须向主账号添加元数据角色。

gcloud CLI

如需以特定数据库的精细级别授予元数据角色,请运行以下 gcloud metastore services databases add-iam-policy-binding 命令:

gcloud metastore services databases add-iam-policy-binding DATABASE_ID \
  --project=PROJECT \
  --location=LOCATION \
  --service=SERVICE_ID \
  --member=PRINCIPAL \
  --role=METASTORE_ROLE

替换以下内容:

  • DATABASE_ID:您要向其授予元数据访问权限的数据库的 ID。 您可以从数据库架构中获取此 ID。
  • PROJECT:包含 您要向其授予元数据访问权限的 Dataproc Metastore 服务。
  • LOCATION:您授权访问的 Dataproc Metastore 服务的区域。
  • SERVICE_ID:Dataproc Metastore 服务的 ID 或完全限定的标识符。
  • PRINCIPAL:主账号的类型和电子邮件 ID(电子邮件地址):
    • 对于用户账号:user:EMAIL_ID
    • 对于服务账号:serviceAccount:EMAIL_ID
    • 对于 Google 群组:group:EMAIL_ID
    • 如需了解其他主账号类型,请参阅与身份相关的概念
  • METASTORE_ROLE:以下角色之一(具体取决于您要授予主账号的访问权限范围):roles/metastore.metadataViewerroles/metastore.metadataEditorroles/metastore.metadataOwner

在表级层授予访问权限

要授予对特定表中所有 Dataproc Metastore 元数据的访问权限,您必须向您的主账号授予元数据角色。

gcloud CLI

如需以表的粒度授予元数据角色,请运行以下 gcloud metastore services databases tables add-iam-policy-binding 命令:

gcloud metastore services databases tables add-iam-policy-binding TABLE_ID \
  --database=DATABASE_ID \
  --project=PROJECT \
  --location=LOCATION \
  --service=SERVICE_ID \
  --member=PRINCIPAL \
  --role=METASTORE_ROLE

替换以下内容:

  • TABLE_ID:您要授予访问权限的表的 ID。您可以从数据库架构中获取此 ID。
  • DATABASE_ID:包含您要授予元数据访问权限的表的数据库的 ID。您可以从数据库架构中获取此 ID。
  • PROJECT:包含您要授予元数据访问权限的 Dataproc Metastore 服务的 Google Cloud 项目 ID。
  • LOCATION:您要向其授予元数据访问权限的 Dataproc Metastore 服务的区域。
  • SERVICE_ID:您的 Dataproc Metastore 服务的 ID 或完全限定的标识符。
  • PRINCIPAL:主账号的类型和电子邮件 ID(电子邮件地址):
    • 对于用户账号:user:EMAIL_ID
    • 对于服务账号:serviceAccount:EMAIL_ID
    • 对于 Google 群组:group:EMAIL_ID
  • METASTORE_ROLE:以下角色之一(具体取决于您要授予主账号的访问权限范围):roles/metastore.metadataViewerroles/metastore.metadataEditorroles/metastore.metadataOwner

授予对元数据的访问权限之后

将所需的角色授予服务账号后,您可以将 Dataproc Metastore 连接到 Dataproc 集群。然后,您的集群将使用 Dataproc Metastore 服务作为其 Hive Metastore。

后续步骤