Cara Membawa Domain Sendiri di Platform SaaS

Zeping Bai

Zeping Bai

April 9, 2024

Technology

Domain yang ditentukan pengguna adalah fitur yang banyak digunakan dalam platform layanan SaaS. Platform terkenal seperti Shopify telah menyediakan layanan ini untuk memberikan pengalaman yang lebih personal dan fleksibel kepada pengguna.

Dalam model operasional konvensional, pengguna platform SaaS membeli layanan perangkat lunak yang ditawarkan oleh platform untuk menciptakan pengalaman pengguna yang khas, melayani pengguna akhir sesuai dengan itu. Sebagai titik awal layanan, platform SaaS biasanya menetapkan subdomain yang dihasilkan secara acak kepada setiap pengguna sebagai titik akses default. Namun, untuk memenuhi permintaan alamat akses yang dipersonalisasi, platform juga mendukung pengguna dalam menetapkan nama domain mereka sendiri sebagai titik akses, meningkatkan pengenalan merek dan aksesibilitas pengguna.

Artikel ini bertujuan untuk menggali lebih dalam tentang bagaimana mengimplementasikan fungsionalitas domain kustom pengguna secara efektif dalam pengembangan produk praktis, memberikan wawasan dan referensi yang berharga bagi pengembang.

SaaS

Analisis Masalah

Anda mungkin bertanya-tanya: Bukankah pengguna dapat mencapai fungsionalitas ini hanya dengan mengarahkan rekaman DNS CNAME domain ke domain acak yang disediakan platform? Pada kenyataannya, masalahnya lebih kompleks, terutama berfokus pada dua aspek berikut:

  1. Layanan internet modern semuanya menggunakan protokol HTTPS untuk memastikan keamanan komunikasi. Ketika pengguna akhir mencoba mengakses situs yang disediakan oleh platform SaaS, menggunakan subdomain acak yang disediakan platform sebagai titik masuk memungkinkan penggunaan langsung sertifikat TLS wildcard, memastikan tidak ada masalah dengan manajemen sertifikat. Pada titik ini, jabat tangan antara pengguna dan layanan HTTPS platform SaaS dapat dipercaya. Namun, ketika menggunakan domain kustom pengguna, platform SaaS harus memiliki sertifikat yang dipercaya untuk domain tersebut agar browser pengguna akhir dapat membangun koneksi yang benar, mengharuskan platform untuk menerima sertifikat yang diunggah pengguna atau menyediakan layanan manajemen sertifikat yang dihosting.

  2. Setelah membangun koneksi yang aman, platform SaaS juga perlu mengidentifikasi penyewa mana yang ingin diakses oleh pengguna akhir di platform. Ini mengharuskan platform untuk mempertahankan tabel pemetaan domain dan pengenal penyewa, mengekstrak informasi penyewa tertentu dari permintaan masuk, seperti header permintaan Host, dan menanyakan tabel pemetaan untuk menemukan ID penyewa untuk mengembalikan data yang diperlukan kepada peminta.

Manajemen Sertifikat TLS

Layanan Cloud Terkemuka

Penyedia layanan cloud utama seperti AWS (Amazon Web Services) dan GCP (Google Cloud Platform) menawarkan layanan manajemen sertifikat yang komprehensif dan antarmuka API yang sesuai, dengan Cloudflare bahkan meluncurkan solusi khusus, Cloudflare for SaaS, yang dirancang khusus untuk layanan SaaS.

Mengambil AWS sebagai contoh, layanan AWS Certificate Manager-nya memungkinkan platform SaaS untuk dengan mudah menerbitkan sertifikat yang dipercaya untuk domain kustom yang dikonfigurasi pengguna melalui API-nya. Sebagai layanan dalam ekosistem AWS, ia terintegrasi dengan mulus dengan fungsi inti lainnya seperti Elastic Load Balancer dan CloudFront, memungkinkan sertifikat yang diterbitkan oleh ACM digunakan langsung untuk terminasi TLS.

Dengan layanan cloud ini, platform dapat mengelola sertifikat TLS secara satu atap, yang memang terdengar menarik. Pada tahap awal layanan SaaS, menggunakan layanan cloud ini dapat secara signifikan meringankan beban pengembang, memungkinkan mereka untuk lebih fokus pada implementasi logika bisnis. Namun, dalam mengejar pengalaman pengguna yang konsisten, layanan cloud ini juga mengungkap beberapa masalah potensial.

Cloud in SaaS platforms

Mengambil AWS Certificate Manager sebagai contoh, ia memerlukan verifikasi kepemilikan domain saat menerbitkan sertifikat. Proses ini menuntut pemilik domain untuk menetapkan rekaman CNAME tertentu dalam rekaman DNS mereka yang mengarah ke alamat acm-validations.aws. Selain itu, rekaman ini perlu dipertahankan untuk jangka waktu yang lama untuk operasi perpanjangan sertifikat berikutnya. Ini berarti platform SaaS harus mengekspos detail implementasi spesifik yang spesifik untuk platform cloud kepada pengguna. Selain itu, mekanisme ini tidak mengikuti standar otomatisasi sertifikat umum seperti protokol ACME. Oleh karena itu, platform SaaS mungkin menjadi terikat erat dengan layanan cloud AWS. Ketika platform SaaS memiliki banyak pengguna, migrasi (mengharuskan setiap pengguna untuk menyesuaikan kembali rekaman DNS) menjadi hampir mustahil.

