「ワンチーム」で安全なモノ作りを一緒に推進——DevSecOpsをリードする人作り
新型コロナウイルスの感染拡大をはじめ、世の中が激変する中、新たなニーズに対応した製品やサービスをいち早くリリースするための手段として「アジャイル開発」が多くの開発現場で取り入れられている。ただ、この新しいアプローチの中でセキュリティをどのように担保するかに悩む企業も多い。そんな悩みを解決する鍵が、開発プロセスの中にセキュリティを取り入れ、継続的にカイゼンし続けていく「DevSecOps」というアプローチだ。
企業のDX推進をビジネスの上流工程からデザイン・開発までワンストップでサポートするモンスターラボと、長年にわたって企業のセキュリティ対策を支援してきたNRIセキュアテクノロジーズ、そしてセキュリティ人材の教育・育成を行ってきたグローバルセキュリティエキスパート(GSX)の3社は、今、デジタル技術を生かして自社自身やプロダクトの変革に取り組む企業を、アジャイルやDevSecOpsといった観点から支援しようとしている。これまで顧客とともに歩む中で、現場がどんな悩みを抱え、どんな観点から解決策をともに見いだそうとしているのか、各社のエキスパートに集まり率直に語ってもらった。
目次
野本:企業のデジタルトランスフォーメーション(DX)への取り組みが求められる中、アジャイル開発への注目が高まってきました。背景には何があるでしょうか?
山下:新型コロナウイルスの感染拡大にウクライナ侵攻といった世界的な動向はもちろん、テレワークやスマホ活用の拡大、労働人口の減少など、私たちは今、大きな変化に直面しています。こうした変化の中で企業が生き残るには、DXを通してお客様に新しい価値をいち早く提供し、その価値を高め続けることが必要です。変化するユーザーのニーズにマッチした商品やサービスをいち早くリリースし、企画、実行、学習というサイクルをスピード感を持って継続的に行い、ブラッシュアップしていく開発スタイルが求められます。それがアジャイル開発だと思います。
野本:アジャイル開発に対比されるアプローチとして、ウォーターフォール式の開発が挙げられます。ウォーターフォールと比べて、アジャイル開発の利点はどんなところにあるでしょうか?
山下:アジャイル開発を語る上で「変化を歓迎する」という言葉が使われるように、変化に柔軟に対応しつつ、スピード感を持ってサービスインできることでしょう。プロダクトやサービスをより早く市場に投入して仮説検証を行い、機能追加や改善を行うことで、不確実性をどんどん解消できるところがアジャイルの利点だと、我々自身も実践しながら感じています。
西谷:おっしゃるとおり、この数年、アジャイル開発でDXを推進したいといったお客様からのご相談をいただくケースが加速度的に増えてきました。長い時間をかけて仕様を検討し、しっかりとしたものを作るウォーターフォールよりも、市場の変化に迅速に対応し、どんどん新しい機能を入れていくアジャイルが選択されているイメージです。
武藤:昔に比べ、いわゆるIT企業ではない普通の企業の方々も、ITによってどれだけビジネスのスピードが向上し、どれだけ競争力が強くなるか、ITを使うことのパワーを認識されるようになりました。その結果、積極的にITを活用するようになった反面、「便利だから使う」だけでいいのか、リスクがあまり浸透していない点には危惧を感じます。ただ、あらゆる人がITのパワーを理解し、積極的に活用する気運が高まっているのは非常に良いことだなと思います。
野本:今、武藤さんから「リスク」という言葉がありましたが、アジャイル開発における課題にはどんな事柄があるでしょうか?
西谷:先ほど、アジャイル開発を取り入れたいというご相談が増えていると申し上げましたが、どんどん変化し続けていくアジャイル開発の進め方と、従来のセキュリティ対策というのは相性があまりよくなく、そこで悩まれるケースを目にしています。かつて漠然と予想していた問題が、いよいよ現実のものになってきたと感じます。
武藤:僕も昔、開発業務に携わっていた経験があります。当時はウォーターフォールが一般的で、とにかく要件定義に多くの時間をかけていました。「何のためにこれをやるのか」という部分を飛ばして、ひたすら言われたとおりに作るという感じだったのですが、でもアジャイル開発やDevOpsでは合意形成のプロセスが異なりますから、それがキーになっていくのではないかなと思います。
西谷:そうですね。発注側が仕様を決め、受注側はその通りに作って、最後にセキュリティ検査をして安全だったらおしまいという時代とはかなり関係が変わってきていると思います。内製するか、パートナーの協力を得るかなど体制に違いはありますが、アジャイル開発やDXでは、アプリ開発によって成し遂げたいこと、未来を自分ごととして一緒になって開発を進めていくやり方の模索が続いています。そして、その中でセキュリティをどのように高めていき、誰がそこに責任を持つのか、という部分で悩み、ご相談いただくケースが多いですね。
野本:モンスターラボの場合はどう取り組んでいますか?
山下:いち早くプロダクトを市場に投下し、検証の試行回数を増やすには、開発スピードを高める必要があります。そのためにスクラム開発を取り入れ、プロダクトオーナーや開発者はもちろん、品質保証や運用、セキュリティ担当者たちも互いに助け合いながらプロジェクトを進めています。まだまだ発展途上ではありますが、組織全体の成功やお客様のビジネスの成功を目指して協力する世界を作りたいと考えています。
西谷:今までは、開発と品質保証の役割分担はある程度明確でした。しかし、お客様の中に入り、一緒になってものを作っていくとなると、セキュリティも含めしっかりした品質のものを作り、担保する部分でも責任が生じるかと思います。その辺りはどのように工夫していますか?
山下:品質保証はどうしても、検証段階からプロジェクトに参画するケースが多くなります。その中で大事にしているのが、「お客様が何をしたいのか、このプロダクトで何を実現したいのか」というビジネスの目的をしっかり理解して業務に取り組むことです。非常にタイトな期間の中でテストを行い、品質を確認していかなければならないため、目的をしっかり理解した上で優劣や強弱を付け、どこに重点を置いて品質保証をしていくかを考えています。
西谷:そういう意味では、品質管理もチームの一員という形ですね。
山下:そうですね。従来のテストフェーズだけ担当していた時代に比べると、本当にみんなとの距離感が近いなと感じます。
武藤:これはまさにもの作りの本質に関わる部分ですよね。僕自身も過去の開発経験の中で、「何のためにこれを作っているんだっけ」「これを使う人たちはどういう風に使うんだっけ」という事柄をイメージして要件定義をすると、ちゃんと意思疎通もできるし、しっかり合意形成もできるので手戻りも少なくなることを学びました。
最近では、セキュリティも含む非機能要件についても同じだということがわかってきました。何のために作るのか、何のために使っているかがわからないと、セキュリティもきちんと定義できません。また、リソースが限られた中で優先順位を付けるには、やはり、何を重視するのかというビジネス目線が重要になります。これが実現できたら、とても素晴らしいものができそうでわくわくしますよね。
野本:その中で、特にセキュリティの観点から感じている課題はありますか?
山下:そうですね。これまでは開発プロセスの最後に、一度セキュリティテストを実施するだけでリリースしていました。ですが、今やそれだけではセキュリティは担保できません。アジャイル開発やスクラム開発を取り入れてリリースの頻度が上がると検査とのサイクルが合わないという根本的な問題がありますし、手戻りが発生してしまい、予定していたリリース期日に間に合わないといった問題も生じます。もっと前の段階、開発の頭の段階から品質やセキュリティがわかる人が加わっていくことが大事かなと思います。
西谷:おっしゃるとおり、毎日のように新機能が追加されていく開発スタイルの中で、毎日専門家によるセキュリティテストを実施するのは現実的ではありません。機能の追加や修正に応じてどんなテストや検証を行う必要があるかをきちんと考えないといけないと思います。どんなリスクがあり、それをどう仕様で担保するのか、あるいは小さな問題ならばテストを実施して対処するのかといった具合に適切な手段を組み合わせ、プロセスの中に組み込んでいくことが必要です。これがまさにDevSecOpsと呼ばれる取り組みであり、開発チームが主体になって進めていくことが必要だと感じています。
武藤:やはり開発チームが主となるべきであり、横からセキュリティの専門家が出て行くやり方ではスピードについていけないですし、意思の疎通もうまくできないですよね。
西谷:はい。いろいろなご相談をいただきますが、お客様と一緒にメンバーとして、ある意味開発者の一員としてどのように安全なもの作りをしていくかを考える必要性を実感しています。その中では、自分たちにも開発の経験がある、プログラムを書いたことがあるのもすごく重要な点だなと思います。開発者と同じ言葉で——もしかするとJavaScriptやPythonかもしれませんが、とにかく同じ言葉で話ができて、一緒になって安全なものを作っていこうという姿勢で取り組むことが求められていますし、我々としても重要だなと感じています。
武藤:やはり「ワンチーム」であることがポイントなんでしょうね。モンスターラボさんが開発を依頼される場合でも、NRIセキュアさんがDevSecOpsを回していく際の助言を求められる場合でも、それぞれの専門性を生かしつつ、新しいアプリケーションやサービスをどのように作り上げ、便利に使ってもらうかを一つのチームとして一緒に考え、一緒に動いていくことで、理想形に近づいていくんだと感じます。もちろんこれは一朝一夕にできることではなく、日々試行錯誤しながら作り上げていくものになるでしょうが。
西谷:我々もお客様のサービスや製品を担う一員であり、それを使ってどのように世の中を便利にし、しかも安全なものにしていくかの感覚を持つことが重要だなと思います。そうすると、「あれもだめ、これもだめ」となりがちな一般論のセキュリティではなく、作るものに応じて、「現実的でちょうどいいレベルはここです」というラインを見極めていくこともできると思います。
野本:DevSecOpsを実現するには何が必要なのでしょうか。
西谷:「DevSecOps」という言葉を検索すると、いろんなツールやソリューションが出てきます。ですが本質的にDevSecOpsは、アジャイルと同様に「文化」だと思います。ツールだけで、あるいは一つのプロセスだけで成立するものではありません。人とプロセスとツールがかみ合い、開発プロセスを回していく中で安全性をより高めていくためにプロセスそのものを改善していくというのが、成熟したDevSecOpsのあり方だと思います。
ですから、DevSecOpsに「型」はありますが、一つの形はないと思いますね。開発体制やスタイル、メンバー、あるいは作るものに応じて、中にいる人が考えながら適切なツールとプロセスを組み合わせて組み立てていくことが非常に重要だと感じています。
問題は人ですね。プロセスとツールはあるけれど、それを実際に回していく人がなかなかいないというのが、今の日本では非常に大きな課題であると感じています。
武藤:よく、「どのようにしてチームにセキュリティの文化を定着させたらいいでしょうか」とご相談をいただくことがありますが、根底が共通する話だなと思いました。チームが何を目指しているかのフィロソフィーを共有し、先ほどおっしゃったちょうどいいレベルを見極めるバランス感覚を持ちながら引っ張っていける人が必要なのかなと思っています。
しばしば「GSXさん、セキュリティのことがわかる人を出してよ」といったご相談をいただきます。そこで私たちが出て行くのは簡単なんですが、やりたいことやビジネス上の目標、文化を一番よくわかっているのは、やっぱり中の人、お客様自身なんですよね。ですので、中の人が一度「どこに気をつけなければいけないか」に気付いていただければ、あとは社内でそれを教え合い、意識を醸成し、会話ができる人たちが育ってくるんじゃないかと思います。
昔は、テストにせよコンサルティングにせよ、セキュリティは外部の専門家に委託すればいいという考え方がありました。でも今やそれでは、スピード感という意味でも、実効性という意味でも回らなくなっています。より高いレベルを求めるのであれば、開発チームの中に入って一緒に考えられる人を育てていくのがいいと思います。「どこがやばそうか」と鼻がきく、リスク感覚を持つ人ですね。
西谷:我々も、「開発チームにセキュリティのわかる人を入れたいんだけれど、どうやったら採用できますか」という似たようなご相談をいただきますが、それは我々も探しています(笑)。セキュリティ人材が足りないと言われてきた中、開発を本業にしながらセキュリティもわかる人材を確保するのは本当に大変です。外からそういう人材を探してくるより、開発メンバーをセキュリティもわかる人材に育成していくところにテーマが移っているように思います。
武藤:そうですね。中で育てる方が定着するし、社内への影響も大きいんですよね。その人が立ち上がることによって周囲にいい影響が生じ、組織全体が安全なもの作りに向けて一気に進んでいくという変化を何度も経験しました。やはり、中の人が気付いて成長するほうが、みんながハッピーになれると思います。
野本:どうすればそんな育成ができるでしょうか。
武藤
:これはGSXとしての反省点ですが、これまでの開発者向け教育では「べき論」から入ったり、あるいは非常に細かなところから話してしまっていました。ですがそういうのって、便利なツールを覚えて少しでも早くコードを書きたい、いろんなものを作りたいと考える開発者からすると、面倒くさいだけなんですよね。
ですので、伝え方を変えています。具体的には、最初に「悪用される時をイメージしてみましょう」とお伝えするだけで、受講する方々の意識が変わるんですよね。オレオレ詐欺のだましの手口や被害のイメージを啓蒙した結果、高齢者の皆がリスクを意識するようになったのと同じで、「なんで安全な設計やセキュアコーディングをするんでしたっけ」という意識が生まれれば、すごく効果があると思っています。
野本:今、そのための教育プログラムを実施していますよね。
武藤
:はい。私たちは長年、セキュリティ的に尖った人たちを育てるためのハッキング講座などを展開してきました。けれど今多いのは、開発やネットワーク運用、サーバ運用といった業務に携わりながら、「セキュリティ、これで大丈夫かな」と悩みながら業務をしている方々です。そういう多くのITエンジニアの方が、「どこがまずいのか」に気づき、鼻がきくようになるためのトレーニングとして、上野宣さんをはじめとする複数のセキュリティ専門家と相談しながら作ったのが「セキュリスト(SecuriST)」というトレーニングコースです。
SecuriSTでは、セキュリティのスペシャリストではなく、広くITエンジニアを対象に、最初のステップとして勉強しやすく、なおかつ、自分の仕事にすぐに活用できる内容にポイントを置いています。先ず、セキュリティホールの見つけ方、脆弱性診断の仕方にフォーカスして、開発者ならば、自分が作っているアプリケーションをすぐにテストできる内容、運用担当者ならば自分が見ているシステムに穴が残っていないかをすぐチェックできるようになる内容を、ハンズオンを交えてお伝えする形です。
実はこれ、おかげさまで1年間で1000人弱の受講者がある大ヒットコースになりました。さらに、受講された方からの「セキュリティテストだけでなく上流工程も勉強したい」というフィードバックを受けて、要件定義と設計を安全にするにはどこに留意すべきかを学ぶコースを作っています。また新たに、インシデントレスポンスに向けた準備やチームの整備に関するトレーニングコースや、マルチクラウド環境での適切な設定・運用や事故対応を学ぶコースも用意しました。一昔前のウイルス解析やハッキング演習といったセキュリティトレーニングとは毛色の違う、ITの現場により近いセキュリティ教育になってきていると思います。
SecuriSTを通して、普段携わっているITの業務にセキュリティを付け加える、プラス・セキュリティ人材の育成に対するニーズをあらためて感じました。そして、安全なものを開発をしていく上で、自分たちの会社の中にそういった人材が育っていくことの重要性を、私たちとしても実感しています。
西谷
:関心がないと、セキュリティと開発は遠い場所にあるものというイメージを持つかもしれませんが、実は、安全なものをどうやってうまく作っていくか、どんなツールや手法を取り入れて、効率よく安全なものを作っていくかというのは、エンジニアとして、開発者として、非常に面白いテーマだと思います。そこをわかってもらえれば、セキュリティを自分ごととしてとらえてくれる開発者が増えていくと思いますし、そうした方々を支援していければと思います。
今回のお話を通して、お客様と一体になって、アジャイルやDevSecOpsを通して、世の中をもっと便利にしたり楽しくしていくものを作る、それも安全なものを作っていくという気持ちが3社とも一緒なんだと感じられました。後からセキュリティテストを実施したり、横から指摘をするのではなく、自分たちも一緒に安全なものを作っていくんだ、という部分をともにご支援できるといいなとあらためて思いました。
武藤
:アジャイルやDevSecOpsをやりたくない企業さんは、おそらくいないんじゃないかと思います。みんなやりたいと思っているけれど、どうやればいいかがわからないのではないでしょうか。そこにこの3社が手を組んで、それこそスクラムを組むことで、いいご支援ができるんじゃないかなと思います。
山下
:スピード感のあるDX推進をお客様から求められる中、必要性を感じながらも「セキュリティはプラスアルファのもの」と捉えられがちでした。でも、DevSecOpsであれば、アジャイルの文化とセキュリティをセットにできる。開発のスピードを落とさずに、より安全なモノを作れるということを、この3社の取り組みを通してお伝えしていければと思います。
・鼎談した株式会社モンスターラボ 様の記事はこちらから:
https://monstar-lab.com/dx/case-study/interview_gsx_nri/
・鼎談したNRIセキュアテクノロジーズ株式会社 様の記事はこちらから:
https://www.nri-secure.co.jp/column/good-relationship-between-security-and-agile-development
本記事のシェアはこちらから