現在、SaaSサービスの人気が高まっている。では、SaaSとは何でしょうか?また、SSLとは何でしょうか?なぜSaaSにSSLが必要なのでしょうか?本記事では、SaaS、SSL、それらのメリットとデメリット、そして顧客のためにSaaSサービスを保護する方法について説明します。
1. SSLとは
WebサイトでSSL証明書という言葉をよく耳にしますが、SSL証明書とは何でしょうか?なぜそれが必要なのでしょうか?SSLは、Secure Sockets Layer(セキュア・ソケット・レイヤー)の略です。
SSLは、ウェブサーバーとブラウザの間で暗号化通信を行うためのセキュリティ技術です。この技術は、サーバーとユーザーのブラウザの間で送信されるすべてのデータがプライベートで保護されていることを保証します。
現在、SSLは世界中の何百万ものウェブサイトで使用されるセキュリティ標準であり、インターネット上で送信されるデータを保護しています。
SSLは、ウェブサーバーとブラウザの間で送信されるすべてのデータが一般のインターネット環境から分離され、プライベートに保たれることを保証します。
基本的に、SSL証明書はウェブサイトの信頼性を検証するものであり、ウェブサイトとその顧客の間で交換されるすべてのデータが暗号化され、傍受されるリスクを防ぎます。
2. SaaSについて
2.1 SaaSとは
SaaS(Software-as-a-Service)は、ソフトウェア・アプリケーションのライセンスと配布に基づくクラウド・コンピューティング・サービスです。ソフトウェア製品を販売する代わりに、プロバイダーはそのソフトウェアに基づくサービスを提供します。
つまり、ソフトウェアを個々のコンピュータにダウンロードしてインストールするのではなく、インターネット上で提供します。簡単に言えば、サービスを利用したい顧客は定期的に料金を支払うだけで、ウェブサイトにアクセスしてサービスを利用できます。
聞き慣れないかもしれませんが、私たちはこのサービスをよく利用しています。代表的なサービスプロバイダーには、Amazon Web Services、Oracle、Adobe Creative Cloud、Slack、Dropbox、Google、IBM、Microsoftなどがあります。
2.2 メリット
SaaSは、インストールの必要性をなくし、自分のコンピューターやデータセンターでサービスを実行することと密接に関係しています。これにより、サービス利用者はより多くのメリットを得ることができます。
2.2.1 コスト削減
SaaSを利用することで、企業はコスト、時間、人員を大幅に削減し、業務効率を高めることができます。
SaaSを利用しない場合、企業はソフトウェアの設計や購入、インストール、データベースのセットアップなどに多額の費用を支払わなければならない可能性があります。さらに、毎年のメンテナンス費用もかかります。一方、SaaSの利用コストは低く、ほとんどの利用ニーズを満たすことができます。
SaaSサービスは通常、顧客がサービスを利用する前に体験できる無料トライアルパッケージを提供しています。
2.2.2 いつでもアクセスが可能
SaaSプロバイダーはインターネット経由でサービスを提供するため、ユーザーはインターネットに接続できるデバイスやブラウザから簡単にソフトウェアにアクセスできます。
SaaSを利用する場合、追加アカウントを作成して全従業員に提供するだけで、より柔軟な働き方が可能になります。特に、従業員が会社にいない場合でも、共有データにアクセスし、必要なドキュメントを検索し、割り当てられたタスクを実行することができます。
2.2.3 迅速なデプロイメント
SaaSでは、インストールやオンサイトでのソフトウェア設定が不要なため、利用プランに加入後、すぐにソフトウェアを導入できます。
2.2.4 拡張性と統合性
クラウドデータ全般、特にSaaSの大きな利点はスケーラビリティです。企業の既存のインフラやデータベースに影響を与えることなく、アカウント数を2~3倍に増やしたり、新しいソフトウェアを統合したりすることが簡単にできます。これは、急成長を遂げている企業や、将来的な拡大を計画している企業にとって特に重要です。
2.2.5 データと分析
ソフトウェアの使用状況報告は、どの企業にとっても気になるところでしょう。よくある質問は、ソフトウェアの使用状況が効果的かどうかです。従来のソフトウェアでは、これを測定するのはかなり難しいことでした。
SaaSアプリケーションを使う企業は通常、視覚的なレポートツールにもアクセスできます。これにより、ビジネスオペレーションに関する貴重な詳細情報が得られ、ワークフローを論理的に整理し、時間を節約し、効率を向上させることができます。
2.3 デメリット
2.3.1 インターネットへの依存
SaaSソフトウェアにログインして使用するには、インターネット接続が必要です。ネットワークがカバーされていない地域にいたり、フライト中であったり、通信が途絶えたりすると、SaaSサービスが使えなくなり、仕事に影響を与える可能性があります。
ネットワークが切断されていなくても、通信が不安定であったり、通信速度が遅かったりする状況では、利用が難しくなるでしょう。
2.3.2 セキュリティに関する懸念
第三者のサービスを利用するということは、プロバイダーが設定したポリシーを受け入れることを意味します。すべてのデータがクラウドに保存されるため、データセキュリティに対するリスクがあります。
しかし、クラウドコンピューティングプラットフォームが発展するにつれて、セキュリティに対する懸念は減少しています。これは、SaaSプロバイダーがデータの暗号化に重点を置き、サービスレベルアグリーメント(SLA)においてより厳格なセキュリティを約束しているためです。SaaSソフトウェアの導入を決定する前に、セキュリティ対策を十分に確認することをお勧めします。
3. SSL for SaaS
これ以降が本記事のメイン・トピック「SaaSサービス向けのセキュリティ」です。もちろん、SaaSサービスのセキュリティ・システムをゼロから構築する必要はありません。代わりに、既存のサービスを利用し、SaaSシステムに適用します。
3.1 課題
HBLABがここで取り上げているシステムは、アフィリエイトマーケティング、Eメール送信サービス、オンライン決済、メンバーサイトなどのサービスとともに、オンライン販売キャンペーンを簡単に作成できるマーケティングサービスソフトウェアに関するものです。
簡単に言えば、このシステムを使うことで顧客は自分の販売会社を開設し、自社製品を販売できます。
ご存知のように、どの企業もブランドを確立するためにユニークな名前とドメインが必要です。ここでの課題は、システム内で作成された各企業が、それぞれ異なるドメインを使用することです。WordPressのように、各ユーザーは自分のアカウントにドメインを追加できます。
基本的には、上記の画像のような構造になります。
- The origin(オリジン):システムのメインウェブサイト。例えば、hblab.vn。
- Fallback domain(フォールバック ドメイン):カスタムホスト名が指すバックアップドメイン。例えば、target.hblab.vn。
- Custom hostnames(カスタムホスト名):システムのユーザーによって登録されたホスト名。各企業は必要に応じて1つ以上のカスタムホスト名を持つことができます。例えば、khoipvというユーザーとサービスを使用する必要があるドメインはwww.khoipv.com。
3.2 問題提起
3.2.1 課題の理解
まず、「何をする必要があるのか?」を特定する必要があります。
上記の例では、hblab.vnのサービスを使用する必要があるドメインwww.khoipv.comにDNSレコードを追加するだけで良いです。
ここから、www.khoipv.com にアクセスすると、hblab.vnにアクセスするのと同じになります。つまり、www.khoipv.com は現在、hblab.vnのサーバーを指しています。次に、ホスト名をチェックする処理を追加し、khoipvの会社情報をドメインwww.khoipv.comで表示すればよいです。これは他の会社のホスト名にも同様に適用されます(これはWordPressの仕組みとよく似ています)。
その後、外部の企業がサービスを利用できるように、サーバーhblab.vnが残りのすべてのタスクを処理します。しかし、この時点で問題が発生します。hblab.vnのサービスを利用する企業のカスタムホスト名にはSSLセキュリティがないため、www.khoipv.com へのアクセスはHTTPSではなくHTTPで行われます。確かに、ユーザーは安全でないアドレスにアクセスしたくないでしょう。
そこで目下の問題は、hblab.vnを指すカスタムホスト名のSSL証明書を処理することです。異なるホスト名ごとに個別に登録するのは非現実的なので、どうやってすべてのホスト名の証明書を追加できるのでしょうか?そのため、これらのホスト名の証明書を自動的に登録できるサービスを見つけなければなりません。
3.2.2 サービスの選定
対処すべき問題を理解した後、HBLABチームはこの問題を解決するためのサービスを探し始めました。調査した結果、BrandSSL、Qloaked、SSL-SaaS、Cloudflareなどのサービスが見つかりました。そして、HBLABチームは以下の比較表を作成しました。
サービス | 特徴 | 価格(月額) | 備考 |
BrandSSL | – 保護されたホスト名
– ウェブフック – RestApi |
– 100ホスト名 / $29
– 200ホスト名 / $49 – 500ホスト名 / $99 |
安定したパフォーマンスだが、特別高いわけではない |
Qloaked | – 保護されたホスト名
– RestApi |
1ホスト名 / $1 | 帯域幅の制限により、スピードはあまり高くない |
SSL-SaaS | 保護されたホスト名 | 要問合せ | APIがないため、統合が難しい |
Cloudflare | – 保護されたホスト名
– RestApi |
100ホスト名無料
1ホスト名 / $0.1 |
– 高いパフォーマンス
– 容易に統合が可能 |
様々な選択肢を検討・テストした結果、以下の理由でCloudflareを使用することに決めました。
- すべてのシステム要件を完全にサポート
- 優れたスピードとパフォーマンス
- 非常に手頃なコスト
- 大規模なユーザーコミュニティがあり、効果的なソリューションを簡単に見つけることが可能
3.3 システムへのCloudflareサービスの統合
この記事を理解しやすくするために、「問題提起 」のセクションの例を用いて、これから使用するいくつかの概念を明確にする必要があります。セキュリティ上の理由から、HBLABはシステムやデモを公開しません。この記事の情報は純粋に例示であり、実際に使用することはできません。
- サーバーオリジン(Server origin):システムのメインウェブサイト。例:hblab.vn
- フォールバックドメイン(Fallback domain):カスタムホスト名が指すバックアップドメイン。例:target.hblab.vn
- カスタムホスト名(Custom hostnames):ユーザーがシステムに登録したホスト名。各企業は必要に応じて1つ以上のカスタムホスト名を持つことができます。例:www.khoipv.com
- DNSレコード(ドメインネームシステムレコード = DNS record):対応するIPアドレスを含むドメイン名に関する情報を含むレコードです。
- CNAMEレコード(Canonical Nameレコード = CNAME record):エイリアスレコードとして知られています。DNSのリソースレコードの一種です。CNAMEレコードを使用すると、複数のドメインを同じサーバーにマッピングすることができます。例:hblab.khoipv.com、hblab.jp、blog.hblab.comはすべてCNAMEレコードを使ってhblab.vnを通して一つのサーバーを指すことができます。
3.3.1 アカウント登録
- https://dash.cloudflare.com/sign-up にアクセスして情報を登録します。
- https://dash.cloudflare.com/login で再度ログイン後、ダッシュボードに移動されます。
3.3.2 Cloudflareでドメインを設定する
Cloudflareにサーバーオリジンのドメインを追加して設定します。
- 「Add a site」をクリック
- サーバーオリジンのドメインを入力します。この例では、hblab.vnです。または、「register a new domain」をクリックして新しいドメインを登録することもできます。
- ドメインを追加した後、DNSレコードを確認し、ドメインの現在のネームサーバーをCloudflareを使用するように変更する必要があります。
- ドメイン管理ページでドメインの2つのNSレコードを変更します。例:DNSimpleのDNS管理インターフェイスを使用します。
- 認証に成功したら、次のステップに進むことができます。
3.3.3 ドメインのSSL設定と証明書の作成
次に、フォールバックドメインの設定に移ります。このステップの目的は、システムに登録するユーザーがhblab.vnシステムを指すカスタムホスト名のCNAMEを作成できるようにすることです。
- ダッシュボードにアクセスして、ドメインhblab.vnを選択します。
- SSL/TLS > Custom Hostnamesをクリックします。
- フォールバックオリジンの下にtarget.hblab.vnを追加します。また、target.hblab.vnのDNSレコードを追加します。このDNSは、コードがホストされているサーバーのIPにCNAMEを向けるか、hblab.vn自体にCNAMEを向けます。
- フォールバックオリジンができたら、www.khoipv.com CNAMEをtarget.hblab.vnに向けることができます。このようにして、ホスト名www.khoipv.com は、構築する必要がある下記の構造と同様に、オリジンサーバーに向けられています。
- 次に、サーバーオリジン(hblab.vn)のSSL証明書を作成します。サーバーオリジン用のSSLがすでにある場合、このステップは必要ありません。
- オリジンサーバーで、「create certificate」を選択します。
- ドメイン*.hblab.vnとhblab.vnを入力し、「Create」をクリックします。Origin CertificateとPrivate Keyを保存してください。
以上でCloudflare上のオリジンサーバーの設定は完了です。次に、物理オリジンサーバの証明書を設定する必要があります。前のステップで保存したOrigin CertificateとPrivate Keyを使用します。
3.3.4 サーバオリジンの証明書の設定
Origin CertificateとPrivate Keyを取得した後、証明書をシステムの物理サーバーに追加します。AWSプラットフォームを使っているので、AWS Load Balancerに追加します。サーバーがどこにあるかによって、証明書を別の方法でセットアップする必要があるかもしれません。ドメインhblab.vnにすでに証明書がある場合は、このステップは不要です。
- AWS Certificate Manager(ACM)で証明書を作成します。
- Origin CertificateとPrivate KeyをCertificate bodyとCertificate private keyフィールドに追加し、次のステップに進み、名前を付けて作成します。
- Load Balancerのポート443で先ほど作成した証明書を選択します。
3.3.5 システムへのCloudflare APIの統合
会社作成時にカスタムホスト名を自動的に作成するために、Cloudflare APIをシステムに統合します。
要件: khoipvのようなユーザーがシステムにアカウントを作成し、ドメインwww.khoipv.com を追加すると、システムはkhoipv用のログインアカウントを作成し、カスタムホスト名www.khoipv.com をCloudflareに追加する必要があります。
- ユーザーkhoipvに対して: システムはkhoipvにtarget.hblab.vnを指すwww.khoipv.comのCNAMEを追加するよう要求する必要があります。
- システムに対して: ユーザーkhoipvによって追加されたDNS CNAMEレコードが確認されると、システムはCloudflare上にカスタムホスト名www.khoipv.comを作成します。
手動でCloudflareに追加することも可能です。例:
- Cloudflare上でSSL/TLS > Custom Hostnames > Add Custom Hostnameをクリックします。
- www.khoipv.com を入力し、カスタムホスト名を追加します。
しかし、この方法ではユーザーがいつシステムにアカウントを作成するか分からないという問題があります。Cloudflare APIを使用し、ユーザーがアカウントを作成する際のプロセスを自動化する必要があります。
- APIの情報はCloudflareのドキュメントで入手できます。ここでは、API list/create/delete custom hostnameに焦点を当てます。
- 要件:
- API key: 「Zone.DNS」役割を持つAPI keyを作成します。
- API email: Cloudflareアカウントまたはサブユーザーの作成に使用するメール。
- Zone_id: Cloudflareのドメインhblab.vnのダッシュボードにあります。
- 上記の情報を使ってAPIを統合します。
- 最終的に、www.khoipv.comはhblab.vnを指し、SSLで保護されます。他のユーザーのドメインも同様です。このように、各ユーザーに個別のドメインを自動的に作成できるシステムができました。
4.まとめ
SaaSサービスのSSL問題を解決する上でのHBLABの経験をシェアしました。馴染みのない問題でしたから、情報を収集するのは困難でした。WordPressがやっていることだけは知っていましたが、どのように調べて設定すればいいのかわかりませんでした。この記事を通して、SaaSのSSLについて理解を深めてもらい、自分のシステムに組み込む手助けになればと思います。