本頁說明如何授予 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。
- 建立使用 gRPC 通訊協定的 Metastore 服務。
瞭解專案適用的網路需求。
- gRPC 和虛擬私有雲 (VPC) 需求。如果您使用 gRPC,則不必設定共用虛擬私有雲或任何額外網路設定。根據預設,任何虛擬私有雲都能連上 gRPC 端點。
但有一種情況例外。如果您的專案使用 VPC-SC 服務範圍,則只有屬於範圍內專案的 VPC 才能連上 gRPC 端點。詳情請參閱「透過 Dataproc Metastore 使用 VPC Service Controls」。
必要的角色
如要取得授予主體 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
- 其他主體類型:主體 ID
METASTORE_ROLE
:視您要授予主體的存取範圍而定,可以是下列其中一個角色:roles/metastore.metadataViewer
、roles/metastore.metadataEditor
或roles/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.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
- 其他主體類型:主體 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。