Membuat cluster multi-tenant menggunakan akun layanan

Multi-tenancy aman berbasis akun layanan Dataproc memungkinkan Anda membagikan cluster kepada beberapa pengguna, dengan sekumpulan akun pengguna yang dipetakan ke akun layanan saat cluster dibuat. Pengguna dapat mengirimkan beban kerja interaktif, seperti notebook Jupyter, ke kernel yang berjalan di cluster multi-tenant dengan lingkungan pengguna yang terisolasi.

Saat pengguna mengirimkan tugas ke cluster multi-tenant:

  • Tugas berjalan sebagai pengguna OS tertentu dengan akun utama Kerberos tertentu.

  • Tugas mengakses Google Cloud resource menggunakan akun layanan yang dipetakan.

Dokumen ini menunjukkan cara membuat cluster multi-tenant Dataproc, lalu meluncurkan dan menghubungkan notebook Jupyter ke Kernel PySpark yang berjalan di cluster.

Pertimbangan dan batasan

Saat Anda membuat cluster multi-tenant:

  • Cluster hanya tersedia untuk pengguna Akun Google dengan akun layanan yang dipetakan. Grup Google tidak dapat dipetakan. Pengguna yang tidak dipetakan tidak dapat menjalankan tugas di cluster.

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

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

  • Alur Kerja Dataproc tidak didukung.

Membuat cluster multi-tenant

Anda mengaktifkan fitur multi-tenant saat membuat cluster Dataproc.

Konsol

Buat cluster Dataproc menggunakan Google Cloud konsol, seperti berikut:

  1. Di konsol Google Cloud , buka halaman Dataproc Membuat cluster Dataproc di Compute Engine: Membuat cluster Dataproc di Compute Engine

  2. Di panel Set up cluster:

    1. Di bagian Komponen:
      1. Di bagian Component Gateway, pilih Enable component gateway.
      2. Di bagian Optional components, pilih Jupyter Kernel Gateway agar beberapa pengguna dapat menghubungkan notebook Jupyter mereka ke cluster multi-tenant.
  3. Di panel Sesuaikan cluster:

    1. Di bagian Properti cluster:

      1. Untuk mengizinkan penambahan atau penghapusan pengguna multi-tenant tanpa membuat ulang cluster (lihat Memperbarui pengguna cluster multi-tenant), klik Tambahkan Properti, lalu tambahkan awalan dataproc, properti dynamic.multi.tenancy.enabled, dan tetapkan nilainya ke true.

        Rekomendasi: Karena YARN menggunakan resource cluster yang signifikan untuk setiap kernel notebook yang berjalan di cluster multi-tenant, tambahkan properti Spark dan YARN untuk meningkatkan alokasi resource.

        Contoh:

        Awalan Kunci Nilai
        kilau spark.driver.memory 5G
        kilau spark.executor.memory 5G
        kilau spark.executor.cores 200
        capacity-scheduler yarn.scheduler.capacity.maximum-am-resource-percent 0,5

  4. Di panel kelola keamanan:

    1. Di bagian Akses project, pilih Memungkinkan cakupan cloud-platform untuk cluster ini.
    2. Di bagian Secure Multi Tenancy:
      1. Pilih Aktifkan.
      2. Di bagian Pemetaan Multi-tenancy:
        1. Klik Tambahkan Pemetaan Multi-tenant untuk menambahkan pemetaan akun pengguna ke akun layanan.
  5. Konfirmasi atau masukkan setelan cluster lainnya (lihat Membuat cluster Dataproc menggunakan konsol Google Cloud ).

  6. Klik Buat.

gcloud

Gunakan gcloud dataproc clusters create command dengan flag --secure-multi-tenancy-user-mapping untuk menentukan daftar pemetaan akun pengguna ke akun layanan.

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --secure-multi-tenancy-user-mapping=USER_MAPPINGS: \
    --properties "dataproc:dataproc.dynamic.multi.tenancy.enabled=true" \
    --service-account=CLUSTER_SERVICE_ACCOUNT@ \
    --scopes=https://www.googleapis.com/auth/iam \
    --optional-components=JUPYTER_KERNEL_GATEWAY \
    --enable-component-gateway \
    other args ...

