Cloud Run untuk platform multi-tenant yang menjalankan kode tidak tepercaya

Halaman ini memberikan praktik terbaik untuk membuat arsitektur multi-tenant guna menghosting kode yang tidak tepercaya dengan Cloud Run. Sebagai Google Cloud pelanggan, "penyewa" didefinisikan sebagai salah satu pelanggan Anda sendiri dan "kode yang tidak tepercaya" adalah kode yang disediakan oleh penyewa ini untuk dijalankan di platform Anda.

Kasus penggunaan

Kasus penggunaan untuk arsitektur tersebut meliputi:

  • Platform hosting aplikasi: Anda menyediakan platform tempat pelanggan men-deploy kode mereka. Misalnya, platform hosting web (pelanggan menyediakan server web) atau platform Functions-as-a-Service (pelanggan menyediakan fungsi).
  • Platform hosting agen: Pelanggan Anda menggunakan SDK untuk membangun agen AI, platform Anda menjalankannya di latar belakang.
  • Platform model yang di-fine-tune: Anda menawarkan kemampuan untuk menyesuaikan model AI berdasarkan per pelanggan. Platform Anda kemudian menjalankannya sesuai permintaan dengan memanfaatkan GPU.
  • Fungsi yang ditentukan pengguna: Software Anda memungkinkan pelanggannya menentukan logika kustom menggunakan kode. Misalnya, Anda menyediakan mesin analisis dan ingin mengizinkan pelanggan menulis fungsi kustom, atau Anda menyediakan gateway API dan ingin mengizinkan pelanggan memfilter atau mengubah permintaan berdasarkan logika kustom mereka sendiri.
  • Ekstensibilitas Software-as-a-Service (SaaS): Anda mungkin menawarkan SaaS dan ingin mengizinkan pelanggan memperluas kemampuannya menggunakan ekstensi. Ekstensi ini mungkin ditulis oleh pelanggan atau partner.

Google Cloud pelanggan berhasil menggunakan Cloud Run dalam produksi untuk kasus penggunaan ini.

Tantangan platform multi-tenant

Tantangan umum dalam membuat arsitektur tersebut meliputi:

  • Keamanan: Tidak mungkin memindai atau membersihkan kode yang diberikan. Kode yang tidak tepercaya dapat mencakup tindakan berbahaya atau dependensi yang rentan. Jika tidak diisolasi dengan benar, kode yang tidak tepercaya berpotensi mengakses data sensitif milik tenant lain. Mengemas kode dalam container saja tidak cukup untuk menciptakan batas keamanan yang kuat. Kode juga perlu dibatasi dalam hal yang dapat dilakukannya dengan menerapkan izin prinsip hak istimewa terendah.
  • Efisiensi biaya: Arsitektur semacam ini bisa menjadi mahal jika setiap tenant menimbulkan biaya tetap untuk platform Anda.
  • Pengelolaan tenant: Mengelola ratusan ribu tenant bisa menjadi tantangan, terutama dalam hal penghapusan data.

Manfaat Cloud Run

Arsitektur berbasis Cloud Run menawarkan solusi untuk tantangan umum dengan banyak manfaat, seperti keamanan, efisiensi biaya, dan pengelolaan tenant.

Keamanan

Cloud Run menyediakan fitur keamanan siap pakai yang relevan dengan arsitektur ini:

  • Isolasi komputasi: Cloud Run memastikan isolasi yang ketat antara instance penampung, baik dari layanan yang sama, atau layanan yang berbeda dari project yang berbeda. Untuk mengetahui informasi selengkapnya tentang keamanan container dan lingkungan eksekusi, lihat Ringkasan desain keamanan.
  • Update keamanan: Update keamanan otomatis image dasar dapat diaktifkan agar sistem operasi dan runtime beban kerja yang di-deploy tetap terupdate dan di-patch tanpa memerlukan deployment ulang skala besar.
  • Isolasi jaringan: Cloud Run tidak hanya melakukan sandbox pada container, tetapi juga menyediakan stack jaringan multi-tenant.
  • Identitas layanan: Workload Cloud Run dapat dikonfigurasi agar memiliki identitas khusus dengan izin terbatas.

