EN

NRIセキュア ブログ

セキュリティとアジャイル開発のより良い関係|DevSecOpsで実現する理想のチーム

目次

     blogtop

     

    世の中がさまざまな不確実性に直面し、「勝利の方程式」が立てられない時代の中で生き残るには、デジタル技術の力を駆使して変化に柔軟に対応しつつ、ニーズに合わせた新たな製品やサービスを提供する「デジタルトランスフォーメーション(DX)が重要です。DXを実現し、顧客により高い価値を届けていくため、開発の現場も、過去とは異なる新たなアプローチ、アジャイル開発を取り入れつつあります。

     

    ランサムウェアや情報漏洩といったさまざまなセキュリティインシデントが後を絶たない中、セキュリティを後回しにしてしまうわけにはいきません。DX推進の歩みを止めることなく、いかにセキュリティを取り込んでいくか——その解決の手がかりとなるのが、「DevSecOps」と、それを支える人材育成です。

    アジャイル開発にいち早く取り組んできたモンスターラボ、さまざまなトレーニングを通してセキュリティ人材育成を支援してきたグローバルセキュリティエキスパート(以下、GSX)、そしてDXにおけるセキュリティの強化に取り組んでいるNRIセキュアテクノロジーズ(以下、NRIセキュア)の三社では、それぞれの知見を生かし、DevSecOpsを通してより優れた、より安全な製品を届ける支援を行っています。三社のエキスパートが集まり、その背景と今後の展望について語りました。

     

    新規CTA

     

    スピード感を持った製品提供に不可欠なアジャイル開発

     今、世の中が激変する中、あらゆる企業がデジタルトランスフォーメーション(DX)の必要性を感じ、変革に取り組み始めています。GSXの武藤氏は、「今や、いわゆるIT企業ではない普通の企業の方々も、ITによってどれだけビジネスのスピードが向上し、どれだけ競争力が高まるかというITのパワーを認識し、積極的にITを活用するようになっています」と述べました。

     

    IMG_6303

    グローバルセキュリティエキスパート株式会社 CCO 兼 コーポレートエバンジェリスト

    武藤 耕也氏

     

     その原動力となるのがソフトウェアで、単にコスト削減や効率化を実現するだけでなく、新しい付加価値を生み出す力となっています。ここで注目されているのが、「アジャイル開発」です。

     

     これまでのソフトウェア開発手法の主流は、時間をかけて仕様を策定し、それに沿って実装し、期待通りに動作するかどうかをテストした上でリリースする、いわゆるウォーターフォール方式でした。しかし、刻々と変化する市場にマッチした製品やサービスを実現するには、企画を立ててから形になるまで数ヶ月、時には年単位の時間がかかるウォーターフォール式では間に合いません。

     

     さまざまなプロジェクトでアジャイル開発に取り組んでいるモンスターラボの山下氏は、「そんなプロダクト開発を実現するには、企画、実行、学習というサイクルを、スピード感を持って継続的に回していくアジャイル開発が必要です。『変化を歓迎する』という言葉が使われるとおり、変化に柔軟に対応し、プロダクトやサービスを迅速に市場に投入して仮説を検証し、機能追加や改善を行って不確実性を解消できるところがアジャイルの利点だと、我々自身も実践しながら感じています」と述べました。

     

    IMG_6240

    株式会社モンスターラボ Qualitylab QAマネージャー 山下 加代子氏

     

     NRIセキュアの西谷も「この数年、アジャイル開発でDXを推進したいといったご相談をいただくケースが加速度的に増えてきました。長い時間をかけて仕様を検討し、しっかりとしたものを作るウォーターフォールより、市場の変化に迅速に対応し、どんどん新しい機能を入れていくアジャイルが選択されています」と述べています。

     

    IMG_6233

    NRIセキュアテクノロジーズ株式会社 DevSecOps事業部長 西谷 昌紀

    アジャイル開発を通してさまざまなステークホルダーが「ワンチーム」に

     アジャイル開発では開発者だけでなく、プロダクトオーナーやテスター、セキュリティ担当者などステークホルダーが一体となり、文字通り「ワンチーム」として開発を進めていくことがポイントです。発注側が仕様を決め、受注側はその通りに作っていくという具合に役割が分かれていたウォーターフォール方式との大きな違いの一つです。

     

     たとえばモンスターラボでは、いち早くプロダクトを市場に投入して検証の回数を増やすため、スクラム開発を取り入れています。「プロダクトオーナーや開発者はもちろん、私が所属する品質保証チームや運用、セキュリティ担当者が互いに助け合い、組織全体の成功やお客様のビジネスの成功を目指して協力する世界を作りたいと考えています」(山下氏)

     

    IMG_6054

     過去、山下氏の率いる品質保証チームは、プロジェクトがある程度進んでから、具体的には検証・テスト段階になってから呼ばれて参加するケースが多かったといいます。これに対しアジャイルやスクラムを取り入れた今の方式では、チームの一員として、近い距離感で品質確認作業に取り組めるようになりました。山下氏は「タイトな期間の中でテストを行い、品質を確認するため、そのプロダクトの目的を理解した上で優劣や強弱を付け、どこに重点を置いて品質保証をしていくかを考えながら作業しています」と、その効果を説明しました。

     

     かつて新人だった頃に、「コーダー」として加わったソフトウェア開発プロジェクトで、「何のためにやっているのか」を考えることなくプログラムを書かされた覚えがあるという武藤氏は、その経験から「何のために作っているのか」「どのように使うのか」をイメージすることで、意思疎通や合意形成がしっかり行え、手戻りも少なくなることを学んだそうです。

     

     そして「セキュリティも含む非機能要件についても同じことが言えます。何のために作るのかがわからないと、セキュリティもきちんと定義できません」と述べ、ビジネス目線を持ってともに取り組むことが重要であると振り返りました。

    どう両立させる? アジャイル開発とセキュリティ

     ただ、アジャイル開発にはまだ課題もあります。中でも多くの企業が悩んでいるのが、アジャイル開発の中でどうやってセキュリティを担保していくかです。「どんどん変化し続けていくアジャイル開発の進め方と、従来のセキュリティ対策は相性があまりいいとは言えず、そこで悩まれるケースを目にしています」(西谷)

     

     いち早くアジャイル開発に取り組んできたモンスターラボもその一社です。

     

     「これまでは開発プロセスの最後に、セキュリティテストを一度実施するだけでリリースしていました。ですが今やそれだけではセキュリティは担保できません。アジャイル開発やスクラム開発を取り入れてリリースの頻度が上がると、テストのサイクルと合わないという根本的な問題があります」(山下氏)。「えいや」でリリースし、その裏で修正を進めるケースもあったそうです。山下氏はこうした体験を通して、開発の前の段階から、品質やセキュリティを理解した人がプロジェクトに加わっていくことの重要性を感じているとしました。

     

     すでにいろいろな相談を受けている西谷も、そうした実情を肌で感じているといいます。「毎日のように新機能が追加されていく開発スタイルの中で、日々専門家によるセキュリティテストを実施するのは現実的ではありません」(西谷)

     

    IMG_6036

    では、一体どうすれば、アジャイル開発がもたらすスピード感や価値と、セキュリティや品質の担保を両立できるのでしょうか。その鍵は「DevSecOps」だと西谷は指摘しました。

     

    「以前はセキュリティは非機能要件で、仕様書に『これを守りなさい』と書くことでセキュリティを担保していましたが、今やセキュリティはプロダクトと密接に関わっています。最初の企画や仕様を決める段階から品質とセキュリティを理解できる人が加わり、『どうすれば安全にものが作れるのか』『どうすれば安全にものが使えるのか』を検討していかなければいけません」(西谷)

     

    リリース直前の土壇場になって、「やっぱり、この機能を利用する際には多要素認証が必須であることがわかった」となってはどうしようもありません。そうした事態を避けるには、プロダクトにはどんなリスクがあり、それを仕様の上でどう担保するのかを設計段階から検討していく必要があります。もしそれが画面修正などで対応できるような、本質的な機能に関わらない問題ならば、ツールによるテストを組み合わせて対応すればいい、といった判断を組み合わせることもできます。

     

    「このように適切な手段を組み合わせ、プロセスの中に組み込んでいくことがDevSecOpsと呼ばれる取り組みであり、これを開発チームが主体になって進めていくことが必要だと実感しています」(西谷)

    キーワードは「DevSecOps」の文化を根付かせること

    すでにDevSecOpsに関心を持つ人ならば、こうした流れも理解できるでしょう。次のポイントは、どのようにしてDevSecOpsを実践していくかです。ここで三社が共通して挙げたのが「一緒になって、一員となって取り組むこと」でした。

     

    「いろいろなご相談に応えていく中で感じるのは、お客様と一緒になって、ある意味開発者の一員としてどのように安全なもの作りをしていくかを考える必要性です。同じ言葉で——それがC言語か、あるいはJavaScriptやPythonかもしれませんが、とにかく同じ言葉で話ができ、一緒になって安全なものを作っていく姿勢が求められていますし、われわれとしても重要だなと感じています」(西谷)

     

    なぜそうした姿勢が重要なのでしょうか。セキュリティの専門家が外からやってきて、横からあれやこれやと口出しする時にありがちなのが、「あれもだめ、これもだめ」とことごとく禁止してしまうことです。しかしそれでは開発のスピード感が損なわれ、お客様が本来やりたいと考えている新しいサービスや製品が実現できなくなる恐れがあります。

     

    「作るものに応じて、『現実的でちょうどいいのはここです』というレベルをきちんと見極めていくのがポイントです。そして『ここまでやらないとだめ』『ここまでやれば大丈夫』と適切な線を見極める際に重要なのが、自分も一員になっている感覚を持つことだと感じます」(西谷)

     

    専門家として、決して見逃せないリスクはきちんと指摘する一方で、「ビジネスに影響がないならばこの機能は削った方がいいでしょう」と、柔軟かつ現実的な提案をしていくことが重要であり、それには、ワンチームの感覚が必要になります。

     

    IMG_6049

    武藤氏も「リソースが無限にあるわけではない中で、周囲の状況も把握しながら『まずここをやりましょう』とアドバイスできる役割がプロに求められていると思います」と述べました。

     

    こうした心構えを持った上で、何からDevSecOpsを始めればいいのでしょうか。

     

    「DevSecOpsという言葉を検索すると、いろんなツールやソリューションが出てきます。ですが本質的にDecSecOpsは、アジャイルと同様『文化』です。これは、ツールだけで、あるいは一つのプロセスだけで成立するものではありません。人とプロセスとツールがかみ合って、開発プロセスを回していく中で改善されていくものです」(西谷)

     

    これまでのように、リリースのたびに専門家によるセキュリティテストを実施するのは現実的ではありません。できる範囲からツールで自動的にチェックできるようにし、その仕組みを開発のパイプラインに組み込むことで、危ないコードを書くや否や検知されるような仕組みを目指していくことが必要で、それが「シフトレフト」と呼ばれています。

     

    また、最初に設計や要件定義をする際に「何が危ないのか」「どうやれば安全にできるのか」を考えて組み込んでいく「セキュリティ・バイ・デザイン」も重要な要素でしょう。こうした仕組みを通してプロセスにセキュリティを埋め込んでいくのがDevSecOpsの理想型だと西谷は説明しました。

     

    ただ、決して一つの形に固執する必要はないとも言います。「いろいろな現場を見てきましたが、DevSecOpsに一つの形はありません。ある程度の『型』はありますが、開発体制やスタイル、メンバー、あるいは作るものに応じて、中にいる人が考えながら適切なツールとプロセスを組み合わせて作っていくものです。」(西谷)

    開発チームに「セキュリティチャンピオン」を置いて回しながら改善を

     

    実は最大の問題が、このプロセスを回していく「人」の不在です。多くの企業が試行錯誤を続けていますが、ただでさえセキュリティ分野には専門性が求められることもあり、「自分ではこれは安全だと思うけれど、本当にそう言い切れるだろうか」という怖さを抱きながら開発に取り組む現場は少なくないでしょう。

     

    そんな開発現場へのアドバイスとして西谷は「各メンバーがセキュリティに対する意識を持つだけではなく、チーム内にセキュリティをリードしていく人がいて、かつ、そのメンバーが相談できる人がさらに外側にいる体制が必要だと思います」と述べました。それも、そのチームが何を目指しているのか、何を目標としているのかというフィロソフィーを共有できる人でなくてはなりません。

     

    一つの手が、開発チームに一人「セキュリティチャンピオン」を置くことです。

     

    「必ずしもセキュリティの専門家である必要はなく、日々、開発の中でどう安全なものを作っていくか、どのように設計からレビュー、テストまでをツールをうまく使いながら回していくかを、開発メンバーの一員として考える人を置く、ということです。そして、ここぞというときには専門家と連携し、会話の仲立ちをしながらレビューを行って安全なものを作る役割を果たす人をチームの中に育てていくのが重要な第一歩になるのかなと思います」(西谷)

     

    武藤氏も、さまざまな企業のセキュアな開発を支援してきた立場から、「その企業がやりたいことやビジネス上の目標、文化を一番よくわかっているのは、やっぱり中の人、お客様自身です。ですので、中の人が『セキュリティの面でどこに気をつけなければいけないか』に気付いていただければ、あとは社内でそれを教え合い、意識を醸成し、会話ができる人たちが育ってくると思います」と述べました。

     

    IMG_6042    

     

    西谷も武藤氏も「セキュリティがわかる人を開発チームに入れたいので、人を出してもらえませんか? どうやったら採用できますか」といった相談をしばしば受けるそうです。ですが、西谷が「それはわれわれも探しているほどです」というほど、人材は不足しています。となると、今チーム内にいて、皆と目的を共有しているメンバーをいかにして、セキュリティのわかる人材に育てていくかがポイントとなりそうです。

     

    「セキュリティと実際の開発は遠い場所にあるものというイメージがあるかもしれませんが、実は、安全なものをどううまく作っていくか、どんなツールや手法を取り入れて、効率よく安全なものを作っていくかというのは、エンジニアとして、開発者として、非常に面白いテーマだと思います」(西谷)

     

    そこをわかってもらうことで、セキュリティを自分事としてとらえる開発者が増えていくのではないかし、さまざまな形でそうした取り組みを支援していくとしました。

     

    「アジャイルやDevSecOpsをやりたくない企業はおそらくいないでしょう。やりたいと思いながら、どうやればいいかわからない状況だと思います」(武藤氏)

     

    「アジャイルの文化をベースに、DevSecOpsを通して開発のスピードも落ちないし、セキュリティもセットにしたより安全なものができることを、三社の経験やノウハウを通してお伝えしていきたいと考えています」(山下氏)

     

    今後、この三社が文字通り「スクラム」を組み、それぞれの経験と知見を生かし、DevSecOpsを通してスピーディなアジャイル開発とセキュリティを両立させていきます。ぜひご期待ください。

     

    鼎談をしたモンスターラボ様の記事はこちら
    DX推進におけるセキュリティの重要性とその課題

     

    鼎談をしたグローバルセキュリティエキスパート(GSX)様の記事はこちら
    「ワンチーム」で安全なモノ作りを一緒に推進 --DevSecOpsをリードする人作り

     

     

     

    IMG_6298

    新規CTA