座談会記事「Grade up」:ヤフー x SST

“サービス+セキュリティ”企業が考える「セキュリティ教育」の役割

「攻撃は防げない」ことを前提として、問題を早期発見するため、開発段階・リリース前後の段階ごとに「脆弱性を埋め込まない・取り除く」対策を講じる。「Yahoo! JAPAN Tech Blog」で公表されている「ヤフーのサイバーセキュリティに対する考えと取り組み」では、開発現場における行動規範やルールだけではなく、組織体制のあり方にまで踏み込んで明文化されている。

数々の大規模インシデントという過去の苦い経験をきっかけにヤフー株式会社(以下、ヤフー)は、サイバーセキュリティの重要性に対する認識を大きく転換した。その結果生まれたのが「サービスを開発する際、ユーザーの安心・安全のためにセキュリティを必ず考慮する」「セキュリティ対策には、企業トップを中心として、全社で意思統一がなされる」という“サービス+セキュリティ”の体制だ。

ヤフーでは、2017年よりSSTの「セキュリティ支援サービス」を導入。当社CTO・長谷川陽介を中心としたメンバーで、セキュリティ研修プログラムの開発を通じてセキュリティ向上のための施策をサポートしている。一連のヤフーとの取り組みでは、国内でも有数の“サービス+セキュリティ“体制を有する現場からのフィードバックを得られる貴重な機会に恵まれたとともに、実際に開発を行う現場のエンジニアに寄り添った実践的なセキュリティの実現を目指している。

今回の座談会では、SSTの乗口、長谷川の両名が「なぜ“サービス+セキュリティ”体制を構築できたのか」「なぜNode.jsのセキュリティにおいてSSTが選ばれたのか」という点について、ヤフーの“サービス+セキュリティ”体制を支える、CISO(Chief Information Security Officer/最高情報セキュリティ責任者)室のメンバー、およびNode.jsサポートチームのメンバーにお話を伺った。


セキュリティ教育の役割は
「まず知る、第一歩目」と「“ここまではOK”という範囲の提示」

乗口(SST):はじめに開発者に向けたセキュリティ教育の必要性や目的をどのように捉えていますか?

戸田氏(ゲスト):あらゆるエンジニアに「セキュリティに必要な知識とは何か」を知る最初のステップになること、特に「何をしてしまうと危険なのか」を知ってもらうことを、1つ目の目的にしています。当社には所属するエンジニアの数も多いうえに、分野や言語も多岐にわたっています。アプリやネットワークのエンジニアもいれば、大津のようなTLSやNode.jsのプロフェッショナルもいますし、業務システムを担当するビジネスロジックのエンジニアもいます。エンジニアといっても、それぞれが持っている基礎知識のジャンルが違うと、どうしてもセキュリティ知識にばらつきがあります。そこでセキュリティについての知識と認識を、ある程度同じフィールドにそろえるために必要だと考えています。安心して使える安全なサービスを提供したいからこそ、作り手は「何に気をつけるべきか」を知っておかなければなりません。

長谷川(SST):もし仮に、セキュリティ知識にばらつきがあったとしたら…。

戸田氏(ゲスト):開発技術は高いけれどセキュリティに関する知識や理解のばらつきが大きいと、極端にいえばあらゆる実装が何でもできるかもしれませんが、裏を返すと「何をやれるかが分からなくなってしまう」という声が現場から出てきてしまうでしょう。技術的には実装可能な手段がセキュリティ上利用可能かどうか、個別に1つずつ調べる必要も生じてしまいます。セキュリティ教育によって、「これは利用しても大丈夫」という裏付けを理解しておくことで、エンジニアの開発効率を担保するとともに、作る側の安心感を与える役割もあります。

ヤフー株式会社 CISO室セキュリティ・ディレクション室リーダー
戸田薫 氏

大津氏(ゲスト):「『これは利用しても大丈夫』という範疇」の話を補足すると、スキルを持っている人にとっては「何をすればよいかが分かるもの」、セキュリティスキルに自信がない人にとっては「よりどころになるもの」という2つの側面がガイドラインとしては求められます。

Node.jsのガイドライン策定においては、前者向けには理屈を明確にしたほうがよく「なぜmustなのか」「なぜ使ってはいけないのか」「選択可能だが最低限守る部分はどこか」という点を明確に解説できるようにしました。後者向けには理屈よりも、プロシージャ、つまり「採るべき手順・設定」を明確にして、ガイドラインの付属として、このような設定に従っていればセキュリティ的に安全なものが作れると示すかたちで提供しています。その結果、セキュリティのスキルを持つ方には「納得感がある」と、そうでない方からも「便利だ」という評判をいただきました。

セキュリティで最初に守るものは
「ユーザー」、そして「社会インフラ」「自社」

乗口(SST):セキュリティ知識をそろえるための、もう1つの施策がセキュリティ教育になると思いますが、そのミッションはどのような点でしょうか?

