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:
Di konsol Google Cloud , buka halaman Dataproc Membuat cluster Dataproc di Compute Engine: Membuat cluster Dataproc di Compute Engine
Di panel Set up cluster:
- Di bagian Komponen:
- Di bagian Component Gateway, pilih Enable component gateway.
- 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
, propertidynamic.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 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
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 Pemetaan Multi-tenancy:
- Klik Tambahkan Pemetaan Multi-tenant untuk menambahkan pemetaan akun pengguna ke akun layanan.
Konfirmasi atau masukkan setelan cluster lainnya (lihat Membuat cluster Dataproc menggunakan konsol Google Cloud ).
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.
Gunakan file pemetaan YAML: Daripada menggunakan flag--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@
--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. 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@ 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;
- Membuat instance Vertex AI Workbench.
- Di tab Workbench Instances, klik link Open JupyterLab untuk instance Anda.
- 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. 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@ new-user2@my-company.com:SERVICE_ACCOUNT_FOR_NEW_USER2@