#FlattSecurityMagazine

セキュリティとプロダクト開発の今を伝えるメディア

トップエンジニアが語るセキュアな開発組織の作り方【LayerX 名村卓×Ms.Engineer 齋藤匠×Flatt Security 米内貴志 鼎談(前編)】

昨今、ITベンダーだけでなくユーザー企業にもシステム内製化の動きが広がりつつあり、「セキュアな開発をいかに実現するか」は多くの開発組織における悩みの1つとなっています。

「セキュアな開発組織」をどう作っていくべきか。また、セキュアな開発を組織に浸透させるにはどうすれば良いのかーー。株式会社Flatt Securityでセキュアな開発のための学習プラットフォーム「KENRO(ケンロー)」の開発・コンテンツ監修を務めたCTO・米内貴志が、これまで様々な開発組織を牽引してきた株式会社LayerX 執行役員の名村卓さん、Ms.Engineer株式会社 Mother of Engineerの齋藤匠さんのお二人にお話を伺いました。

▼後編はこちら

flatt.tech

プロフィール

名村卓(なむら すぐる)/株式会社LayerX 執行役員
受託開発経験を経て、2004年株式会社サイバーエージェント入社。各種メディアやゲームなどの新規事業立ち上げの開発を担当。2016年に株式会社メルカリ入社。USのサービス開発を経てCTOに就任後、2021年1月にメルカリグループの株式会社ソウゾウ取締役CTO。2022年6月、株式会社LayerXに入社。イネーブルメント担当として「テクノロジーを活用した全社の生産性に責任を持つ」役割を担う。

齋藤匠(さいとう たくみ)/Ms.Engineer株式会社Mother of Engineer
大手SI企業で、チケットシステム構築、消費者金融の無人契約機システム開発、コールセンター構築などに携わる。2012年、サイバーエージェント入社。基盤系システム統括後、技術人事としてエンジニア人材養成に従事。2016年、株式会社シーエー・モバイル(現 株式会社CAM)に入社。同社Technology Initiative Center 執行役員を経て取締役就任。2019年6月、エキサイト株式会社に入社し、執行役員人事部門統括責任者に就任。2022年9月Ms.Engineer 株式会社のテクニカルディレクションボード及びMother of Engineerに就任。

米内貴志(よねうち たかし)/株式会社Flatt Security CTO
東京大学理学部情報科学科在学中の 2019 年、株式会社 Flatt Security にセキュリティエンジニアとして入社。Web エンジニアのセキュアコーディング習得を支援するクラウド型学習プラットフォーム「KENRO」のシステム開発・コンテンツ監修に従事。2021 年 6 月より CTO に就任。その他、セキュリティ・キャンプでの講師や、電気通信大学ウェブシステムデザインプログラム講師等を歴任。

「開発にかける時間とセキュリティにかける時間」のバランスに葛藤

米内貴志(以下、米内) 僕はよく知っているところではありますが、まず初めにお二人のお仕事について教えていただいてもよろしいでしょうか。

名村卓さん(以下、名村) 今はLayerXでソフトウェアエンジニアのイネーブリング*1にエンジニアとして携わりながら、開発をしています。

齋藤匠さん(以下、齋藤) 女性のためのオンライン型プログラミングブートキャンプを運営するMs.Engineerという会社でMother of Engineerとして活動しています。最短5ヶ月でエンジニア転職ができるまでのスキルを身につけられる学習プログラムを提供しているのですが、そのプログラム開発を行うとともに、エンジニア育成の責任者も務めています。

米内 名村さんはイネーブリング領域、齋藤さんは教育領域から開発組織のマネジメントに従事されているということで、「開発組織をどう作るか」「どう支えるか」という課題に日々向き合われているところかと思います。今回は「セキュアな開発組織のあり方」がテーマですが、名村さんは開発組織のマネジメントにおいて、セキュリティの観点で課題に感じていることはありますか?

名村 セキュリティは、ここ数年で難易度が極端に上がっている領域だと感じています。