日野氏(ゲスト):セキュリティ教育を含めた、セキュリティ施策全体の前提として、ヤフーが守るべきものは何かを考える必要があります。セキュリティの面においては、最初に守るのはユーザーです。ヤフーはさまざまな社会インフラにも影響するサービスを運営しているので、社会インフラを守る責任も担っていると思っています。そして、企業として事業を継続する必要もありますので、会社のことも守らなければなりません。

また、セキュリティ教育においては「全社員が自立的にセキュリティを意識して、業務を遂行できる状態を作ること」をミッションに据えています。ヤフーの社員には特徴があり、きちんと腹落ちをしたことはしっかり自主的に実行するのです。その代わり、腹落ちするまでは「これどうなっているの?」と実直に聞いてくるわけです。その腹落ちをしてもらうためにそうした問いにしっかり対応できるような教育を目指していきたいと常に思っています。単に「セキュリティ対策をしなさい」とうながす教育ではなく、「ユーザーのことを考えると、セキュリティが必要だ」と誰もが考えられるようにするための教育が大切だと考えています。

ヤフー株式会社 CISO室セキュリティ推進室教育啓発チームリーダー
日野隆史 氏

長谷川(SST):セキュリティ対策や教育の対象を広げると、担当部署が「コストセンター」だと社内から思われてしまうケースは少なからず耳にするのですが、どのように乗り越えたのでしょうか?

日野氏(ゲスト):機関投資家が企業に対する投資判断を行うときにも、セキュリティは非常に重要な要素の1つになっています。ここ数年、投資先企業の評価指標の中で「ESG(環境・社会・企業統治)評価」が重要視されています。これは環境、社会、企業統治を重視する企業が、持続的な成長や中長期的な収益につながり、従来の投資判断の基準となっていた売り上げや利益といった「財務指標」からは見えづらいリスクを回避するとの考えによるものです。

米国などでは、ESG評価が投資判断に影響を与えることはスタンダードな考え方になっており、日本でもESG評価の高い企業は、そうでない企業と比較して、株価の上昇率の平均が高いとの傾向も出始めています。
経営視点でいえばセキュリティを後回しにしていると投資や協力が得られない、という捉え方もあるのです。

乗口(SST):セキュリティ教育のカリキュラムや、対象者の範囲はどのように設定されているのでしょうか?

SST 会長 乗口雅充(写真左)
SST 取締役CTO 長谷川陽介(写真右)

日野氏(ゲスト):セキュリティ教育においては、組織上の役割に合わせて最適化した教育コンテンツを提供しています。具体的には、「徳丸本」で知られるWebアプリケーションセキュリティの専門家である徳丸浩先生のような各セキュリティの世界で専門性の高いトップガンを起用してセキュリティの脅威を伝える講座の開催などが一例です。ニュースレターやeラーニングのような網羅性のある教育手法から、実際と同じシチュエーションでの体験をバーチャルな環境で行ったり、学んだことを人に教えたりといった定着率の高い手法を組み合わせて、一般社員、エンジニア、経営層など役割ごとに必須や選択可能なさまざまなコンテンツを指定しています。受講だけでなく「合格まで進めましょう」という方針で対象者に通知したところ、2020年度末には受講者100%、合格者99%まで到達しました。

また、「ユーザーを第一に守る」という視点に立って、教育の機会を社内のエンジニアに限定せず、グループ会社、業務委託社員や協力会社など社外の対象エンジニアにも広げていければと考えています。

“ピーキー”なNode.jsをなぜ採用することができたのか?

長谷川(SST):Node.jsでの開発を導入した経緯と、理由はどのような点にあったのでしょうか?

大津氏(ゲスト):日本国内では、Node.jsをフレームワークとした大規模開発事例が、まだあまり公開されていない状況ですが、当社では以前より米国のノウハウを吸収していくプロセスが成り立っていたおかげで、国外での事例のノウハウはたまっていたため、国内では比較的早期に導入できていたと聞いています。

Node.jsは、さまざまなモジュールの組み合わせが可能という利点もあり、西海岸の人たちはものすごくNode.jsを好みます。その結果、西海岸のエンジニア間で蓄積されたいろいろなノウハウが、海外のビジネスパートナーからも流入し影響を受けていたという素地があります。だから、日本の他の企業はなかなかNode.jsに手を出せていない。Node.jsは、非常にピーキーですよね。そのため、Node.jsではなくJavaであったり、Goを採用するケースが多かったのではないでしょうか。ただ最近になって、BFF(Backend for Frontend)などの用途でNode.jsをサービスに導入するケースが国内でも少しずつ増えてきているように感じています。

ヤフー株式会社 システム統括本部 サイトオペレーション本部
第10代ネットワーク・セキュリティ黒帯 大津繁樹 氏

乗口(SST):Node.jsでの開発におけるクオリティの担保はどのようにされていたのでしょうか?