Selanjutnya, sertifikat yang dipercaya yang diterbitkan oleh layanan ACM tidak mendukung pengunduhan, artinya sertifikat ini hanya dapat digunakan oleh layanan lain dalam ekosistem AWS, membuat sulit untuk dengan mudah memperluas ke penyedia cloud lain, sehingga membatasi fleksibilitas multi-cloud.

Manajemen Sertifikat Otomatis

Dengan Let's Encrypt dan Otoritas Sertifikat (CA) lainnya yang berbasis pada Automatic Certificate Management Environment (ACME, RFC8555) yang secara bertahap menjadi arus utama, manajemen sertifikat otomatis tidak lagi eksklusif untuk layanan cloud. Saat ini, setiap pengembang dapat dengan mudah mengimplementasikan penerbitan dan perpanjangan sertifikat otomatis, sangat meningkatkan kegunaan dan keamanan layanan.

Spesifikasi ACME mendefinisikan berbagai mekanisme verifikasi kepemilikan domain, termasuk tetapi tidak terbatas pada DNS TXT, HTTP, TLS ALPN, dll., memberikan opsi yang fleksibel dan beragam bagi pemohon sertifikat. Dalam skenario SaaS, metode autentikasi HTTP sangat cocok. Pengguna hanya perlu mengonfigurasi rekaman DNS CNAME untuk domain kustom mereka, mengarahkannya ke domain acak yang dialokasikan platform atau titik akses CNAME yang terpadu. Misalnya, platform mungkin mengharuskan pengguna untuk mengarahkan example.com ke cname.contoso.com, dan titik akses CNAME ini mengarah ke layanan HTTP yang di-deploy sendiri oleh platform. Desain ini menyederhanakan proses penerbitan sertifikat, membuatnya lebih ringkas dan efisien.

Setelah konfigurasi domain benar, platform dapat memanggil API CA untuk membuat pesanan sertifikat. CA kemudian akan mengakses domain pengguna melalui HTTP. Karena domain sudah mengarah ke titik akses platform pada saat ini, platform dapat dengan mudah memenuhi kondisi verifikasi string acak tertentu dari CA, sehingga menyelesaikan verifikasi kepemilikan domain dan mengunduh sertifikat.

Mekanisme ini tidak hanya menyederhanakan proses konfigurasi pengguna tetapi juga menghindari kerumitan sering memodifikasi rekaman DNS. Lebih penting lagi, ini membebaskan platform dari kendala penyedia layanan cloud tertentu, memungkinkan platform SaaS untuk memberikan pengalaman pengguna yang lebih ramah dan konsisten.

Selain itu, menggunakan mekanisme ini tidak berarti bahwa layanan CDN atau load-balancing tidak dapat digunakan untuk terminasi TLS di cloud. Faktanya, layanan manajemen sertifikat yang disediakan oleh penyedia layanan cloud seperti AWS mendukung pengembang dalam mengimpor sertifikat yang dikelola sendiri melalui API untuk akses lalu lintas. Pengembang hanya perlu menyelesaikan penerbitan sertifikat dalam program mereka sendiri dan kemudian mengimpor sertifikat ke layanan manajemen sertifikat penyedia layanan cloud, sehingga mencapai integrasi yang mulus dan pemanfaatan sumber daya cloud yang efisien.

Sistem Multi-Tenant

Setelah berhasil menangani sertifikat TLS, tantangan berikutnya adalah mengelola logika multi-tenancy pada platform SaaS. Mengingat platform SaaS tidak hanya melayani kebutuhan spesifik sejumlah kecil pengguna tetapi berusaha menyediakan satu set fitur yang terpadu kepada banyak pengguna, arsitektur sistem mereka biasanya mengadopsi desain multi-tenant. Dalam desain ini, platform mengidentifikasi penyewa yang berbeda melalui ID penyewa yang unik dan memberikan layanan yang sesuai kepada pengguna akhir mereka masing-masing.

Manajemen multi-tenant

Mengimplementasikan mekanisme identifikasi penyewa relatif mudah. Karena verifikasi kepemilikan domain dan manajemen sertifikat diperlukan, pengguna harus mengonfigurasi domain kustom di konsol platform SaaS dan mengikuti instruksi sistem untuk mengatur resolusi DNS. Setelah sistem menyelesaikan konfigurasi sertifikat, catatan domain kustom akan disimpan dalam sistem dan dikaitkan dengan penyewa saat ini. Oleh karena itu, setiap kali sistem menerima permintaan, sistem hanya perlu mengekstrak bidang Host dari header permintaan HTTP untuk menentukan domain akses yang digunakan oleh browser klien. Selanjutnya, dengan menanyakan catatan penyewa yang sesuai dengan domain ini, sistem dapat dengan cepat mengidentifikasi pengenal penyewa. Setelah pengenal penyewa diperoleh, sistem dapat dengan tepat menanyakan dan mengakses data penyewa yang sesuai.

Kesimpulan

Domain kustom adalah fitur inti pada platform SaaS yang bertujuan untuk memberikan pengalaman akses yang lebih personal dan fleksibel kepada pengguna. Dalam proses mengimplementasikan fungsionalitas domain kustom, dua masalah kunci harus diatasi: manajemen sertifikat TLS dan manajemen multi-tenant.

Dengan mengatasi dua masalah ini, kita dapat memastikan keamanan komunikasi dan layanan yang dipersonalisasi dalam identifikasi penyewa, secara signifikan meningkatkan kualitas layanan dan pengalaman pengguna platform SaaS. Ini akan membantu memperkuat kepercayaan dan kepuasan pengguna terhadap platform, mendorong pengembangan yang berkelanjutan.

Tags: