2017年6月21日、ピクシブのオフィスで、同社主催の「大規模HTTPS導入Night」が開催された。大規模Webサービスで完全HTTPS化を行うに当たっての技術的、および非技術的な悩みや成果をテーマに、ヤフー、クックパッド、ピクシブの3社が、それぞれの事例について語り合った。
2017年6月21日、ピクシブのオフィスで、同社主催の「大規模HTTPS導入Night」が開催された。大規模Webサービスで完全HTTPS化を行うに当たっての技術的、および非技術的な悩みや成果をテーマに、ヤフー、クックパッド、ピクシブの3社が、それぞれの事例について語り合うイベントとなった。
本稿では、各講演の要点をダイジェストで紹介する。
初めのセッションには、「pixivをフルHTTPSにするために」というタイトルで、ピクシブの金子達哉氏が登壇した。
金子氏はピクシブの中核サービスである「pixiv」における完全HTTPS化の中核を担ったエンジニアの1人。完全HTTPS化を行うに当たり発生した問題について、細かく解説した。
ピクシブとしては数年前から完全HTTPS化を考えていたものの、収益源となる配信広告がHTTPSに対応していないことから数年間滞ったままだった。しかし、今回の完全HTTPS化に当たって、全ての配信広告の事業者がHTTPSに対応したことにより、可能となったという。
pixivの事例で特徴なのは、完全HTTPS化を行うに当たり広告の配信サーバ含めて一新したことだ。
完全HTTPS化に向けて、広告配信サーバを新たに増設。オンプレミス環境でCPUから選定を行い、「AES-NI」と呼ばれる暗号化を効率的に行う機能を備えているかを確認した上で新たな環境へ移行したという。
また、アプリケーションレイヤーを改修する前段階として、広告ロジックやデータベースの中身自体も書き換えるなど、「レイヤーをまたいだ前準備が必要だった」(金子氏)
また金子氏は、歴史あるサービスであるために生じる完全HTTPS化への障壁についても、詳細を交えて語った。そのうちの1つを紹介する。
pixivでは、現在でも、古くからあるページごとにファイルが分かれており、アクセスに応じてそれぞれのPHPファイルが読み込まれる構成で運用されている。ここでもHTTPS化による障害があったという。
HTTPS化を順次行うに当たってGETリクエストのみを全てHTTPS化する必要が発生したが、現行の個々のPHPファイルが独立した構成では、全てのページにおいて共通の処理を追加することが難しかった。そのため、特別策として、「一時的にnginxでリクエストを制御する」形で対処したとのことだった。
最後に、金子氏は「完全HTTPS化は必須だが、ピクシブぐらいの大規模サービスの場合、多くの人間を巻き込む必要がある。しかしながら、根気強く行うと不可能ではない」と、講演を締めくくった。
次のセッションは、クックパッドでSRE(Site Reliability Engineer)を務める星北斗氏による「クックパッドの完全HTTPS化とその後」。
アルバイト時代からセキュリティの中核を担うエンジニアとして活動し、2015年から2年にわたり、単身で完全HTTPS化を主導した星氏は、クックパッドが完全HTTPS化するまでの道のりについて解説した。
これまでHTTPとHTTPSの混在環境だったクックパッドのサービスを完全にHTTPSに移行するに当たって、星氏は理由の1つとして、「どこでも盗聴される時代だからこそ、完全HTTPS化が必要」という時代背景を挙げる。
「今や、どのような環境、ネットワークでも盗聴のリスクを秘めているため、あらゆる通信をHTTPSで提供したい。そして、よりセキュアな状態でサービスを提供することが、安全な通信を前提とした新たな技術の利用や、現行サービスの向上につながる」(星氏)
クックパッドの完全HTTPS化の特徴としては、HTTPS環境での動作検証や合意形成を全社で行ったことが挙げられる。
これは、大規模なサービスとなるとHTTPS化対応の漏れが出てくる可能性があるので、それを極力減らせることにつながる。加えて、SNSのシェア数のリセットなど、完全HTTPS化に伴う弊害について、エンジニアだけではなく全社に周知する意味も込めて行った施策だ。移行後の混乱を未然に防ぐことにつながったという。
加えて、「完全HTTPS化によって、改修の意思決定の速度向上にも貢献した」と星氏は語る。
Webサービスの中には、セキュリティ上重要なページだけをHTTPS化するというアプローチを行っているものは、まだ非常に多く存在する。以前のクックパッドでも同様の運用だったが、全てのページをHTTPS化することによって、新規開発の際に「HTTPSにするかどうか」議論することがなくなり、開発速度の向上にも貢献する結果となったという。
HTTPS化のリリースに当たっての注意点として、星氏は検証にこだわり過ぎず、積極的にリリースを行っていくことを挙げた。
「そもそも全てのページを洗い出して検証するのは不可能に近いので、『Cookieなどを利用して少しずつ提供するユーザーを増やす』形で、少しずつでも移行していくしかない」(星氏)
最後に星氏は、クックパッドがHTTPS対応の次に、HTTP/2にも対応したことを紹介した。
HTTP/2はHTTPの新規格であり、最新の通信プロトコルだ。リクエストやレスポンスを多重化することが可能となり、パフォーマンスに大きく貢献するが、利用するためにはHTTPS化が前提となっている。
現在のクックパッドの通信はHTTP/2を用いて行われている。完全HTTPS化で、AWSのELB(Elastic Load Balancing)をALB(Application Load Balancer)へと移行することによってHTTP/2対応が可能となったという。
「HTTP/2をはじめとして、Webを次の次元に進めるためにも、完全HTTPS化は必須です。最後は“気持ち”で、完全HTTPS化を進めていきましょう」と星氏は講演を締めくくった。
最後のセッションはヤフーのCTO室に所属する宮武大地氏による、「Yahoo! JAPAN HTTPS化への道のり」。
完全HTTPS化の開始当初、ヤフーが運営するサービスは100以上、FQDN(Fully Qualified Domain Name)単位で1000以上あったものの、それらにアクセスするユーザーが関わる部分全てをHTTPS化することに決定。大規模プロジェクトを全社横断チームを結成して対応したという。
これまでもログインページや決済、申し込みフォームなど、セキュアな通信であるべき箇所については、それぞれの運用方法で管理され、HTTPS化されていたが、全体のHTTPS化をより効率的に行うために、全社横断で利用できる共通プロキシサーバの構築を行った。
広告サーバや画像サーバなど、一見してHTTPS化したことが気付かないところからHTTPS化を行ったことも大きなポイントなった。
実際のサービスでも、少しずつHTTPS化を導入しながら負荷検証を行うことが可能になることはもちろん、分かりやすい単位で完了させていくことで、非常に大きな規模かつ地味な作業となるHTTPS化プロジェクトの進捗(しんちょく)が可視化される。「プロジェクトに携わるメンバーのモチベーション向上にもつながった」(宮武氏)
また完全HTTPS化によって、さまざまなメリットがあったという。
全てのサービスに手を入れたことによって1000以上あったサブドメインは、現在では700程度まで統合することができた。また、これまでは担当者ごとに発生していたプロキシサーバの運用コストを大幅に削減できた他、煩雑になってしまっていた証明書の運用も一元化できるという副次的なメリットも大きかった。
最後に宮武氏は、完全HTTPS化のような大きなプロジェクトにおいては、可視化はもちろん、常に普段見ているレイヤーよりも1つ上のレイヤーから俯瞰し続けること、エンジニアだけでは解決できないレイヤーがあることを前提とし、より広い視野を持って関係者と連携していくことの重要性を説いた。
Copyright © ITmedia, Inc. All Rights Reserved.