まず、多岐にわたるセキュリティに関する情報をどう学んでいくかが難しいところです。昔はSQLインジェクションやクロスサイトスクリプティング(XSS)ぐらいを見ておけば安心かなという感じだったんですが、最近はセキュリティに関するコンテクストがすごく広がっていますよね。アプリ構成も複雑化しているし、使っているオープンソースも増えて来ているので、セキュリティの範囲がものすごく広くなってきています。また、脆弱性に関する情報もどんどん積み重なって来ているので、昔と比べるとかなり厚みが出てきているように思います。

それを包括的に勉強するというのは、とても大変だと思うんです。特に若手エンジニアやエンジニア志望の人がセキュリティを学ぶとなった時に、セキュリティ領域に含まれるものの幅が広すぎて学習に時間がかかり、困難さを感じるのではと。

なので、開発にかける時間とセキュリティにかける時間のバランスをどう取るかの判断も難しいというのが最近の所感です。セキュリティ学習は時間がかかる一方で、開発組織がそれだけに時間をかけるわけにはいかないので悩みどころですね。「セキュリティ以外にやることはあるし、でもセキュリティは大事だから逃せないし、どうする?」みたいな葛藤があります。セキュリティというのは問題が起きないと見えてこない領域なので、それに対してどのくらいの時間を先行投資的に使っていくのか、どれぐらいやっていくのか判断してバランスを取っていくのが難しいですね。

また、セキュリティ対策自体も多岐にわたっていて、対策を選択する難しさも感じています。最近は開発現場で使うオープンソースの種類が増え、パブリッククラウドが様々な機能を提供するようになり、日々新機能や新概念が出てきています。昔は「LAMPでアプリを作ってサーバーをデプロイする形であれば、OSに入っているソフトウェアが最新で、APIの脆弱性をちゃんとチェックできているかぐらいを見ておけばOK」というような感覚だったのですが、そういうシンプルな話ではなくなってきています。開発途中の段階で、CI/CDパイプライン*2のセキュリティをどうする、クラウドやデプロイの権限をどう管理するなど、様々な対策を考える必要があります。

どこからどこまでをどのぐらいやれば大丈夫、という明確な保証はありません。対策を自動化するツールも多岐にわたっているので、どれを使えばどこを守れるかがわかりづらくなっているように思います。

最近はFintechという分野が出てきて、お金や資産をオンラインで扱う機会が増え、Webサービス自体の価値も高まりました。一方で、それにより攻撃者がサイバー攻撃により得られる利益も増え、ここ最近は特に巧妙なサイバー攻撃が増えてきているように感じています。より高度なセキュリティ対策が求められていますよね。

米内 セキュリティ領域が広がって自由度が高まった一方で、やらなければいけないことや考えなければいけないことが増えて、「どこまでセキュリティに投資するか/時間を割くか/どう判断していくか」という経営・マネジメント的な課題が見えてきたということですね。齋藤さんはいかがですか?

齋藤  エンジニアに向けて、「脆弱性にはどういう種類がある」「大型のリリースの時はこの対策をすべき」など基本的なことを学んでもらう時間を作るようにしてきました。新卒エンジニアの場合も、研修のカリキュラムに組み込んでテストをしてもらうとか、そういうことを通じての対策は行ってきました。ただ、セキュリティという言葉が指すものが多岐にわたっているのは確かで、難しさも感じています。

全職種に対しては、過去起きたインシデントの事例やその時の賠償額、対応工数などを見せて、「対策しないとこうなるよ」と伝えることで啓発を促す取り組みを行っています。

米内 インシデントが起こりづらい仕組み作りを進めながら、職種を跨いで啓発活動もされているということなんですね。

齋藤 開発を進める時に、最近ではディレクターなどの立場でビジネス職の人も関わるケースが増えてきています。エンジニアはセキュリティ対策を意識する傾向にありますが、ビジネス職にも同じぐらい意識付けをしていかないといけないと思っています。ビジネス職経由で情報漏洩が起きてしまう可能性もあるので。

