當您使用選用元件功能建立 Dataproc 叢集時,可以安裝 Ranger 等其他元件。本頁面說明 Ranger 元件。
Apache Ranger 元件是一個開放原始碼架構,用於管理 Hadoop 生態系統的權限和稽核功能。Ranger 管理員伺服器和 Web UI 位於叢集的第一個主要節點的 6080
通訊埠上。
另請參閱:
安裝元件
請在建立 Dataproc 叢集時安裝元件。您可以將元件新增至使用 Dataproc 1.3 以上版本建立的叢集。Ranger 元件需要安裝 Solr 元件,如以下所示。
請參閱支援的 Dataproc 版本,瞭解每個 Dataproc 映像檔版本中包含的元件版本。
安裝步驟:
設定 Ranger 管理員密碼:
- 將 Cloud KMS CryptoKey 加密編譯金鑰加密者/解密者角色授予叢集服務帳戶。根據預設,叢集服務帳戶會設為 Compute Engine 預設服務帳戶,其格式如下:
您可以在建立叢集時指定其他叢集服務帳戶,如下所示。project-number-compute@developer.gserviceaccount.com
- 範例:將 Cloud KMS CryptoKey 加密者/解密者角色授予 Compute Engine 預設服務帳戶:
gcloud projects add-iam-policy-binding project-id \ --member=serviceAccount:project-number-compute@developer.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyDecrypter
- 範例:將 Cloud KMS CryptoKey 加密者/解密者角色授予 Compute Engine 預設服務帳戶:
- 使用 金鑰管理服務 (KMS) 金鑰加密 Ranger 管理員使用者的密碼。如果是 2.2 以下版本的映像檔版本叢集,密碼必須至少包含 8 個字元,且至少包含一個英文字母和一個數字。對於 2.2 以上版本的叢集,密碼至少必須包含 8 個字元,且至少包含一個大寫字母、一個小寫字母和一個數字。
- 示例:
- 建立金鑰環:
gcloud kms keyrings create my-keyring --location=global
- 建立金鑰:
gcloud kms keys create my-key \ --location=global \ --keyring=my-keyring \ --purpose=encryption
- 加密 Ranger 管理員使用者密碼:
echo 'my-ranger-admin-password' | \ gcloud kms encrypt \ --location=global \ --keyring=my-keyring \ --key=my-key \ --plaintext-file=- \ --ciphertext-file=admin-password.encrypted
- 建立金鑰環:
- 示例:
- 將加密密碼上傳至專案中的 Cloud Storage 值區。
- 範例:
gcloud storage cp admin-password.encrypted gs://my-bucket
- 範例:
- 將 Cloud KMS CryptoKey 加密編譯金鑰加密者/解密者角色授予叢集服務帳戶。根據預設,叢集服務帳戶會設為 Compute Engine 預設服務帳戶,其格式如下:
建立叢集:
- 安裝 Ranger 元件時,也必須安裝 Solr 元件,如下所示。
- Ranger 元件會使用 Solr 元件儲存及查詢稽核記錄,預設會使用 HDFS 做為儲存空間。刪除叢集時,系統會刪除 HDFS 資料。如要設定 Solr 元件,以便在 Cloud Storage 中儲存資料 (包括 Ranger 稽核記錄),請在建立叢集時使用
dataproc:solr.gcs.path=gs://<bucket>
叢集屬性。叢集刪除後,Cloud Storage 資料會保留下來。
- Ranger 元件會使用 Solr 元件儲存及查詢稽核記錄,預設會使用 HDFS 做為儲存空間。刪除叢集時,系統會刪除 HDFS 資料。如要設定 Solr 元件,以便在 Cloud Storage 中儲存資料 (包括 Ranger 稽核記錄),請在建立叢集時使用
- 設定
dataproc:ranger.kms.key.uri
和dataproc:ranger.admin.password.uri
叢集屬性,將 KMS 金鑰和密碼 Cloud Storage URI 傳遞至叢集建立指令。 - 您可以選擇透過設定
dataproc:ranger.db.admin.password.uri
叢集屬性,透過加密的 Cloud Storage 檔案 URI 傳入 Ranger 資料庫的管理員使用者密碼。 - 根據預設,Ranger 元件會使用在叢集第一個主要節點上執行的 MySql 資料庫執行個體。在 MySQL 例項中,將變數設為
ON
即可啟用log_bin_trust_function_creators
標記。設定此標記可控管是否信任儲存的函式建立者。叢集建立和 Ranger 設定成功後,您可以將log_bin_trust_function_creators
重設為OFF
。 如要在叢集刪除後保留 Ranger 資料庫,請使用 Cloud SQL 執行個體做為外部 MySql 資料庫。
- 將
dataproc:ranger.cloud-sql.instance.connection.name
叢集屬性 設為 Cloud SQL 執行個體。 - 將
dataproc:ranger.cloud-sql.root.password.uri
叢集屬性 設為 Cloud SQL 執行個體的 KMS 金鑰加密根密碼的 Cloud Storage URI。 - 設定
dataproc:ranger.cloud-sql.use-private-ip
叢集屬性,指出是否透過私人 IP 連線至 Cloud SQL 執行個體。
Ranger 元件會使用 Cloud SQL Proxy 連線至 Cloud SQL 執行個體。如要使用 Proxy:
- 建立叢集時,請設定
sqlservice.admin
API 範圍 (請參閱「使用 OAuth 2.0 授權要求」)。如果使用gcloud dataproc cluster create
指令,請新增--scopes=default,sql-admin
參數。 - 在專案中啟用 SQL Admin API。
- 確認叢集服務帳戶是否具備 Cloud SQL 編輯者角色。
gcloud 指令
如要建立包含 Ranger 元件的 Dataproc 叢集,請使用 gcloud dataproc clusters create cluster-name 指令搭配
--optional-components
標記。gcloud dataproc clusters create cluster-name \ --optional-components=SOLR,RANGER \ --region=region \ --enable-component-gateway \ --properties="dataproc:ranger.kms.key.uri=projects/project-id/locations/global/keyRings/my-keyring/cryptoKeys/my-key,dataproc:ranger.admin.password.uri=gs://my-bucket/admin-password.encrypted" \ ... other flags
REST API
在 Dataproc API clusters.create 要求中,在 SoftwareConfig.Component 欄位中指定 Ranger 和 Solr 元件。您還必須在 SoftwareConfig.Component.properties 欄位中設定下列叢集屬性:
dataproc:ranger.kms.key.uri
:「projects/project-id/locations/global/keyRings/my-keyring/cryptoKeys/my-key」dataproc:ranger.admin.password.uri
: "gs://my-bucket/admin-password.encrypted"
控制台
- 啟用元件和元件閘道。
- 在 Google Cloud 控制台中,開啟 Dataproc 的「Create a cluster」頁面。已選取「設定叢集」面板。
- 在「元件」部分:
- 在「選用元件」下方,選取要安裝在叢集上的 Ranger、Solr 和其他選用元件。
- 在「元件閘道」下方,選取「啟用元件閘道」(請參閱「查看及存取元件閘道網址」)。
- 將
- 安裝 Ranger 元件時,也必須安裝 Solr 元件,如下所示。
按一下「網路介面」分頁標籤。在「Component gateway」下方,按一下「Ranger」Ranger,開啟 Ranger 網路介面。使用 Ranger 管理員的使用者名稱 (例如「admin」) 和密碼登入。
Ranger 管理員記錄
Ranger 管理員記錄會以 ranger-admin-root
記錄的形式顯示在 Logging 中。
