以 Dataproc 服務帳戶為基礎的多用戶群安全架構

以 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,叢集服務帳戶需要這個項目才能執行模擬作業。

  • 叢集服務帳戶必須具備權限,才能模擬對應至使用者的服務帳戶 (請參閱「服務帳戶權限」)。

  • 建議:為不同叢集使用不同的叢集服務帳戶,讓每個叢集服務帳戶只能模擬有限的對應使用者服務帳戶群組。