Efisiensi biaya

  • Penskalaan hingga nol dan bayar sesuai penggunaan: Instance Cloud Run secara otomatis diskalakan hingga nol saat tidak digunakan, sehingga memastikan workload yang dihosting hanya dikenai biaya saat perlu dijalankan. Sehingga menghasilkan pemanfaatan resource yang sangat efisien dibandingkan dengan arsitektur yang memanfaatkan virtual machine "selalu aktif".
  • Penagihan per permintaan: Selain penskalaan ke nol, Anda dapat memanfaatkan model penagihan yang lebih terperinci yang hanya mengenakan biaya saat permintaan diproses, sehingga memberikan efisiensi biaya yang lebih tinggi.
  • Mulai cepat dan sesuai permintaan: Saat diperkecil, layanan Cloud Run dapat menskalakan kembali dengan cepat, sehingga latensi yang dirasakan oleh pengguna akhir aplikasi yang di-deploy menjadi kecil.
  • Pelabelan biaya otomatis: Semua biaya yang dilaporkan oleh Cloud Run diberi label, sehingga Anda dapat mengotomatiskan atribusi biaya dan pelacakan tenant.
  • Komitmen untuk menurunkan biaya gabungan: Di tingkat akun penagihan, Anda dapat menggunakan diskon abonemen fleksibel untuk mengoptimalkan pengeluaran untuk setiap penggunaan Cloud Run dasar.

Pengelolaan tenant

Karena sifatnya sesuai permintaan, biaya Cloud Run tidak lebih tinggi saat menggunakan beberapa project, sehingga memungkinkan pengelolaan tenant seperti yang dijelaskan dalam Mengatur project Google Cloud Anda. Google Cloud

Arsitektur target untuk platform multi-tenant

Berikut adalah arsitektur yang direkomendasikan:

.

Mengatur Google Cloud project

Anda perlu menyiapkan Google Cloud organisasi, penagihan offline, dan menghubungi tim akun Anda untuk memberi tahu mereka bahwa Anda bertindak sebagai akun reseller. Google Cloud dapat bekerja sama dengan Anda untuk memastikan saluran komunikasi yang tepat tersedia untuk mitigasi penyalahgunaan.

Anda harus menggunakan folder untuk mengatur project Google Cloud , terutama, Anda harus menempatkan project yang menjalankan kode pihak pertama Anda dan project yang menjalankan kode tidak tepercaya dari tenant Anda di folder yang berbeda. Anda perlu mengotomatiskan aktivasi tenant sehingga pembuatan project dan resource tenant tidak memerlukan intervensi manusia.

Google merekomendasikan penggunaan satu Google Cloud project per tenant. Anda juga dapat menghosting beberapa tenant dalam project yang sama, tetapi hal ini memiliki batasan tambahan:

Tenant tunggal per Google Cloud project (Direkomendasikan)

Dalam arsitektur ini, setiap tenant platform Anda dihosting dalam projectGoogle Cloud khusus, yang memiliki banyak manfaat:

  • Keamanan yang lebih sederhana: Project Google Cloud adalah batas ketat untuk semua resource yang dikandungnya. Artinya, jika tenant memerlukan akses ke beberapa Google Cloud resource seperti beberapa layanan Cloud Run, bucket Cloud Storage, Anda dapat menggunakan project sebagai perimeter yang aman.
  • Lebih sedikit batasan:
    • Jumlah resource dalam project tertentu terbatas. Misalnya, Cloud Run hanya mengizinkan pembuatan 1.000 layanan per region dalam satu project. Ada batasan serupa dalam jumlah akun layanan dan resource terkait lainnya.
    • Jumlah project itu sendiri adalah kuota dan dapat ditingkatkan, tidak ada batas untuk jumlah ini bagi organisasi Google Cloud . Ada batas lunak 100.000 project per akun penagihan, yang dapat dilipatgandakan dengan menghubungi Google. Organisasi Anda juga dapat membuat banyak akun penagihan dan mengelompokkannya dalam "grup akun" (saat ini dalam Pratinjau Pribadi).
  • Pemantauan dan pengelolaan yang lebih sederhana:
    • Menggunakan satu project per tenant akan mempermudah proses penghapusan data, yang mana penghapusan data untuk tenant akan sama dengan penghapusan project yang bersangkutan.
    • Google Cloud Monitoring dan Logging berfungsi di seluruh project dan dapat memungkinkan Anda memantau seluruh perangkat Anda.
    • Kuota tingkat project memungkinkan Anda membatasi penggunaan resource Cloud Run untuk tenant tertentu, yang berpotensi menyelaraskan batas dengan tingkat harga Anda sendiri.
    • Kebijakan organisasi kustom memungkinkan Anda menerapkan batasan tertentu di semua project folder, seperti wilayah yang tersedia atau alokasi CPU/memori maksimum.

