存取 Dataproc Metastore 的 gRPC 端點

本頁說明如何授予 Google Cloud 使用者帳戶或服務帳戶存取權,以存取使用 gRPC 端點通訊協定的 Dataproc Metastore 服務。

關於授予 gRPC 中繼資料角色

授予帳戶中繼資料存取權時,請考量下列概念:

  • 要提供的存取層級。您授予的存取層級會控管帳戶可存取的中繼資料量。舉例來說,您可以選擇提供特定資料庫或資料表所儲存中繼資料的存取權,也可以提供整個專案的存取權。
  • 需要存取權的主體。您可以使用 IAM 主體 (身分) 執行工作。舉例來說,您可以使用使用者帳戶或服務帳戶 (通常是 Dataproc VM 服務帳戶) 執行 Dataproc 叢集工作。

    如要進一步瞭解可搭配 Dataproc Metastore 使用的帳戶,請參閱「Dataproc 服務帳戶」。

視所需控管範圍而定,將下列其中一個預先定義的 IAM 角色授予主體:

  • 如要授予中繼資料資源的完整存取權,中繼資料擁有者角色 (roles/metastore.metadataOwner)
  • 如要授予中繼資料的讀寫權限,請指派「中繼資料編輯者」角色 roles/metastore.metadataEditor)
  • 如要授予中繼資料的讀取權限,請指派「中繼資料檢視者」角色 (roles/metastore.metadataViewer)。

事前準備

必要的角色

如要取得授予主體 Dataproc Metastore 中繼資料存取權所需的權限,請要求管理員遵循最低權限原則,在專案中授予您下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

這些預先定義角色包含授予主體 Dataproc Metastore 中繼資料存取權所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:

所需權限

如要授予主體 Dataproc Metastore 中繼資料的存取權,必須具備下列權限:

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

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

如要進一步瞭解特定 Dataproc Metastore 角色和權限,請參閱 Dataproc Metastore 身分與存取權管理總覽

授予主體帳戶中繼資料存取權

您可以授予主體帳戶專案層級、服務層級、資料庫層級或資料表層級的中繼資料存取權。

授予專案層級的存取權

如要在專案層級授予所有 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
    • 其他主體類型:主體 ID
  • METASTORE_ROLE:視您要授予主體的存取範圍而定,可以是下列其中一個角色:roles/metastore.metadataViewerroles/metastore.metadataEditorroles/metastore.metadataOwner

在服務層級授予存取權

如要在服務層級授予所有 Dataproc Metastore 中繼資料的存取權,您必須將中繼資料角色授予主體帳戶。

gcloud CLI

如要在單一 Dataproc 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
    • 其他主體類型:主體 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 服務的 Google Cloud 專案 ID。
  • LOCATION:要授予存取權的 Dataproc Metastore 服務區域。
  • SERVICE_ID:Dataproc Metastore 服務的 ID 或完整識別碼。
  • PRINCIPAL:主要帳戶的類型和電子郵件 ID (電子郵件地址):
    • 使用者帳戶:user:EMAIL_ID
    • 服務帳戶:serviceAccount:EMAIL_ID
    • Google 網路論壇:group:EMAIL_ID
    • 其他主體類型:主體 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。

後續步驟