本页面介绍如何向 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。
- 创建使用 gRPC 协议的 Metastore 服务。
了解专门针对您的项目的网络要求。
- gRPC 和虚拟私有云 (VPC) 要求。如果您使用的是 gRPC,则无需配置共享 VPC 或设置任何额外的网络配置。默认情况下,可以从任何 VPC 访问 gRPC 端点。
不过,有一种例外情况。如果您的项目使用的是 VPC-SC 服务边界,则 gRPC 端点只能从属于该边界内项目的 VPC 访问。如需了解详情,请参阅将 VPC Service Controls 与 Dataproc Metastore 搭配使用。
必需的角色
如需获取向主帐号授予对 Dataproc Metastore 元数据的访问权限所需的权限,请让管理员授予您项目的以下 IAM 角色,同时遵循最小权限原则:
-
授予 Dataproc Metastore 资源的完全控制权 (
roles/metastore.editor
) -
要授予 Dataproc Metastore 资源的完全控制权,包括更新 IAM 权限 (
roles/metastore.admin
)
如需详细了解如何授予角色,请参阅管理访问权限。
这些预定义角色包含授予主帐号对 Dataproc Metastore 元数据的访问权限所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
如需向主账号授予对 Dataproc Metastore 元数据的访问权限,需要具备以下权限:
-
resourcemanager.projects.get
-
resourcemanager.projects.getIamPolicy
-
resourcemanager.projects.setIamPolicy
向主账号授予对元数据的访问权限
您可以在项目级、服务级、数据库级或表级授予主账号对元数据的访问权限。
在项目级别授予访问权限
如需在项目级层授予对所有 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.metadataViewer
、roles/metastore.metadataEditor
或roles/metastore.metadataOwner
。
在服务级别授予访问权限
如需在服务级别授予对所有 Dataproc Metastore 元数据的访问权限,您必须向主帐号授予元数据角色。
gcloud CLI
如需以单个 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.metadataViewer
、roles/metastore.metadataEditor
或roles/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 服务的 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.metadataViewer
、roles/metastore.metadataEditor
或roles/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.metadataViewer
、roles/metastore.metadataEditor
或roles/metastore.metadataOwner
。
授予对元数据的访问权限后
向您的服务帐号授予所需的角色后,您可以将 Dataproc Metastore 连接到 Dataproc 集群。然后,您的集群使用 Dataproc Metastore 服务作为其 Hive Metastore。