Wie Sie Ihre eigene Domain in SaaS-Plattformen einbinden können
April 9, 2024
Benutzerdefinierte Domains sind eine weit verbreitete Funktion auf SaaS-Serviceplattformen. Bekannte Plattformen wie Shopify bieten diesen Service an, um Nutzern ein personalisierteres und flexibleres Erlebnis zu bieten.
Im herkömmlichen Betriebsmodell kaufen Nutzer von SaaS-Plattformen Software-Dienste, die von der Plattform angeboten werden, um einzigartige Benutzererlebnisse zu schaffen und Endnutzer entsprechend zu bedienen. Als Ausgangspunkt des Dienstes weist die SaaS-Plattform jedem Nutzer in der Regel eine zufällig generierte Subdomain als Standardzugangspunkt zu. Um jedoch die Nachfrage nach personalisierten Zugriffsadressen zu erfüllen, unterstützen Plattformen auch die Möglichkeit, dass Nutzer ihre eigenen Domainnamen als Zugangspunkte festlegen, was die Markenbekanntheit und die Benutzerfreundlichkeit erhöht.
Dieser Artikel zielt darauf ab, zu untersuchen, wie die Funktion für benutzerdefinierte Domains in der praktischen Produktentwicklung effektiv implementiert werden kann, und bietet Entwicklern wertvolle Einblicke und Referenzen.
Problemanalyse
Sie fragen sich vielleicht: Können Nutzer diese Funktionalität nicht einfach erreichen, indem sie den DNS-CNAME-Eintrag der Domain auf die von der Plattform bereitgestellte Zufallsdomain verweisen? In der Realität ist das Problem komplexer und konzentriert sich hauptsächlich auf die folgenden zwei Aspekte:
-
Moderne Internetdienste verwenden alle das HTTPS-Protokoll, um die Kommunikationssicherheit zu gewährleisten. Wenn Endnutzer versuchen, auf die von der SaaS-Plattform bereitgestellte Website zuzugreifen, ermöglicht die Verwendung der von der Plattform bereitgestellten Zufalls-Subdomain als Einstiegspunkt die direkte Verwendung eines Wildcard-TLS-Zertifikats, wodurch Probleme mit der Zertifikatsverwaltung vermieden werden. Zu diesem Zeitpunkt ist der Handshake zwischen den Nutzern und dem HTTPS-Dienst der SaaS-Plattform vertrauenswürdig. Bei der Verwendung einer benutzerdefinierten Domain muss die SaaS-Plattform jedoch ein vertrauenswürdiges Zertifikat für diese Domain besitzen, damit der Browser des Endnutzers eine korrekte Verbindung herstellen kann. Dies erfordert, dass die Plattform entweder von Nutzern hochgeladene Zertifikate akzeptiert oder gehostete Zertifikatsverwaltungsdienste anbietet.
-
Nach der Herstellung einer sicheren Verbindung muss die SaaS-Plattform auch identifizieren, welchen Mandanten der Endnutzer auf der Plattform zu erreichen versucht. Dies erfordert, dass die Plattform eine Zuordnungstabelle von Domains und Mandantenkennungen pflegt, spezifische Mandanteninformationen aus eingehenden Anfragen, wie z.B. den Host-Request-Header, extrahiert und die Zuordnungstabelle abfragt, um die Mandanten-ID zu finden, um die erforderlichen Daten an den Anfragenden zurückzugeben.
TLS-Zertifikatsverwaltung
Führende Cloud-Dienste
Große Cloud-Dienstanbieter wie AWS (Amazon Web Services) und GCP (Google Cloud Platform) bieten umfassende Zertifikatsverwaltungsdienste und entsprechende API-Schnittstellen an, wobei Cloudflare sogar eine spezielle Lösung, Cloudflare for SaaS, speziell für SaaS-Dienste eingeführt hat.
Am Beispiel von AWS ermöglicht dessen AWS Certificate Manager-Dienst SaaS-Plattformen, über seine API problemlos vertrauenswürdige Zertifikate für benutzerdefinierte Domains auszustellen. Als Dienst innerhalb des AWS-Ökosystems integriert er sich nahtlos mit anderen Kernfunktionen wie Elastic Load Balancer und CloudFront, sodass von ACM ausgestellte Zertifikate direkt für die TLS-Terminierung verwendet werden können.
Mit diesen Cloud-Diensten können Plattformen TLS-Zertifikate in einem One-Stop-Shop verwalten, was durchaus attraktiv klingt. In den frühen Phasen eines SaaS-Dienstes können diese Cloud-Dienste die Belastung der Entwickler erheblich verringern, sodass sie sich stärker auf die Implementierung der Geschäftslogik konzentrieren können. Im Streben nach einem konsistenten Benutzererlebnis offenbaren diese Cloud-Dienste jedoch auch einige potenzielle Probleme.
Am Beispiel von AWS Certificate Manager erfordert dieser bei der Ausstellung von Zertifikaten eine Domain-Eigentumsverifizierung. Dieser Prozess erfordert, dass Domain-Inhaber spezifische CNAME-Einträge in ihren DNS-Einträgen setzen, die auf die Adresse von acm-validations.aws
verweisen. Darüber hinaus muss dieser Eintrag für einen längeren Zeitraum aufrechterhalten werden, um nachfolgende Zertifikatsverlängerungsoperationen zu ermöglichen. Dies bedeutet, dass SaaS-Plattformen spezifische Implementierungsdetails, die für die Cloud-Plattform spezifisch sind, den Nutzern offenlegen müssen. Darüber hinaus hält sich dieser Mechanismus nicht an gängige Zertifikatsautomatisierungsstandards wie das ACME-Protokoll. Daher können SaaS-Plattformen eng an AWS-Cloud-Dienste gebunden werden. Wenn eine SaaS-Plattform eine große Anzahl von Nutzern hat, wird die Migration (die eine Neuanpassung der DNS-Einträge durch jeden Nutzer erfordert) zu einer fast unmöglichen Aufgabe.
Darüber hinaus unterstützen vertrauenswürdige Zertifikate, die von ACM-Diensten ausgestellt werden, das Herunterladen nicht, was bedeutet, dass diese Zertifikate nur von anderen Diensten innerhalb des AWS-Ökosystems verwendet werden können, was die Erweiterung auf andere Cloud-Anbieter erschwert und somit die Multi-Cloud-Flexibilität einschränkt.
Automatisierte Zertifikatsverwaltung
Mit Let's Encrypt und anderen Zertifizierungsstellen (CAs), die auf dem Automatic Certificate Management Environment (ACME, RFC8555) basieren, die allmählich zum Mainstream werden, ist die automatisierte Zertifikatsverwaltung nicht mehr exklusiv für Cloud-Dienste. Heutzutage kann jeder Entwickler problemlos die automatische Zertifikatsausstellung und -verlängerung implementieren, was die Dienstnutzbarkeit und Sicherheit erheblich verbessert.
Die ACME-Spezifikation definiert verschiedene Mechanismen zur Domain-Eigentumsverifizierung, darunter DNS TXT, HTTP, TLS ALPN usw., die Zertifikatsantragstellern flexible und vielfältige Optionen bieten. Im SaaS-Szenario ist die HTTP-Authentifizierungsmethode besonders geeignet. Nutzer müssen lediglich DNS-CNAME-Einträge für ihre benutzerdefinierten Domains konfigurieren, die auf die von der Plattform zugewiesene Zufallsdomain oder einen einheitlichen CNAME-Zugangspunkt verweisen. Beispielsweise kann die Plattform verlangen, dass Nutzer example.com auf cname.contoso.com auflösen, und dieser CNAME-Zugangspunkt verweist auf den HTTP-Dienst, der von der Plattform selbst bereitgestellt wird. Dieses Design vereinfacht den Zertifikatsausstellungsprozess und macht ihn effizienter.
Sobald die Domain-Konfiguration korrekt ist, kann die Plattform die API der CA aufrufen, um Zertifikatsaufträge zu erstellen. Die CA greift dann über HTTP auf die Domain des Nutzers zu. Da die Domain zu diesem Zeitpunkt bereits auf den Zugangspunkt der Plattform verweist, kann die Plattform die spezifischen Zufallsstring-Verifizierungsbedingungen der CA leicht erfüllen und so die Domain-Eigentumsverifizierung abschließen und das Zertifikat herunterladen.
Dieser Mechanismus vereinfacht nicht nur den Konfigurationsprozess des Nutzers, sondern vermeidet auch den Aufwand, DNS-Einträge häufig zu ändern. Noch wichtiger ist, dass er die Plattform von den Beschränkungen bestimmter Cloud-Dienstanbieter befreit, sodass SaaS-Plattformen ein freundlicheres und konsistenteres Benutzererlebnis bieten können.
Darüber hinaus bedeutet die Verwendung dieses Mechanismus nicht, dass CDN- oder Lastenausgleichsdienste nicht für die TLS-Terminierung in der Cloud genutzt werden können. Tatsächlich unterstützen Zertifikatsverwaltungsdienste, die von Cloud-Dienstanbietern wie AWS bereitgestellt werden, Entwickler dabei, selbstverwaltete Zertifikate über APIs für den Datenverkehrszugriff zu importieren. Entwickler müssen lediglich die Zertifikatsausstellung in ihren eigenen Programmen abschließen und dann das Zertifikat in den Zertifikatsverwaltungsdienst des Cloud-Dienstanbieters importieren, um eine nahtlose Integration und effiziente Nutzung von Cloud-Ressourcen zu erreichen.
Multi-Tenant-Systeme
Nach der erfolgreichen Handhabung von TLS-Zertifikaten besteht die nächste Herausforderung darin, die Multi-Tenant-Logik auf SaaS-Plattformen zu verwalten. Da SaaS-Plattformen nicht nur die spezifischen Bedürfnisse einer kleinen Anzahl von Nutzern bedienen, sondern bestrebt sind, eine einheitliche Reihe von Funktionen für eine breite Palette von Nutzern bereitzustellen, verwenden ihre Systemarchitekturen typischerweise Multi-Tenant-Designs. In diesem Design identifiziert die Plattform verschiedene Mandanten über eindeutige Mandanten-IDs und bietet deren jeweiligen Endnutzern entsprechende Dienste an.
Die Implementierung von Mandantenidentifikationsmechanismen ist relativ einfach. Da Domain-Eigentumsverifizierung und Zertifikatsverwaltung erforderlich sind, müssen Nutzer benutzerdefinierte Domains in der Konsole der SaaS-Plattform konfigurieren und den Systemanweisungen folgen, um die DNS-Auflösung einzurichten. Sobald das System die Zertifikatskonfiguration abgeschlossen hat, werden Aufzeichnungen über benutzerdefinierte Domains im System gespeichert und mit dem aktuellen Mandanten verknüpft. Daher muss das System, wenn es eine Anfrage erhält, lediglich das Host-Feld aus dem HTTP-Request-Header extrahieren, um die Zugriffsdomain zu bestimmen, die vom Browser des Clients verwendet wird. Anschließend kann das System durch Abfrage des Mandantendatensatzes, der dieser Domain entspricht, schnell die Mandanten-ID identifizieren. Sobald die Mandanten-ID ermittelt ist, kann das System präzise die Daten des entsprechenden Mandanten abfragen und darauf zugreifen.
Fazit
Benutzerdefinierte Domains sind eine Kernfunktion auf SaaS-Plattformen, die darauf abzielt, Nutzern ein personalisierteres und flexibleres Zugriffserlebnis zu bieten. Bei der Implementierung der benutzerdefinierten Domain-Funktionalität müssen zwei Schlüsselprobleme angegangen werden: die Verwaltung von TLS-Zertifikaten und die Verwaltung von Multi-Tenant-Systemen.
Durch die Lösung dieser beiden Probleme können wir die Kommunikationssicherheit und die personalisierten Dienste in der Mandantenidentifikation sicherstellen, was die Dienstqualität und das Benutzererlebnis von SaaS-Plattformen erheblich verbessert. Dies wird dazu beitragen, das Vertrauen und die Zufriedenheit der Nutzer mit der Plattform zu stärken und deren nachhaltige Entwicklung zu fördern.