Multi-tenancy aman berbasis akun layanan Managed Service untuk Apache Spark memungkinkan Anda membagikan cluster kepada beberapa pengguna, dengan serangkaian 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 ini 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 membuat cluster Managed Service untuk Apache Spark.
Konsol
Buat cluster Managed Service untuk Apache Spark menggunakan Google Cloud konsol, sebagai berikut:
Di konsol Google Cloud , buka halaman Managed Service untuk Apache Spark Create a Managed Service for Apache Spark cluster on Compute Engine: Create a Managed Service for Apache Spark cluster on Compute Engine
Di panel Set up cluster:
- Di bagian Komponen:
- Di bagian Component Gateway, pilih Aktifkan gateway komponen.
- Di bagian Optional components, pilih Jupyter Kernel Gateway agar beberapa pengguna dapat menghubungkan notebook Jupyter mereka ke cluster multi-tenant.
- Di bagian Komponen:
Di panel Sesuaikan cluster:
Di bagian Properti cluster:
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, propertidataproc.dynamic.multi.tenancy.enabled, dan tetapkan nilainya ketrue.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 percikan spark.driver.memory 5G percikan spark.executor.memory 5G percikan spark.executor.cores 2 capacity-scheduler yarn.scheduler.capacity.maximum-am-resource-percent 0,5
Di panel Kelola keamanan:
- Di bagian Akses project, pilih Memungkinkan cakupan cloud-platform untuk cluster ini.
- Di bagian Secure Multi Tenancy:
- Pilih Aktifkan.
- Di bagian Multi-tenancy Mapping:
- Klik Tambahkan Pemetaan Multi-tenant untuk menambahkan pemetaan akun pengguna ke akun layanan.
Konfirmasi atau masukkan setelan cluster lainnya (lihat Membuat cluster Managed Service untuk Apache Spark menggunakan konsol Google Cloud ).
Klik Create.
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@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.
Gunakan file pemetaan YAML: Daripada menggunakan flag--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-mappinguntuk menentukan pemetaan akun pengguna ke akun layanan, Anda dapat menggunakan flag--identity-config-fileuntuk 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 tanda 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 sekelompok 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 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 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 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;
- Membuat instance Vertex AI Workbench.
- Di tab Workbench Instances, klik link Open JupyterLab untuk instance Anda.
- Di bagian Dataproc Cluster Notebooks, klik kartu
PySpark (YARN Cluster) on
MULTI_TENANCY_CLUSTER_NAMEuntuk 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 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.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@iam.gserviceaccount.com,new-user2@my-company.com=SERVICE_ACCOUNT_FOR_NEW_USER2@iam.gserviceaccount.com
Hapus pengguna
Perintah update berikut menggunakan flag --remove-user-mappings untuk menghapus dua
pengguna dari cluster multi-tenant. Flag 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 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