セキュリティに対するモチベーションが高いチームをどう作っていくか

米内 セキュリティ領域が広範になっているからこそ、セキュリティに対する意識やモチベーションが高い組織・チームを作っていくことの重要性を強く感じました。名村さんは、セキュリティに対するモチベーションを上げていくためにどのようなことをされていますか?

名村 組織が大きくなってくると、色々なエンジニアが入ってきて、色々なプロダクトを色々なチームで作る状態になるので、セキュリティの観点が抜け落ちてしまいがちです。そこで、前職のメルカリでは「セキュリティチャンピオン」という仕組みを作りました。セキュリティ専門のチームだけがセキュリティを見るのではなく、開発チーム側でもセキュリティを考えてもらうための仕組みです。セキュリティ担当者を各チームに1人置いて、セキュリティに関する情報伝達などを担ってもらいました。

一方で、セキュリティ領域が広範になり、人的なチェックによるセキュリティ対策のみでは対処不可能になりつつあるのが現状です。そのため、人的チェックに頼らなくても対処できるところは積極的にツールを活用して自動化しています。開発のCI/CDの中にセキュリティチェックをふんだんに入れていくように工夫をしたり、APIキー等のシークレットを自動的に検出して通知してくれる仕組みや、GitHubにあるようなコーディングのバッドプラクティスを検出してくれる機能などを使ったりしています。

米内 セキュリティチャンピオンのように、触媒になるような人を各チームに配置する取り組みを戦略的に行いつつ、人的チェックに依存しすぎないようなセキュリティレベルの底上げの取り組みを並行して進められているんですね。齋藤さんはいかがでしょうか?

齋藤 これまで経験した組織では専門チームを作る余力がないケースが多かったのですが、セキュリティに興味がある人やチャレンジしたいという人が一定数いたので、そういった人を集めた横断チームを作って、情報発信や啓発活動などを行ってきました。チームに参加したメンバーからも「ゆくゆくはセキュリティ領域で活躍したい」という希望を聞いていたので、自ら学習や情報交換ができる場所としてチームを作ってあげた形です。

チームが拾ったトピックスをエンジニア横断のミーティングで発表してもらったり、Slackで社内に発信してもらったりしていました。トラブルが起きた時も、横断チームに旗振り役を務めてもらい「どこまで対応できているか」「どこが対応できていないか」のチェックが進んでいました。

米内 専門チームを置くのではなく、各チームのモチベーションがある人や関心のある人、できそうな人を集めて、社内で横につながる仕組みを作っていくという発想は、名村さんのセキュリティチャンピオンと共通しているところがありますよね。各チームに触媒がいる状態になるので、社内全体のセキュリティレベルの底上げができそうですね。

齋藤 そうですね。横断チームに参加してくれるような、セキュリティに対するモチベーションの高い人は、若手のジュニア層に多い印象があります。

米内 新卒エンジニアを含むジュニア層に対して、セキュリティに関する特別な取り組みは何かされてきましたか?

名村 新卒研修の中にセキュリティに関するトピックは入れていますが、ジュニア層だけに向けて特別に行っていることはありません。ジュニア層より上の層のエンジニアに対しても、入社時研修で必ずセキュリティには触れてもらうようにしています。

米内 オンボーディングのステップの中にセキュリティに関する学習が組み込まれているので、キャリアを問わず触れてもらえるようになっているんですね。

名村 そうですね。ただ最近は、時間を取って集合研修を受けてもらうのが難しくなってきているように思います。集まってみんなが同じ内容を受講すると言う時代ではないので、時間に限らず学べる仕組みが一番いいなと感じています。

セキュリティは目的意識を持って学ばないといけない領域で、知識だけ詰め込んでも有効活用できないと思います。攻撃の本質を知るとか、攻撃の有効性を知るとか、単純な学習ではなく実体験に伴うような学習をしてもらいたい。一番良いのは、普段の開発の中で他の人から「このコードは危ういですよ」と指摘してもらうこと。なぜ危ういのかを調べてわかるようになるし、どう対策すればいいのかを学んでいけます。ただ、実体験の中でそんなに遭遇するわけではないので、なかなか難しいですよね。