Catatan:

  • USER_MAPPINGS: Tentukan daftar yang dipisahkan koma yang memetakan akun pengguna ke akun layanan.

    --secure-multi-tenancy-user-mapping=UserA@my-company.com:SERVICE_ACCOUNT_FOR_USERA@,UserB@my-company.com:SERVICE_ACCOUNT_FOR_USERB@,UserC@my-company.com:SERVICE_ACCOUNT_FOR_USERC@
    
    Gunakan file pemetaan YAML: Daripada menggunakan flag --secure-multi-tenancy-user-mapping untuk menentukan pemetaan akun pengguna ke akun layanan, Anda dapat menggunakan flag --identity-config-file untuk menentukan file YAML lokal atau Cloud Storage yang berisi pemetaan.
    --identity-config-file=LOCAL_FILE or gs://BUCKET/FOLDER/FILENAME
    
    Setiap baris dalam file pemetaan memetakan akun pengguna ke akun layanan. Baris pertama berisi header user_service_account_mapping:.
    user_service_account_mapping:
    UserA@my-company.com:SERVICE_ACCOUNT_FOR_USERA@
    UserB@my-company.com:SERVICE_ACCOUNT_FOR_USERB@
    UserC@my-company.com:SERVICE_ACCOUNT_FOR_USERC@
    

  • --properties "dataproc:dataproc.dynamic.multi.tenancy.enabled=true": Properti ini memungkinkan penambahan atau penghapusan pengguna cluster multi-tenant tanpa membuat ulang cluster (lihat Memperbarui pengguna cluster multi-tenant).

    Rekomendasi: Karena YARN menggunakan resource cluster yang signifikan untuk setiap kernel notebook yang berjalan di cluster multi-tenant, tambahkan properti Spark dan YARN untuk meningkatkan alokasi resource.

    Contoh:

    --properties=" \
    spark:spark.driver.memory=5g,\
    spark:spark.executor.memory=5g,\
    spark:spark.executor.cores=200, \
    capacity-scheduler:yarn.scheduler.capacity.maximum-am-resource-percent=0.5"
    
  • CLUSTER_SERVICE_ACCOUNT (Opsional): Anda dapat menggunakan --service-account flag untuk menentukan akun layanan VM kustom untuk cluster. Jika Anda menghapus tanda ini, akun layanan VM cluster default, PROJECT_NUMBER-compute@, akan digunakan.

    Rekomendasi: Gunakan akun layanan cluster yang berbeda untuk cluster yang berbeda agar setiap akun layanan VM cluster hanya dapat meniru sekelompok kecil akun layanan pengguna yang dipetakan.

  • --scopes=https://www.googleapis.com/auth/iam diperlukan agar akun layanan cluster dapat melakukan peniruan identitas.

  • --enable-component-gateway dan --optional-components=JUPYTER_KERNEL_GATEWAY: Mengaktifkan Dataproc Component Gateway dan Jupyter Kernel Gateway memungkinkan beberapa pengguna menghubungkan notebook Jupyter mereka ke cluster multi-tenant.

API

Gunakan SecurityConfig.IdentityConfig.userServiceAccountMapping field untuk menentukan daftar pemetaan akun pengguna ke akun layanan.

Memberikan izin Identity and Access Management

Untuk menghubungkan notebook pengguna ke kernel notebook yang berjalan di cluster multi-tenant, pengguna yang dipetakan, akun layanan yang dipetakan, dan akun layanan VM cluster harus memiliki izin IAM yang diperlukan untuk mengakses resource.

Izin pengguna yang dipetakan

Setiap pengguna yang dipetakan harus memiliki izindataproc.clusters.get dan dataproc.clusters.use, yang diperlukan agar pengguna dapat mengakses dan terhubung ke kernel notebook yang berjalan di cluster multi-tenant. Anda dapat memberikan peran Dataproc Editor (roles/dataproc.editor), yang berisi izin ini (lihat Memberikan satu peran IAM), atau membuat peran khusus dengan izin ini.

Izin akun layanan yang dipetakan

