今更だけどcloudflareの便利な機能を紹介!
システム開発部の前野です。いつもウェブネーションのコーポレートサイトへご訪問頂きありがとうございます。
コロナの対策ということで、手洗いを普段こまめにしているせいか、普段あまり体調を崩すことはない私ですが、
なんと今週火曜日に胃腸風邪にかかってしまったようで、早朝から昼過ぎまで地獄を味わっておりました。。。
子供もその日胃腸風邪らしい症状になっていたので、私と子供が食べた前日共通の物が、スーパーで買ってきたおはぎなのですが、こんなので胃腸風邪になるのか半信半疑ではあります。
前日(月曜日)は会社に遅くまでいたので、夜ご飯は別々だったので、これは大丈夫でしょう・・・!
目次
cloudflareの便利な機能について
さて話は変わり今回はcloudflareの便利な機能について紹介です。
cloudflareはDDoSに強いことを売りとしたCDNサービスでここ数年で急成長してきました。
以前も簡単に紹介しましたが、cloudflareとはなんぞや?CDNって何?って人におすすめな記事かと思います。
しかしながらcloudflareを仕事やプライベートで使われている方は少ないでしょう。
実際にこのサービスの恩恵を受けれるのは大規模サイトに限定されると言っても過言ではありません。転送量のコストを気にするようなサイトは、当然ながらAWSのようにクラウドを使っていると思いますが、AWSならcloudfrontを使うのが一般的なので、わざわざcloudflareをAWSで使うのは私のような信者くらいしかいないと思いますし!
そんなcloudflare信者の私が便利だなと思う機能を紹介すると、、、、
1. 画像の強制キャッシュ
cloudflareというよりはCDNを使う理由の8割くらいがこれだと思います。
静的コンテンツの強制キャッシュにより、CDNでオフロードすることによりサーバーの負荷を減らしたり、トラフィック転送量を削減できます。
ただ、cloudflareに限らず、画像が更新されたなどのキャッシュの削除の取り扱いには少し癖がありますし、画像を更新した場合の挙動についても目を向ける必要があります。
CakePHPを例にすると、画像を更新された場合の考慮として、以下のようにconfig/bootstrap.phpで設定を追加しないと、ファイルを更新されてもキャッシュが効いてて更新されないなどの問題に悩まされることがあります。
Configure::write('Asset.timestamp', 'force');
この設定をしておくと、someimage.png?1234567890とUNIXTIMEでファイル名の後ろにタイムスタンプが付与され、ファイルが更新されることでキャッシュを破棄し、画像を更新することができます。
CDNを使っていなくてもファイルが更新されたかどうかを検知してブラウザーが画像を新たに読みに行くのか、ローカルのキャッシュを見に行くのか制御しますので、画像を更新したのに反映されていない!という悩みがあるサイトに便利です。
ただ、ファイルへアクセスはするので、体感できないレベルでパフォーマンスは落ちます。
2. SSLの無料提供
Let’s Encryptの登場により、昔ほどメリットはありませんが、SSLが無料提供されるのもcloudflareの特徴です。
今や強制SSLは当たり前になっていますが、環境により利用できる/できないはあります。例えばS3をcloudfrontを使わずに独自ドメインで運用する場合ですね。
サーバーサイドが対応できない場合でもcloudflareを使ってSSLを使うメリットはあり、それがフレキシブルSSLという機能です。
(フレキシブルSSLの場合) 利用者→(SSLあり)→cloudflare→(SSLなし)→サーバー(80番ポート)
(フルSSLの場合) 利用者→(SSLあり)→cloudflare→(SSLあり)→サーバー(443番ポート)
フレキシブルSSLは利用者とcloudflare間をSSLで暗号化しますが、cloudflareとサーバー間はSSLなしで通信する違いがあります。この機能との組み合わせにより、S3のバケットに置いたデータをCNAMEを使ってサブドメインでアクセスしつつ、SSLを使える、なおかつキャッシュできるというのが個人的に評価している点の1つです。
3. ファイアウォール機能、WAF機能(Proプラン以上)
これは有料プラン限定になりますが、Wordpressに限らず、SQLインジェクションなどウェブアプリケーションの驚異は常に存在し、そんなリスクから守ってくれるWAF機能が特徴の一つです。
OWASPと呼ばれる団体が提供する脆弱性情報を元に、よくある攻撃をサーバーに到達する前にブロックしてくれるのがWAF機能の特徴です。
ただ、WAF機能は完璧ではなく、あくまでcloudflareを通過するトラフィックのみしか適用されません。
例えばIPアドレス指定でサーバーを狙えば意味はないので、あくまで保険的な存在と、ファイアウォール機能の補助的な部分というイメージが良いかと思います。
4. DNS機能
無料でDNSサーバーが機能提供されます。というか、これはcloudflareを使うための前提機能ですが、ウェブでポチポチして設定が完了できるので便利です。
bindを使って設定をするのも一つですが、シリアル更新し忘れて反映されてなかったりなど、設定ファイル書いたりするのめんどくさいですよね。
5. ゼロトラストプラットフォーム
色々な機能を簡単に紹介してきましたが、今回紹介するのはゼロトラストプラットフォームとして提供されているCloudflare for Teamsです。
ゼロトラストとはクラウドと同じくらい最近聞くようになってきましたが、リモートワーク時代における個人PCのユースを前提とした仕組みです。
これまでは社内にあるPCは対策を取られていましたが、リモートワークではそうは行きません。
「社内」「社外」関係なく、どこでも誰でもアクセスされる(できる)事を想定し、誰も信頼しない(ゼロトラスト)という前提で作られたソリューションです。
弊社のシステムの多くは固定IPアドレスを前提に作られており、固定IPアドレスとなる社内は当然の事、
出先からもVPNを使い、許可されたIPアドレスを経由して管理画面を含むページへアクセスをするように作られています。
cloudflareが提供するサービスでは、IPアドレスという概念を持たず、例えば許可された個人に対して様々な方法でアクセスを提供します。
ここではスキルタウンのテストサーバーへアクセスする方法をゼロトラストを用い、限定されたメールアドレスを対象に2段階認証を実現する方法を紹介します。
cloudflare accessを使って2段階認証を実現する
以下について、ドメインはcloudflareで管理され、cloudflareを経由したサブドメインが存在する前提で進めます。
まずはcloudflare accessを申し込みます。50ユーザーまでは無料で使えるので是非活用しましょう。
申し込みが完了していると上記の表示がされます。
次にアクセスポリシーを作成します。
一番簡単な方法は許可されたメールアドレスに対する2段階認証ですが、OpenIDなど様々な方法で設定が可能です。ここではテストサーバーへ指定メールアドレスを持つユーザーへアクセスを許可する設定をしたいと思います。
設定を反映し、テストサーバーへアクセスするとこのような画面が表示されます。
設定したメールアドレスを入力すると、6桁のコードが書いたメールが届きます。簡単に2段階認証を設定することが可能です。
意外と簡単に設定することができました。日に日に新しい機能が追加されるcloudflareさん、これからも頑張ってほしいです!