大津氏(ゲスト):私がヤフーに入社する以前は導入当初は開発のフレームワークが作られていて、そのフレームに沿って開発すると、少なくとも最低限の品質は担保されるという状況だったと聞いております。

4年前私が入社してチームにジョインしてから、何かトラブルがあったときでも、ちゃんとソースコードまで追い掛けて、問題の切り分けができるようになって、障害を起こす前に手当できるようにはなってきてはいました。しかし、そのフレームワークは時代とともに古くなってきて、現在のトレンドをとりこぼしてしまっている状態でした。ずっと手を入れられない状態だったのですが、今回、Node.jsのセキュリティガイドラインや研修・試験問題をSSTと作るのに合わせて、それに合致するかたちで知識的なレベルをまとめて上げていこうという話になりました。

SSTが「学ぶべき領域」をきちっと網羅的に押さえてくれた

長谷川(SST):受講をうながす工夫として提案した「一発合格テスト」も担当させていただきました。

大津氏(ゲスト):そうですね、「これに合格すれば受講を免除できる」というテストを。問題作成をSSTに担当いただき、レベル感や水準などをこちらで確認させてもらうかたちでしたね。Slackを見ていたら「一発合格テストもいいけれど、やっぱり徳丸さんの講座も受けたいな」という声もありました。Node.jsの一発合格テストはちょっと厳しくというか、かなり高度にしてしまったので、なかなかつらいだろうなとは思いましたが、「このテストで8割取れれば、どこに行っても恥ずかしくない」と社内で宣伝しています。

長谷川(SST):正直なところ、Node.jsのコミッターとともに、研修内容や試験をレビューすることになると聞いて驚きました。「イチローに野球を教えるようなもの」だと(笑)。

SST 取締役CTO 長谷川陽介

大津氏(ゲスト):私のほうも、当初レビュー期間は1週間といわれていたのですが、「SSTの長谷川さんに出すのだから、ゼロからレビューするので最低でも3週間はほしい」とリクエストしました(笑)。自分自身としても、最新の知識にちゃんと上書きするいい機会でしたね。これからの時代に使える「2019年バージョン」ができたのは、ものすごいメリットでした。そういうトレンドに追いついていける力があるところが、SSTかなと思い、われわれとしても本気でやろうと思いました。

今回、本当にすごく時間をかけてNode.js固有の問題は何かという観点でいろいろ調べました。改めて分かったのは、Node.jsのセキュリティについてまとまったドキュメントというものがないということですよね。

だから、パッケージ管理システム「npm」の脆弱性のデータベースを、過去1年ぐらいさかのぼって探して、その中で修正されているもの、報告されているものをリストアップして…といった作業を行い、それがNode.jsに関することだと突き止めることを行いました。またその中にいくつかが新しいもの、Node.js固有のプロトタイプ汚染などを見つけると、それをまた検証して、SSTにもレビューしてもらう。そうやって相談をさせてもらうことができて、非常によかったと思いますね。個人的にはセキュリティに関しては、他の言語の研修や試験と比べてNode.jsのものが一番しっかりしていると思います。

長谷川(SST):大津さんにそうおっしゃっていただけて、光栄です。

大津氏(ゲスト):レベル的にもしっかりしていますし、他のレイヤーの研修目的に関しても、きちっと網羅的にセキュリティのほうもやられているので。さすがだなと。本当に、内部だけでもったいないなというか、どこに出しても恥ずかしくないレベルで、もっと広く知らせることができればいいなと思いましたね。

特にセキュリティに関していえば、去年の常識が今年は非常識になっていることもざらにあります。社内だけではなかなか難しいことですし、外部の企業に任せるとしても、その企業にも強みと弱みがあって適切に網羅するのはやはり難しいものです。しかも、外部のさまざまな研修を見ていると、最前線の現場を抱えている企業の研修レベルに追いつけていないところも少なくありません。今回、SSTが学ぶべき領域をきちっと網羅的に押さえてくれたので、セキュリティプログラミングについては、安心できる材料が増えたと感じています。


「インターネットを安全にする」というSSTのミッションが実現されるには、セキュリティ専門企業としての専門性や技術力を高めることも重要だが、その一面だけを追求すると、現場の実情にそぐわないルールや机上の空論になってしまう危険性も高くなる。あくまでも実際に開発を行う現場に寄り添った、現実的に実装できる技術や方法である必要があり、実践的な視点でのインプットを継続的に行わなければならない。

SSTは、今回の座談会を通じて”サービス+セキュリティ”企業の現場から貴重なフィードバックをいただけたとともに、今後の研究開発およびサービスのクオリティ向上に役立て、ミッション実現への歩みをさらに進めていきたいと考えている。

ゲスト:ヤフー株式会社

システム統括本部 サイトオペレーション本部
第10代ネットワーク・セキュリティ黒帯
大津繁樹 氏

CISO室セキュリティ・ディレクション室リーダー
戸田薫 氏

CISO室セキュリティ推進室教育啓発チームリーダー
日野隆史 氏

2021年1月13日更新