Multi-tenancy Aman Berbasis Akun Layanan Dataproc

Dataproc Service Account berbasis Secure Multi-tenancy (disebut "secure multi-tenancy", di bawah) memungkinkan Anda berbagi cluster dengan beberapa pengguna, dengan kumpulan 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.

Jika pengguna mengirimkan tugas ke cluster, tugas tersebut:

  • berjalan sebagai pengguna OS tertentu dengan entity 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 bagi 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 pada VM cluster, akan diblokir. Selain itu, tugas tidak dapat dijalankan 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 yang aman Dataproc, gunakan tanda --secure-multi-tenancy-user-mapping untuk menentukan daftar pemetaan antar-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 antar-akun layanan dalam file YAML atau JSON Cloud Storage atau lokal. 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 ditunjukkan dalam perintah di atas, cluster --scopes harus menyertakan setidaknya https://www.googleapis.com/auth/iam, yang diperlukan akun layanan cluster untuk 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 dapat meniru grup akun layanan pengguna yang dipetakan, terbatas dan ditujukan.