Multi-tenancy yang Aman Berbasis Akun Layanan Dataproc

Multi-tenancy yang aman berbasis Akun Layanan Dataproc (disebut "multi-tenancy yang aman", di bawah) memungkinkan Anda berbagi cluster dengan beberapa pengguna, dengan sekumpulan pengguna yang dipetakan ke akun layanan saat cluster dibuat. Dengan multi-tenancy yang aman, pengguna dapat mengirimkan workload interaktif ke cluster dengan identitas pengguna yang terisolasi.

Saat pengguna mengirimkan tugas ke cluster, tugas tersebut:

  • berjalan sebagai pengguna OS tertentu dengan akun utama Kerberos tertentu

  • mengakses resource Google Cloud menggunakan kredensial akun layanan yang dipetakan

Pertimbangan dan Batasan

Saat Anda membuat cluster dengan multi-tenancy aman yang diaktifkan:

  • Anda hanya dapat mengirimkan tugas melalui Jobs API Dataproc.

  • Cluster hanya tersedia untuk pengguna dengan akun layanan yang dipetakan. Misalnya, pengguna yang tidak dipetakan tidak dapat menjalankan tugas di cluster.

  • Akun layanan hanya dapat dipetakan ke pengguna Google, bukan grup Google.

  • Gateway Komponen Dataproc tidak diaktifkan.

  • Akses SSH langsung ke cluster dan fitur Compute Engine, seperti kemampuan untuk menjalankan skrip startup di VM cluster, diblokir. Selain itu, tugas tidak dapat berjalan dengan hak istimewa sudo.

  • Kerberos diaktifkan dan dikonfigurasi di cluster untuk komunikasi intra-cluster yang aman. Autentikasi pengguna akhir melalui Kerberos tidak didukung.

  • Alur Kerja Dataproc tidak didukung.

Membuat cluster multi-tenancy yang aman

Untuk membuat cluster multi-tenancy aman Dataproc, gunakan flag --secure-multi-tenancy-user-mapping untuk menentukan daftar pemetaan pengguna ke akun layanan.

Contoh:

Perintah berikut membuat cluster, dengan pengguna bob@my-company.com dipetakan ke akun layanan service-account-for-bob@iam.gserviceaccount.com dan pengguna alice@my-company.com dipetakan ke akun layanan 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 ...

Atau, Anda dapat menyimpan daftar pemetaan pengguna ke akun layanan dalam file YAML atau JSON lokal atau Cloud Storage. Gunakan flag --identity-config-file untuk menentukan lokasi file.

Contoh file konfigurasi identitas:

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

Contoh perintah untuk membuat cluster menggunakan flag --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 ...

Catatan:

  • Seperti yang ditunjukkan dalam perintah di atas, cluster --scopes harus menyertakan setidaknya https://www.googleapis.com/auth/iam, yang diperlukan agar akun layanan cluster dapat melakukan peniruan identitas.

  • Akun layanan cluster harus memiliki izin untuk meniru identitas akun layanan yang dipetakan ke pengguna (lihat Izin akun layanan).

  • Rekomendasi: Gunakan akun layanan cluster yang berbeda untuk cluster yang berbeda agar setiap akun layanan cluster hanya dapat meniru identitas grup akun layanan pengguna yang dipetakan dan terbatas.