セキュリティは本当に多岐にわたっているので、末端のところを全部学ぼうとするとやはり時間がかかってしまうし、キリがないので、根本のところをしっかり学んでほしいです。例えば「OpenSSLはオープンソースでみんなが使っているのに、なんで定期的に脆弱性が出てくるのか」とか「それにより何が危ないのか」とかそういった本質的なところを学ぶ。

それを学んだ上で、展開したパターンとしてプログラムに潜む脆弱性について学ぶのがいいんだろうなと思っています。「なんでクライアントから来る情報は信用しちゃダメなの」とか。SQLインジェクションに関しても、外から来ている情報を信用しちゃっていることから来ているので、そういった本質を学ぶと普段アプリケーションを作る時も「この情報は信用できない」とか「ここで来るパラメータはこうなるはず」とかそういったことを意識できるようになります。

米内 集合研修で全員一斉に学習してもらうことが難しくなったので、学びたい時に学べる、時間のある時に学べるという仕組み作りが大事になってきているということなんですね。目的意識がないとセキュリティは学びにくいので、普段の業務に近いような、それこそコードレビューで指摘されるぐらいの感覚がいいというのは示唆的でした。齋藤さんはいかがですか?

齋藤 アプリ開発からインフラまで、全レイヤーを経験させるようにしています。実際に「全レイヤーを体験してみたい」と希望する新卒エンジニアもいるので、全レイヤーでの経験を積み、手を動かせるようになっているかは、こちらも意識して見るような感じです。プログラムからネットワークまで、色々なところに脅威が存在するので、実体験込みで対応できるように工夫しています。「ネットワークだけ見る」とか「アプリだけ見る」みたいな形での対応はさせていないですね。

米内 自分が普段見ている領域だけではなく、もっと広い領域を見てもらうことで、関わっているプロダクトに対してできるだけ俯瞰的な目線を持ってもらいたいという思いで、色々な働きかけをされているということなんですね。ここまで、チームマネジメントに対するお二人それぞれの観点を知ることができて面白かったです。

「セキュアな開発」をまず経営層に浸透させたい

米内 ここまでのお話の中でも触れられてきたこともあるかと思いますが、今後「セキュアな開発」という文化・価値観を組織により浸透させていくためには何が必要になってくるのでしょうか?

名村 セキュリティというのは、インシデントが起こるまでわからないものなんですよね。特に、開発から遠くなればなるほど。

一方で、セキュリティに対する投資が増えてきている気もします。経営的にセキュリティにどれだけ投資をするべきなのか、という判断も難しくなってきていて、そこらへんは経営サイドのさじ加減に全てかかってきています。例えば、「研修を受けに行きたい」と言われても、研修の費用を出すか否かは経営層の意思決定に関わってくるので。

会社を運営する上で、セキュリティは割と投資の難しい分野だと思うんですよね。これからは経営層がセキュリティの重要性や、セキュリティに対する投資の価値に関する知識やノウハウをもっと増やしていく方がいいんじゃないかなと思います。

攻撃の種類も増えてきているので、開発経験がある経営者だとしても、例えば「昔にWebアプリを作っていた」ような経営者の場合は、感覚が変わってきていることに気づかないこともあると思います。開発の現場にいる人がセキュリティリスクを察知していても、プロダクト開発やビジネス上の目標が優先されてしまうこともあるかもしれません。セキュリティは問題が起こるまで後回しにされがちです。

でも後回しにして問題が起きないなんてことはないと思うんですよ。起きた後のダメージも大きいので、「なんであの時やってなかったんだろう」と後悔しますし、「セキュリティ担当やCISO*3にお任せしたいけど、開発は止めたくない」という判断の難しさも出てきます。

