以 Dataproc 服務帳戶為基礎的多用戶群安全架構 (以下簡稱「多用戶群安全架構」) 可讓您與多位使用者共用叢集,並在建立叢集時將一組使用者對應至服務帳戶。透過安全多用戶群架構,使用者可以將互動式工作負載提交至叢集,並隔離使用者身分。
使用者將工作提交至叢集時,工作會:
以特定 OS 使用者身分執行,並使用特定 Kerberos 主體
使用對應的服務帳戶憑證存取 Google Cloud 資源
注意事項和限制
建立叢集時,如果啟用安全多租戶功能:
您只能透過 Dataproc Jobs API 提交工作。
只有對應服務帳戶的使用者才能使用叢集。舉例來說,未對應的使用者無法在叢集上執行工作。
服務帳戶只能對應至 Google 使用者,無法對應至 Google 群組。
Dataproc 元件閘道未啟用。
系統會封鎖叢集和 Compute Engine 功能的直接 SSH 存取權,例如在叢集 VM 上執行啟動指令碼的功能。此外,工作無法以
sudo
權限執行。叢集已啟用並設定 Kerberos,確保叢集內通訊安全。不支援透過 Kerberos 進行使用者驗證。
不支援 Dataproc 工作流程。
建立安全的多用戶群叢集
如要建立 Dataproc 多用戶群安全架構叢集,請使用 --secure-multi-tenancy-user-mapping
旗標指定使用者與服務帳戶的對應清單。
範例:
下列指令會建立叢集,並將使用者 bob@my-company.com
對應至服務帳戶 service-account-for-bob@iam.gserviceaccount.com
,以及將使用者 alice@my-company.com
對應至服務帳戶 service-account-for-alice@iam.gserviceaccount.com
。
gcloud dataproc clusters create my-cluster \ --secure-multi-tenancy-user-mapping="bob@my-company.com:service-account-for-bob@iam.gserviceaccount.com,alice@my-company.com:service-account-for-alice@iam.gserviceaccount.com" \ --scopes=https://www.googleapis.com/auth/iam \ --service-account=cluster-service-account@iam.gserviceaccount.com \ --region=region \ other args ...
或者,您也可以將使用者與服務帳戶的對應清單儲存在本機或 Cloud Storage 的 YAML 或 JSON 檔案中。使用 --identity-config-file
標記指定檔案位置。
身分設定檔範例:
user_service_account_mapping: bob@my-company.com: service-account-for-bob@iam.gserviceaccount.com alice@my-company.com: service-account-for-alice@iam.gserviceaccount.com
使用 --identity-config-file
旗標建立叢集的範例指令:
gcloud dataproc clusters create my-cluster \ --identity-config-file=local or "gs://bucket" /path/to/identity-config-file \ --scopes=https://www.googleapis.com/auth/iam \ --service-account=cluster-service-account@iam.gserviceaccount.com \ --region=region \ other args ...
注意:
如上述指令所示,叢集
--scopes
必須包含至少https://www.googleapis.com/auth/iam
,叢集服務帳戶需要這個項目才能執行模擬作業。叢集服務帳戶必須具備權限,才能模擬對應至使用者的服務帳戶 (請參閱「服務帳戶權限」)。
建議:為不同叢集使用不同的叢集服務帳戶,讓每個叢集服務帳戶只能模擬有限的對應使用者服務帳戶群組。