元現場エンジニアの「もっとこうしておけばよかった」から学ぶDevSecOpsのヒント:特集:クラウドネイティブのセキュリティ対策とDevSecOpsの勘所(1)
元現場エンジニアの「もっとこうしておけばよかった」という経験をアンチパターンとして振り返りつつ、どうすればDevSecOpsを浸透させることができるのかを紹介した、CloudNative Days TOKYO 2021のセッション「元現場エンジニアが思う『もっとこうしておけばよかった』から学ぶDevSecOps」の様子をレポートする。
新人だった頃や、慣れない仕事を始めた時など、過去の自分を振り返って「今にして思うと、もっとうまくできたのに」と思うことは、誰しも少なからずあるだろう。JFrogでデベロッパーアドボケイトとして活動し、以前はアプリケーション開発に携わっていた横田紋奈氏も、自身がエンジニアだった頃を振り返ると、「知らなかったことやできていなかったことがたくさんあることに気付いた」という。
「エンジニア時代のモチベーションとしては、『良いものを作りたい』という思いで仕様を検討したり、エンジニア組織の外と協力したりすることができた。一方、インフラやセキュリティにめっぽう弱く、チャレンジする勇気も小さかった」(横田氏)
そんな横田氏の経験をアンチパターンとして振り返りつつ、どうすればDevSecOpsを浸透させることができるのか。横田氏は「CloudNative Days TOKYO 2021」のセッション「元現場エンジニアが思う『もっとこうしておけばよかった』から学ぶDevSecOps」で、そのベストプラクティスを紹介した。
その1:アプリケーションの作り込みが「良いものを作る」ことの大部分だと思っていた
1つ目のアンチパターンは、「アプリケーションの作り込みこそが『良いものを作る』の大部分を占めるという意識をどこかで持っていた」ことだという。一見良いものを作るための作り込みは良いことに思えるが、「それこそが大事な活動だという意識をどこかで持っていた」(横田氏)ことによって、デリバリーのプロセスや、セキュリティの改善などは、「やらないといけないタスク」「自分たちの作業を楽にするためにするもの」と認識していた。
ユーザーに届くまでが「良いものを作る」ことであり、その後も続く
この過去の経験を踏まえ、横田氏は「ユーザーに届くまでが『良いものを作る』、もっというと、その後も続く」ことだとした。何を作るかだけでなく、ユーザーにどうやって素早く安全に届けるかという部分も「良いものを作る」ことの一部であるとして、「もっとポジティブに取り組むべきことだった」(横田氏)と振り返った。
その2:セキュリティチームが自分のチームの外側にあった
2つ目のアンチパターンは「実際の組織としても気持ちの上でもセキュリティチームが自分のチームの外側にあった」ことだ。横田氏が当時所属していた組織では、セキュリティのチームが開発チームの外側にあり、必要なときにやりとりをする程度の関わりしかなかった。
セキュリティチームも一緒にものづくりをする仲間
そんな経験から、「セキュリティチームも一緒にものづくりをする仲間」だということを横田氏は強調する。DevSecOpsの考え方として当然、開発運用に加えてセキュリティチームとも協業するというのは重要とされている。これを実現するため、横田氏は「なるべくゴールを共有し合う努力をする」「必要なときだけ連絡するのではなく、普段からコミュニケーションを取れる関係性を築く」ことを対策として挙げた。
その3:セキュリティが分からない、怖いと思っていた
3つ目のアンチパターンは「セキュリティが分からない、難しい、怖いと思っていた」ことだ。セキュリティは専門家がやるものという認識があり、大事なものであると思いつつもどうしても「言われたことをやる」姿勢だったという。
まずは分解する
この問題に対する解決策として、横田氏は「まず分解して考える」ことを挙げる。セキュリティというくくりで考えると範囲が大きくても、「例えばDevSecOpsであればセキュリティの中でもソフトウェアに関するものを主に扱う。その中でも取り組める活動の種類は幾つか存在する……というように細かく分解して考えてみること」(横田氏)でセキュリティについて取り組むべきことが把握しやすくなるのだ。横田氏はそこで自分にできることを見つけることが「分からない、難しい、怖い」といった苦手意識を克服するために必要だと語った。
その4:自分のコードに関心のほとんどを奪われていた
4つ目のアンチパターンは「自分の書いたコードに関心のほとんどを奪われていた」ことだ。横田氏はエンジニア時代、セキュリティに関しては自分の書いたコードの脆弱(ぜいじゃく)性についてばかり関心を持ってしまい、その他の部分に目を向けられていなかったと振り返る。
成果物は作ったコードと使っているコードからできている
では、どうすれば自分の書いたコード以外にも意識を向けられるようになるのか。横田氏は成果物の中で使っているコードやOSS(オープンソースソフトウェア)のセキュリティチェックをすることが大切だと主張する。今や当たり前に使われているOSSだが、「それらのほとんどは別のOSSに依存しており、そのOSSもまた別のOSSに依存するという形で、最終的にデプロイするソフトウェアには自分の把握していないコードが大量に含まれている」(横田氏)という。
横田氏は、ソフトウェアコンポジション解析(以下、SCA)など、専用のOSS用解析ツールを使用して脆弱性がないか、ライセンス違反がないかをチェックすることが大切なのだと語る。「自分の把握していないコードが本番サーバでは動いているんだと思ってきちんと対策していく必要がある」(横田氏)
その5:セキュリティを開発ライフサイクルに組み込もうとしていなかった
5つ目のアンチパターンは「セキュリティをソフトウェア開発ライフサイクル(SDLC)に組み込もうとしていなかった」ことだ。例えば、開発の後半にまとめて実施する、プロジェクトが落ち着いたら実施するというように、あくまでもプロジェクトの外のものという認識で開発を進めていたという。
セキュリティチェックをするのは当たり前
そのような認識は、現在の素早くリリースサイクルを回すという開発ではアンチパターンとされている。そのために必要なのは「セキュリティチェックを当たり前に開発ライフサイクルに組み込む」ことであると横田氏は語った。従来開発の後半でまとめてセキュリティをチェックしていたものを開発の前半に持っていく「シフトレフト」などの手法を用いて、早期に問題を発見すべきだという。
また、「課題が見つかったときの対応をある程度イメージしておく」ことも大切だという。「セキュリティ診断の結果というのは定量的に出るので、ある程度はあらかじめルールを決めておくことができる。このとき、やらないことを決めるのも大事」(横田氏)
リリース直前に全てのテストを実施するのではなく、ソフトウェア開発ライフサイクル全体にテストを分散、自動化させてCI/CD(継続的インテグレーション/継続的デリバリー)の中に組み込むのが理想だ。
「まずは書いたコードを『Dynamic Application Security Testing』(DAST:動的セキュリティテスト)でチェックし、そしてOSSにSCAを入れるというのを勧めている」(横田氏)
最後に
最後に横田氏は、今回のアンチパターンから得られたヒントを「マインドと組織に関する改善が必要なもの」「技術的な解決が必要なもの」の2つに分類した。
「今思えば『マインドと組織に関する改善が必要なもの』の部分が足りていなかったからこそ、ツールを導入するところに積極的になれなかったのではないか。現場を離れた今、DevOpsにしろDevSecOpsにしろ、ツールを入れて終わり、作業として取り組んで終了、ではないということをひしひしと感じている」(横田氏)
特集:クラウドネイティブのセキュリティ対策とDevSecOpsの勘所
素早く価値を生み出すためにビジネスとITサービス開発、運用を直結させる取り組みが不可欠となっている。そうした中、注目されているアプローチがスピーディーにアプリケーション=ビジネスをデプロイし、その後も高度な変化適応力を持ちながら、安定的に運用する「クラウドネイティブ」だ。近年、ビジネスの要となるが故に攻撃者はクラウドを標的とする傾向を強く示している。特に、GitHub.comやDocker Hubといった、公開されているアプリケーション資産やサービス活用におけるプロセス、設定の脆弱性を突く攻撃と漏えい事件が世間を賑(にぎ)わせているのは、周知の通りだ。ITサービスを、いかに脆弱性を減らしてリリースし、安全に運用していくのか。本特集では、そのカギとなる「DevSecOps」の取り組みを中心に、クラウドネイティブにおけるセキュリティ対策の勘所を探る。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- クラウドは便利、でもエンジニアの学ぶ機会が減ってしまった――クラウド技術が運用者にもたらした功罪とは
運用者目線で見たクラウド技術のメリット、デメリット、今後求められる運用者像とは何か。オンラインイベント「Cloud Operator Days Tokyo 2021」で行われたパネルディスカッション「クラウド技術、自動化技術が基盤“運用者”にもたらした効果と功罪」、その内容の一部を紹介する。 - 通称「魔境」の更改を巡り開発部門と運用部門が対立――NTT Comの仮想サーバ基盤Kubernetes移行の裏側
NTTコミュニケーションズはオンプレミスの仮想サーバ基盤をマネージドKubernetes環境に移行したという。プロジェクト半ばで課題となった部門間のすれ違い、体制面をどう解決に導いたのか、NTTコミュニケーションズでSREを務める船柳孝明氏が語った。 - 「クラウドネイティブアーキテクチャが急速に浸透」 IDCが国内パブリッククラウドサービス市場を予測
IDC Japanは、国内パブリッククラウドサービス市場の予測を発表した。2021年の市場規模は、対前年比20.3%増の1兆5087億円になる見込み。2020〜2025年の年間平均成長率は18.4%で、2025年の市場規模は2兆9134億円になると予測する。