だからこそ、会社を経営する人たちがセキュリティに向き合って本気で悩まないといけない時代かなと思いますね。エンジニア含む社員への教育もそうなんですが、経営者に向けたセキュリティの教育や取り組みがもっと増えてもいいのかなと思います。

米内  「セキュアな開発」を開発組織に浸透させるには、開発組織に浸透させる以前に経営層に浸透している必要があるということですね。LAMP時代のスタックは僕も記憶の彼方にありますが、その頃の前提じゃないというのはおっしゃる通りなので、まずは知識のアップデートを行っていくというのが必要なアクションになりそうですね。

名村 攻撃の対象になっていないだけで、本気でサイバー攻撃をされたら大抵の会社は多分乗っ取られてしまうと思います。それぐらいの危機感をしっかり持っておいた方がいいです。

米内 管理しているものの数が昔と違いますよね。

名村 まあ大丈夫でしょ、と思わない方がいいです。

米内 脆弱性診断ペネトレーションテストをサービスとして持っているので、そこはよく感じる部分ではあります。

名村 セキュリティ対策は、防衛的な対策と事後的な対策の両方を見ていくのが原則です。侵入されて情報が漏れた時に何ができるのか、という事後的な対策も含めて考えていく必要があると思いますね。

米内 なるほど。齋藤さんはいかがでしょうか?

齋藤  名村さんが指摘した「経営層への啓発」については同感です。他社の大きなインシデントや脆弱性については、すぐ経営会議などで経営層に報告するようにしています。最近だとOpenSSL、ちょっと前だとLog4jとかがあったと思うんですけど、その影響や自社プロダクトの状況なども伝えて「ヤバいんだぞ」という空気感をあえて作って出していきます。

それを社員が見てるところでも当然やっていますし、社員にも「今これどうなってる?」と聞いて、率先して騒ぐ(笑)。セキュリティ対策が大事なんだなということを意識させるようにしています。

あと、既存のプロダクトがバージョンアップされないと、どんどんリスクを孕んでくるじゃないですか。なので、経営層にこんなプロダクトを使っていたら採用できないよ、と伝えるようにしています。「そんな古いサービスを使っているの?ダサっ。今のエンジニアは誰もうちに来なくなるよ」みたいな。組織経営に関しては、先程のインシデント情報とセットで伝えるようにしています。

米内 名村さんも「経営層の理解がまず必要」というお話をされてましたが、まさにそれを実現するために行動されているんですね。

齋藤 そうですね。「採用に影響する」と訴えると経営層には響きますね。

トップエンジニアが考える、セキュアな組織の理想像

米内 最後に、お二人が考えるセキュアな開発組織の理想像について教えてください。

名村 セキュリティの難しいところは、どこまでも投資できるというか、やろうと思えばどこまでも対策ができてしまうところだと思います。一方で、開発組織を抱えている会社の場合は、セキュリティを堅牢にすればするほどDX(Developer Experience,開発体験) が下がるという課題があります。なので、できる対策を単純に全てやればいいというわけではなく、DXとセキュリティの良いバランスを上手く察知してやっていく必要が出てきています。よくあるのは、BYODのような、自分の端末を使って開発することが制限されるケースですが、今のリモート社会ではDXが下がる原因となっています。

現状のセキュリティを担保するチームやセキュリティに関する意思決定に関わる人たちが、ソフトウェアエンジニアが理解している開発に関する深い知識を持っておいて、「これをやれば開発にどれぐらい悪影響がありますよ」とか「こういうことができなくなりますよ」とかアドバイスしてくれるのが理想です。

セキュリティチームを独立した組織という形ではなく、開発プロセスの一連の流れの中にちゃんと組み込んでいくような形にするのがいいなと思っています。ただただセキュリティを高めることが目的のチームではなく、いかに安全で快適な環境を作っていくのかをゴールとするチームがセキュリティに関する意思決定を行うのが理想形です。あまり開発から遠いところにこういう組織を置かない方が良いと思っています。