Setiap akun layanan yang dipetakan harus memiliki izin yang diperlukan oleh aplikasi notebook pengguna yang dipetakan, seperti akses ke bucket Cloud Storage atau akses ke tabel BigQuery (lihat Mengelola akses ke akun layanan).

Izin akun layanan VM

Akun layanan VM cluster multi-tenant harus memiliki izin iam.serviceAccounts.getAccessToken pada setiap akun layanan yang dipetakan. Anda dapat memberikan peran Service Account Token Creator (roles/iam.serviceAccountTokenCreator), yang berisi izin ini (lihat Mengelola akses ke akun layanan), atau membuat peran kustom dengan izin ini. Lihat Akun layanan VM Dataproc untuk mengetahui informasi tentang peran akun layanan VM lainnya.

Menghubungkan notebook Jupyter ke kernel cluster multi-tenant

Pengguna cluster multi-tenant yang dipetakan dapat menghubungkan Vertex AI Workbench atau notebook Jupyter yang dikelola pengguna ke kernel yang diinstal di cluster multi-tenant.

Notebook Vertex AI

Untuk membuat dan menghubungkan notebook Jupyter ke cluster multi-tenant, lakukan hal berikut;

  1. Membuat instance Vertex AI Workbench.
  2. Di tab Workbench Instances, klik link Open JupyterLab untuk instance Anda.
  3. Di bagian Notebook Cluster Dataproc, klik kartu PySpark (Cluster YARN) di MULTI_TENANCY_CLUSTER_NAME untuk terhubung ke dan meluncurkan notebook PySpark Jupyter baru.

Notebook yang dikelola pengguna

Untuk membuat dan menghubungkan notebook Jupyter yang dikelola pengguna ke cluster multi-tenant Dataproc, ikuti langkah-langkah untuk Menginstal ekstensi JupyterLab di VM yang dikelola pengguna.

Memperbarui pengguna cluster multi-tenant (Pratinjau)

Jika Anda menetapkan properti cluster dataproc:dataproc.dynamic.multi.tenancy.enabled ke true saat membuat cluster multi-tenant, Anda dapat menambahkan, menghapus, atau mengganti pengguna cluster multi-tenant setelah pembuatan cluster.

Menambahkan pengguna

Perintah update berikut menggunakan flag --add-user-mappings untuk menambahkan dua pemetaan akun pengguna ke akun layanan baru ke cluster multi-tenant yang aman.

gcloud dataproc clusters update CLUSTER_NAME \
    --region=REGION \
    --add-user-mappings=new-user1@my-company.com=SERVICE_ACCOUNT_FOR_NEW_USER1@,new-user2@my-company.com=SERVICE_ACCOUNT_FOR_NEW_USER2@

Hapus pengguna

Perintah update berikut menggunakan flag --remove-user-mappings untuk menghapus dua pengguna dari cluster multi-tenant. Bendera ini menerima akun pengguna yang akan dihapus.

gcloud dataproc clusters update CLUSTER_NAME \
    --region=REGION \
    --remove-user-mappings=UserB@my-company.com,UserC@my-company.com

Mengganti pengguna

Anda dapat menggunakan perintah update dengan tanda --identity-config-file untuk mengganti kumpulan pengguna yang ada dengan kumpulan baru. Flag ini berguna untuk menambahkan dan menghapus pengguna dengan satu perintah update.

gcloud dataproc clusters update CLUSTER_NAME \
    --region=REGION \
    --identity-config-file=identity-config.yaml

Catatan:

  • --identity-config-file: Tentukan file YAML lokal atau Cloud Storage yang berisi pemetaan akun pengguna ke akun layanan yang baru.
    --identity-config-file=LOCAL_FILE or gs://BUCKET/FOLDER/FILENAME
    
    Setiap baris dalam file pemetaan memetakan akun pengguna ke akun layanan. Baris pertama berisi header user_service_account_mapping:.
    user_service_account_mapping:
    new-user1@my-company.com:SERVICE_ACCOUNT_FOR_NEW_USER1@
    new-user2@my-company.com:SERVICE_ACCOUNT_FOR_NEW_USER2@