Membuat project Google Cloud dan menginisialisasi API serta resource dapat menyebabkan latensi. Google merekomendasikan Anda menggunakan kumpulan project yang telah dibuat sebelumnya dan ditetapkan ke tenant Anda jika diperlukan.

Beberapa tenant per Google Cloud project (Tidak disarankan)

Anda dapat menghosting beberapa tenant di project yang sama Google Cloud, tetapi Google tidak merekomendasikan arsitektur ini.

Banyak layanan memiliki batas resource per project. Google Cloud Misalnya, Cloud Run memiliki batas yang tidak dapat disesuaikan,yaitu 1.000 layanan Cloud Run per region dalam satu project. Akibatnya, menghosting beberapa tenant per project tetap mengharuskan Anda mengelola fleet project, yang secara keseluruhan akan meningkatkan kompleksitas pengelolaan tenant. Google Cloud Dari perspektif keamanan, project dirancang sebagai batas keamanan, dan menghosting dua tenant yang berbeda dalam project yang sama mengharuskan Anda lebih berhati-hati dalam hal keamanan.Google Cloud Misalnya, dengan memastikan akun layanan khusus dan izin terperinci.

Perutean permintaan dan domain kustom

Jika ingin mengekspos layanan Cloud Run tenant Anda kepada pengguna akhir, Anda harus menambahkan domain sendiri dan menggunakan logika perutean sendiri. Misalnya, untuk memetakan subdomain ke project Google Cloud yang menghosting layanan tenant.

Anda dapat menerapkan layanan perutean kustom, tetapi Google merekomendasikan penggunaan Load Balancer Aplikasi eksternal global dengan Service Extensions untuk logika perutean. Service Extensions dapat diterapkan sebagai plugin (dengan logika yang dijalankan sebaris dengan pemrosesan permintaan) atau callout (logika perutean didelegasikan ke layanan Cloud Run terpisah yang dapat memanggil salah satu database multiregional yang skalabel milikGoogle Cloud, seperti Spanner).

Dengan menggunakan load balancer aplikasi, Anda juga dapat menambahkan lapisan caching dengan memanfaatkan Cloud CDN dan perlindungan tambahan dari serangan Distributed Denial-of-Service (DDoS) ke platform Anda menggunakan Cloud Armor.

Reputasi dan penyalahgunaan

Platform hosting yang diizinkan untuk menjalankan kode yang tidak tepercaya akan rentan terhadap penyalahgunaan.

Sebaiknya gunakan akun Penagihan Cloud yang berbeda untuk setiap tingkat reputasi yang Anda tawarkan. Misalnya, tenant tingkat gratis Anda tidak boleh dilampirkan ke akun penagihan yang sama dengan pelanggan yang membayar tinggi. Google dapat mempertimbangkan akun penagihan ini pada tingkat reputasi yang berbeda.

Seperti yang dijelaskan di Mengatur project Google Cloud , selain memisahkan per akun penagihan, Anda harus menggunakan folder untuk mengatur project. Google dapat membantu Anda menetapkan kuota tingkat folder untuk memastikan bahwa semua resource dalam folder tidak pernah menggunakan lebih dari maksimum yang ditetapkan, sehingga Anda dapat mengelola biaya platform dengan lebih baik.

Secara default, Google akan otomatis menonaktifkan workload yang melanggar sesuai dengan Google Cloud persyaratan layanan. Google juga dapat mencatat peristiwa deteksi penyalahgunaan di Cloud Logging, yang kemudian dapat Anda tindak lanjuti.