そういう組織を作って、日常的にセキュリティに対する意識を高く持つというのはもちろん大事なのですが、セキュリティに対するコストを減らしていくことも大事だと思っています。色々なツールで対策ができるのであれば、もちろん使わない手はないですし、組織的に活用できるDevSecOpsツールの種類も増えてきています。既存のオペレーションの中にセキュリティの観点を組み込んで、仕組み化を進めるというのをちゃんとやっていかないといけないよなと思っています。

特に、人的なミスが影響を与える範囲を極力減らしていきたいです。人的なミスは防ぐことができませんが、「人的なミスが起きてインシデントが起きる」ことを前提として対策を考えるという観点を日常的な開発のオペレーションの中に組み込んでいく必要があります。既にやっている人はたくさんいるとは思うんですけど。

米内 ありがとうございます。我々もセキュリティプロダクト開発を進める事業会社なので、大変勉強になりました。齋藤さんはいかがですか?

齋藤 名村さんが「DX向上が進まない」という話もされていましたが、事業会社でセキュリティの専門チームを作ると結構陥りがちなのが、専門的すぎて固くなってしまうということ。どんどんガチガチにしてしまうというか。「隣の上場会社はもっとライトにやってるけど、うちまだ非上場なのになんで同じようにできないの?」というところもあるかと思います。

専門でやるのであれば、他社がどのようにやっているかを見ておくべきです。そこを知らないで「こうあるべき」で動いちゃってるんですよね。横の繋がりでノウハウを蓄積してやってもらえるようになると良いかなと思います。

あと、ビジネス職もセキュリティがわかった状態で、提案や企画ができるようになるのが理想です。無駄な往復が増えて、その分スピード感が落ちかねないので、エンジニアだけではなく、ビジネス職もある程度のセキュリティ知識は持っておいて欲しいです。トータルでセキュアな組織になるには、そのような取り組みが必要だと思っています。

米内 セキュリティに対する投資の難しさという課題意識もありつつ、本質的なアウェアネスの必要性というのが今回のテーマになったかと思います。枝葉レベルの知識ではなく、セキュリティの根本的な知識を経営レベルからわかっていくことで、セキュアな開発組織にも浸透するというお話がありました。一方で、セキュリティ領域の広範化により、自動化・仕組み化といった組織の底上げも検討していきたい点になるので、その際にはそれを担うチームもどう設計していくかという課題も出てくるということですね。

プロダクト開発組織とセキュリティのあり方について、ここまで名村さんと齋藤さんに多様な論点でお話いただきました。ありがとうございました。

▼二人が新人エンジニア時代を語る後編はこちら

flatt.tech

お知らせ

Flatt Securityが提供する、セキュアコーディング学習プラットフォーム「KENRO」では、期間無制限でお使いいただける無料トライアルを実施しています。

KENROでは、Web 開発に必要なセキュリティ技術のハンズオン研修をかんたんに実現できます。実際にコードを書いて脆弱性を修正する堅牢化演習など、エンジニアが楽しみながら学習体験できる各種コンテンツをご用意しています。ご活用いただくことで、セキュアな開発を組織に定着させることが可能です。

スタートアップ企業での数名を対象とした研修から上場企業での新卒研修まで、幅広くご利用いただいています。詳しくはこちらから

*1:会社全体の開発体制・プロセスの最適化を担うエンジニアリングチーム。LayerXにおけるイネーブルメントの取り組みについては、以下の記事をご参照ください。

名村卓を迎えたLayerXがイネーブルメント専門チームを設立。プロダクト開発を最適化するアクションとは?(エンジニアtype) https://type.jp/et/feature/20929/

*2:Continuous Integration/Continuous Delivery(継続的インテグレーション/継続的デリバリー)の略で、システムの開発から運用までの一連のプロセスを継続的に行うこと。多くはソフトウェアによる自動化を伴い、ソフトウェア開発の効率化、リリースサイクルの高速化に寄与する

*3:Chief Information Security Officerの略で、最高情報セキュリティ責任者を指す。企業においてセキュリティを統括する責任者