Multi-tenancy aman berbasis akun layanan Managed Service untuk Apache Spark memungkinkan Anda berbagi cluster dengan 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 Managed Service untuk Apache Spark, 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 Managed Service untuk Apache Spark tidak didukung.
Membuat cluster multi-tenant
Anda mengaktifkan fitur multi-tenant saat Anda membuat cluster Managed Service untuk Apache Spark.
Konsol
Buat cluster menggunakan konsol Google Cloud , sebagai berikut:
- Di Google Cloud konsol, buka halaman Create cluster.
- Klik Additional configuration untuk meluaskan bagian tersebut.
- Edit Optional components.
- Centang kotak Enable components in the UI untuk mengaktifkan UI komponen, lalu centang kotak untuk Jupyter Kernel Gateway.
- Klik Save.
- Edit Customization &Other.
- Untuk mengizinkan penambahan atau penghapusan pengguna multi-tenant tanpa membuat ulang cluster (lihat Memperbarui pengguna cluster multi-tenant), di bagian Cluster properties, klik + Add properties.
- Tambahkan properti berikut: Awalan:
dataproc, Kunci:dataproc.dynamic.multi.tenancy.enabled, Nilai:trueRekomendasi: 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 spark spark.driver.memory 5g spark spark.executor.memory 5g spark spark.executor.cores 2 capacity-scheduler yarn.scheduler.capacity.maximum-am-resource-percent 0,5 - Klik Save.
- Edit Security.
- Di bagian Project access, centang kotak untuk Enables the cloud-platform scope for this cluster.
- Di bagian Secure Multi Tenancy, pilih Enable.
- Di bagian Multi-tenancy Mapping, klik Add Multi-tenancy Mapping untuk memetakan akun pengguna ke akun layanan.
- Klik Save.
- Konfirmasi setelan lainnya, lalu klik Create cluster.
gcloud
Gunakan gcloud dataproc clusters create command dengan
--secure-multi-tenancy-user-mapping
flag 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@iam.gserviceaccount.com \ --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.
Menggunakan file pemetaan YAML: Daripada menggunakan--secure-multi-tenancy-user-mapping=UserA@my-company.com:SERVICE_ACCOUNT_FOR_USERA@iam.gserviceaccount.com,UserB@my-company.com:SERVICE_ACCOUNT_FOR_USERB@iam.gserviceaccount.com,UserC@my-company.com:SERVICE_ACCOUNT_FOR_USERC@iam.gserviceaccount.com
--secure-multi-tenancy-user-mappingflag untuk menentukan pemetaan akun pengguna ke akun layanan, Anda dapat menggunakan--identity-config-fileflag untuk menentukan file YAML lokal atau Cloud Storage yang berisi pemetaan. Setiap baris dalam file pemetaan memetakan akun pengguna ke akun layanan. Baris pertama berisi header--identity-config-file=LOCAL_FILE or gs://BUCKET/FOLDER/FILENAME
user_service_account_mapping:.user_service_account_mapping: UserA@my-company.com:SERVICE_ACCOUNT_FOR_USERA@iam.gserviceaccount.com UserB@my-company.com:SERVICE_ACCOUNT_FOR_USERB@iam.gserviceaccount.com UserC@my-company.com:SERVICE_ACCOUNT_FOR_USERC@iam.gserviceaccount.com
--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 flaguntuk menentukan akun layanan VM kustom untuk cluster. Jika Anda menghapus flag ini, akun layanan VM cluster default,PROJECT_NUMBER-compute@developer.gserviceaccount.com, akan digunakan.Rekomendasi: Gunakan akun layanan cluster yang berbeda untuk cluster yang berbeda agar setiap akun layanan VM cluster hanya dapat meniru identitas grup terbatas akun layanan pengguna yang dipetakan.
--scopes=https://www.googleapis.com/auth/iamdiperlukan agar akun layanan cluster dapat melakukan peniruan identitas.--enable-component-gatewaydan--optional-components=JUPYTER_KERNEL_GATEWAY: Mengaktifkan Managed Service untuk Apache Spark 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 izin dataproc.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
Managed Service untuk Apache Spark Editor (roles/dataproc.editor),
yang berisi izin ini (lihat Memberikan satu peran IAM),
atau membuat peran kustom 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
di 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 Managed Service untuk Apache Spark
guna 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:
- Membuat instance Vertex AI Workbench.
- Di tab Workbench Instances, klik link Open JupyterLab untuk instance Anda.
- Di bagian Dataproc Cluster Notebooks, klik
PySpark (YARN Cluster) on
MULTI_TENANCY_CLUSTER_NAMEkartu untuk terhubung dan meluncurkan notebook Jupyter PySpark baru.
Notebook yang dikelola pengguna
Untuk membuat dan menghubungkan notebook Jupyter yang dikelola pengguna ke cluster multi-tenant Managed Service untuk Apache Spark, 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.enabledke true saat Anda 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@iam.gserviceaccount.com,new-user2@my-company.com=SERVICE_ACCOUNT_FOR_NEW_USER2@iam.gserviceaccount.com
Menghapus pengguna
Perintah update berikut menggunakan flag --remove-user-mappings untuk menghapus dua pengguna dari cluster multi-tenant. Flag 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 flag --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 baru ke akun layanan. Setiap baris dalam file pemetaan memetakan akun pengguna ke akun layanan. Baris pertama berisi header--identity-config-file=LOCAL_FILE or gs://BUCKET/FOLDER/FILENAME
user_service_account_mapping:.user_service_account_mapping: new-user1@my-company.com:SERVICE_ACCOUNT_FOR_NEW_USER1@iam.gserviceaccount.com new-user2@my-company.com:SERVICE_ACCOUNT_FOR_NEW_USER2@iam.gserviceaccount.com