In this article
DevSecOps文化の醸成:実際の導入事例
DevSecOpsモデルの導入と成熟に向けた取り組みを続けるなかで、成功事例や学びを共有することは、誰もが改善を続けるうえで役立ちます。ここでは、DevSecOpsを導入し、成熟度の向上に取り組んできた組織の事例をご紹介します。
Auth0におけるDevSecOps
クラウド開発者に「摩擦のない」体験を提供する
データ分析を活用する
SDLの早い段階でリスクに優先順位を付ける
協力的な支援と柔軟な開発手法
Auth0は創業当初から、AWSのクラウドインフラを大いに活用し、顧客にアイデンティティ管理ソリューションを提供してきました。組織の規模とサービス内容の両面で急速に成長するなか、クラウドインフラの安全性を確保するという課題に直面しました。セキュリティ&コンプライアンス担当シニアディレクターのDuncan Godfrey氏は、最近The Secure Developerポッドキャストに出演し、環境のセキュリティを確保するための戦略について語りました。
Auth0では、専任のクラウドセキュリティチームがAWS環境のセキュリティ確保を担当しています。ただし、チームが従来型のSecOpsの考え方に陥らないよう、監視を重視した自動化が特に重要でした。Godfrey氏によると、「このチームの役割は、AWSのあらゆる面や隅々からデータを収集し、分析できるようにすることです」。その結果、DevOpsモデルで業務を進める開発チームとの接点が生まれました。DevOpsチームとの連携を確立することで、全体をより広く可視化できるようになっています。
Auth0とクラウドセキュリティチームにとって、開発者に「摩擦のない」体験を提供することは非常に重要です。セキュリティの統合はSDLの早い段階から始まり、セキュリティチームとの連携がどの程度必要かを判断するための簡単なフォームを用意しています。パブリックエンドポイントの公開など、リスクの高い機能には、より手厚くセキュリティチームが関与します。Godfrey氏は、「最初の段階で要件と適切な管理策を整え、セキュアなソフトウェアを実現できるよう開発チームを支援し、最後に追加のテストを実施します」と語っています。
Auth0には、協力して支援する文化が根付いています。開発者が自分たちのニーズに合った方法で自由にソフトウェアを開発できるようにしながら、セキュリティ対策の成熟度も示しています。これにより、確かなセキュリティ態勢を維持しつつ、新しいテクノロジーを活用し続けることができています。
SegmentにおけるDevSecOps
開発者の立場になって考える
Infrastructure as Codeを取り入れてDevSecOpsを実現する
開発者が使いやすい新しいツールを選ぶ
部門横断でチームに人材を配置する
The Secure Developerポッドキャストの最近のエピソードで、顧客データプラットフォームを提供するSegmentのLeif Dreizler氏とEric Ellett氏は、開発、セキュリティ、運用の各担当者間の連携をSegmentがいかに重視しているかを語りました。Segmentでは組織全体でスプリントを実施せず、チームごとに独立して業務を進めています。それでも、コンサルティング型のモデルを通じて、セキュリティチームは開発プロセスの早い段階から参加し、脅威モデリングや設計レビューを行っています。
Segmentでは、共感を育む考え方がセキュリティチームの文化に根付いています。チームでは「開発者の立場になって考える」という方針を掲げています。Ellett氏によると、セキュリティチームは、自分たちのセキュリティプロセスが組織の他の領域にどのような影響を与えるかを理解するために、多大な努力を払っています。たとえば、多要素認証を導入しようとした際、Dreizler氏は四半期にわたって開発チームに加わりました。これにより、開発チームが何を守ろうとしているのか、またどのような課題に直面しているのかを把握するうえで、セキュリティチームは貴重な背景情報を得られました。
しかし、連携への取り組みはそれだけではありません。Ellett氏によると、同様の取り組みを逆方向にも進める予定です。組織の他部門のメンバーをセキュリティチームに迎え、セキュリティチームの業務を理解してもらう計画です。Dreizler氏は、「これこそDevSecOpsの目指すべき姿だと思います。DevOpsと同じように、運用担当者がコードの書き方を学び、Segmentではインフラのすべてがコードになっています」と述べています。
Segmentは「舗装された道」を整えることも重視しています。Segmentのセキュリティチームが掲げる指針の一つは、「このツールは開発者に使ってもらえるか」です。つまり、使いやすさによってセキュリティ管理策の導入を促すことに力を入れています。Dreizler氏によると、最も大切なのは「誰もが正しいことをできるだけ簡単にできるようにすること」です。
このように協力的で共感を重視するアプローチを通じて、Segmentは組織内に強固な協働の文化を築いてきました。組織にとって正しいことをするという共通の目標にすべての機能が足並みをそろえることで、DevSecOpsの可能性を実現できることを示す事例です。
10X BankingがDevSecOpsを導入
組織全体でセキュリティ脆弱性を可視化する
部門横断のデイリースタンドアップで全員が連携する
自動化を活用してセキュアなコードのデプロイを管理する
脅威モデリングのカードゲームで関係者を巻き込む
10x Future TechnologiesのNeil Drennan氏が、The Secure Developerポッドキャストの最近のエピソードに出演し、クラウドネイティブな銀行プラットフォームの構築にあたり、セキュリティへの取り組みを促進するために組織が活用している重要なコミュニケーション戦略についてGuy Podjarny氏と語りました。透明性と効果的なコミュニケーションの確保から、日々の業務における連携やプロアクティブなセキュリティ対策の推進まで、10xはセキュリティを全員の職務の一部にすることを重視しています。
対談では、Guy氏とNeil氏が、10xで外部のセキュリティチームと社内のプラットフォームチームとの連携をどのように実現しているかを掘り下げました。Neil氏によると、10xでは、環境に導入したツールで追跡している脆弱性の現状を誰もが確認できます。「ツールを使って脆弱性を検出し、アラートを出すときは、情報を全員に公開しています。チームの誰もが、組織全体の脆弱性の現状を確認できます」とDrennan氏は述べています。このような透明性は、セキュアなソフトウェアを提供するための共有責任において、各チームの役割を全員が理解するために欠かせません。
連携は、現在の脆弱性を可視化するだけにとどまりません。社内のさまざまなチームのメンバーが参加するデイリースタンドアップを通じて、10xはセキュリティ脆弱性について話し合う際に、多様な視点が反映されるようにしています。Neil氏は、「現在の脆弱性を全チーム参加のデイリースタンドアップで確認しています。機能の実装だけではなく、機能面、非機能面、セキュリティ面について、全員が毎朝集まって話し合います」と語りました。Drennan氏は、脅威の状況がますます変化するなかで、この戦略が組織の対応にとって特に重要だと指摘しています。
Drennan氏は、こうしたやり取りの効果についてさらに、「チームの有効性を高めるうえで役立ちますし、チーム間で率直にコミュニケーションできる経路があることは非常に重要です」と述べました。これは、セキュアなソフトウェアに対する共有責任という考え方をさらに強化し、組織文化に根付かせるものです。社内の各役割の間で、共感と理解を深めるうえでも優れた方法です。
Neil氏はまた、脅威モデリングを通じて、デリバリーパイプラインの早い段階からセキュリティを考慮する方法についても説明しました。Puppetの2019年版『State of DevOps Report』では、協働による脅威モデリングが組織全体のセキュリティ態勢に大きな影響を与えることが示されています。関係者がこの重要な取り組みに積極的に参加できるよう、10xではSTRIDEモデルに基づいて脅威を特定する脅威モデリングのカードゲームを活用しています。Drennan氏によると、「チームがカードを持ち寄って座り、さまざまなセキュリティ脆弱性のシナリオを演じてみるのは、チームの関心を高め、継続的に適切なポイントに目を向けてもらううえで、とても効果的な方法です」。
10xは、人、プロセス、テクノロジーの基盤に注力することで、ソフトウェアデリバリーを取り巻くセキュリティ文化を築く独自の実践を導入してきました。そのアプローチは、これら3つの要素を協調させることで、効率的で信頼性が高く、安全なソフトウェアを提供できることを示しています。
DatadogのDevSecOps文化を推進
障壁を取り払い、デリバリーパイプラインの各段階にセキュリティを統合する
開発現場にセキュリティ担当者を配置し、共有責任への理解を深める
パイプライン自動化を機能面から支えるセキュリティ
Datadogは、自動化を進め、パイプラインにセキュリティを統合するには、まず人に関する課題に取り組むことが重要だと示す事例です。組織内のサイロを越えて共感を育み、連携を強化するプログラムを立ち上げました。また、セキュリティチームはパイプラインの自動化やツール開発にも積極的に貢献しています。Douglas DePerry氏は、The Secure Developer Podcastへの出演当時、Datadogのプロダクトセキュリティ担当ディレクターを務めており、DevSecOpsにおけるこうした重要課題の解決に向けた革新的な取り組みを紹介しました。
より速く、より良いソフトウェア開発を目指しても、うまくいかないことはよくあります。1日に何十回も本番環境にデプロイしている状況では、すべてをレビューすることはできません。Datadogでは、セキュリティエンジニアを開発チームに数週間から数か月にわたって配置しました。セキュリティ意識の向上を優先し、セキュリティは全員の責任だという意識を醸成しています。「ちょっとした見落としやセキュリティバグを一緒に修正しよう」と支援しながら、実践を通して学び合うのです。
DePerry氏によると、「セキュリティチームはもっとコードを書く必要があります。自動化もさらに進めなければなりません。そうすることで効果を何倍にも高め、コードのデプロイ速度についていけるようになります」。Datadogがこの課題に取り組む方法の一つは、自社のニーズに合わせたツールを開発することでした。このツールにより、セキュリティチームは開発チームに対し、作成したコードに基づく実行可能なメッセージや修正タスクを提示できるようになりました。
Datadogは以前、静的解析セキュリティテスト(SAST)ツールを導入していました。当初はコンプライアンスの証明を目的としていましたが、ニーズに合わず、既存のDevOpsパイプラインにも十分に統合できませんでした。そこで独自に工夫し、SASTとソフトウェア構成分析(SCA)のスキャンを行うツールを開発しました。DePerry氏は、「ひねりのない名前ですが、Middlewareと名付けました。追加のプラグインを作れるフレームワークのようなものです。静的解析プラグインと、依存関係の脆弱性を検出するプラグインを用意しました」と語っています。
DePerry氏はさらに、「まずは最初に対処すべきことに注力する必要があります。しかし、それをどう判断すればよいのでしょうか。現時点では測定が難しい項目もありますが、適切に予測できれば、その判断の難しさや誤りやすさを大きく軽減できます」と話してくれました。
Pivotalのクラウドネイティブ文化
クラウドネイティブへの変革において、セキュリティを文化の変化として根付かせる重要性
ゲートではなくガードレールを設け、開発者をセキュアな道筋へ導く
開発者とセキュリティ担当者が「ペアを組む」ことで、相互理解と責任の共有を促す
DevSecOpsの導入とクラウドネイティブ技術への移行は、多くの場合、並行して進みます。セキュリティを損なわずに組織がこうした新しいパラダイムに適応するには、文化の変革も必要です。セキュリティ側も、デリバリーパイプラインにゲートとして制御を設けるという考え方から脱却しなければなりません。その実現には、開発者とセキュリティ担当者の相互理解を深め、責任を共有することが大いに役立ちます。
Pivotal(現在はVMwareの子会社)のフィールドCISOであるSteve White氏が、最近Secure Developer Podcastに出演しました。エピソードでは、クラウドへの移行、DevSecOpsパイプラインにおけるセキュリティの役割、セキュリティと開発を結び付けることで成果を高める方法について語りました。Steve氏は、セキュリティリーダーや経営幹部と連携し、セキュリティエンジニアリングのアーキテクチャに取り組んでいます。また、DevSecOpsの各分野の担当者を集めた実践的なワークショップを実施し、クラウドネイティブセキュリティの実情を伝えています。
DevSecOpsの導入を通じて組織を変革するうえで重要なのは、ツールだけに注目する状態から脱却することです。White氏はこう語っています。「この分野で変革を進めるための最初の原則は、単なるテクノロジーの変化ではないということです。必要な技術的変化もありますが、より大きな変化は、文化と視点です。これは、情報セキュリティが最終的に変わるべき姿であり、他の事業分野で起きた変化と同じです」。DevOpsが文化に大きな変化をもたらしてきたことを踏まえると、セキュリティも同様に追いつく必要があります。
セキュリティ担当者が適応に苦労してきた重要な視点の一つは、セキュリティの実践をパイプラインにどう組み込むかということです。White氏は次のように述べています。「私がよく使う表現は、『ゲートからガードレールへ』です。今後、企業におけるセキュリティの役割は、セーフティネットのようなものを提供することです。上下にガードレールを設け、非常に危険な範囲を超えないように守りながら、その内側では自由に進めるようにするのです」。この考え方は、セキュリティがDevOpsの流れを受け入れ、信頼を得るだけでなく、何よりも無理なく共存するための重要な方向性を示しています。
ソフトウェア開発に携わる開発者からセキュリティの信頼を得る方法として、相互理解を深めることも挙げられます。セキュリティ担当者と開発者が日々の業務で協力すれば、互いの仕事に対する信頼と理解が生まれます。White氏はこう説明しています。「ペアを組むというなら、二人が一つの画面の前に座り、一緒に一つの問題を解決する、本来のペアプログラミングの形で行いたいです。一人がセキュリティエンジニアで、もう一人が機能開発者なら、二人とも多くを学び、議論にも大きく貢献できます」。
White氏は、DevSecOps文化に欠かせない重要な原則をいくつか挙げています。クラウドネイティブへの移行がDevSecOps導入を促す場合もあれば、DevSecOps導入がクラウドへの変革を後押しする場合もあり、この二つが密接に結び付いていることは明らかです。組織は両者の関連性を理解し、組織文化を大きく変革する一環として、双方を取り入れ、事業価値を生み出す準備を整える必要があります。
Cisco/DuoのDevSecOps
「開発者のいる場所に届ける」ことで、セキュリティをパイプラインに組み込む
新たなテクノロジーの機会を見極める段階から、セキュリティ設計を定義するシフトレフト
継続的な改善に焦点を当てた、より高度な指標が必要
DevSecOps文化の基盤にあるのは、パイプライン全体の効率化です。開発者がバックログからデプロイまで、できる限り効率よく進められるようにします。セキュリティをパイプラインに真に組み込むには、セキュアな実践を摩擦なく統合する必要があります。そのためには、できるだけ早い段階でセキュリティ設計を検討するシフトレフトが、開発者が求める機能のコーディングを始める際の道筋を整えます。しかし、各実践がセキュリティ態勢に与える影響を効果的に測定できなければ、それらをパイプラインに組み込み続ける正当性を示すことは非常に困難です。
CiscoのCISOで、Duo Securityの元責任者でもあるMichael Hanley氏がThe Secure Developer Podcastに出演し、Cisco/Duoがこれらの課題に対処するために採用したアプローチを紹介しました。Michael氏は2018年のDuo買収に伴ってCiscoに加わり、5年間にわたり同社のセキュリティ施策を統括しました。既存の開発者ツールへのセキュリティ統合、先手を打つセキュリティ設計のシフトレフト、そして有意義な指標の策定に関する氏の見解は、こうした豊富な経験に基づいています。
DevSecOps文化を築く際、多くの組織はパイプラインを高速化するために必要なツールを考えます。DevOpsの初期には、あらゆるものの自動化に重点が置かれていました。コードのコミットをきっかけにビルドを自動実行し、コードの昇格に応じて回帰テストを自動実行する、といった具合です。しかし、セキュリティは従来、このモデルに適合するプロセスやツールを導入するのに苦労しており、その結果、摩擦を増やしてしまうことがありました。
こうした摩擦は開発者を苛立たせ、セキュアな実践の導入を妨げることがあります。Hanley氏によると、Duoでは既存のツールとの統合を重視していました。「……エンジニアが最も作業しやすい場所にこちらから出向きます。たとえば、ソース管理やその他のエンジニアリング作業の追跡に使っているものと同じチケット管理システムを使います。エンジニアが使いやすいように、同じ場でエンジニアリングチームと多くの作業を行っています」。開発者が普段使っているツールに統合し、日常の業務環境に合わせるという考え方は、真のDevSecOps文化を築くうえで非常に有効です。
Hanley氏は、セキュリティをパイプラインに組み込むもう一つの重要な考え方として、シフトレフトにも触れています。この考え方自体は新しいものではありませんが、DevSecOps文化においてセキュリティチームがシフトレフトを進める必要性は高まっています。Hanley氏はこう語りました。「……Duoのソフトウェア開発ライフサイクルに沿って考えると、最も早い段階では、ラボチームが関わります。そこでは、新たなテクノロジーの機会を戦略的に特定するだけでなく、望ましいセキュリティ設計の基準を早期に定義します……」。
これは重要で、非常に革新的なアプローチです。ユーザーストーリーがバックログに入る前にセキュリティ設計を特定し始めれば、パイプラインの最初期から開発者に文書化されたセキュリティ要件を提供できます。これにより、セキュリティ設計の作業が迅速なコード提供を妨げることもありません。開発者はセキュリティ設計からコーディングへよりスムーズに移行できるため、セキュリティは開発を支援する役割を果たします。また、見落としたセキュリティ要素が後のスプリントで修正すべき脆弱性になる心配も減ります。
こうしたアプローチが期待どおりの効果を上げているか、組織はどう判断すればよいのでしょうか。そこで重要になるのが指標です。Hanley氏はこう述べています。「セキュリティ指標や、バグの件数を単純に数えるような定量指標には、以前から大きな問題を感じています……多くのプログラム、特に私たちのプログラムを説明するには、あまりに単純すぎます」。これは多くの組織が直面する課題です。未解決のバグの数だけでは背景がわかりません。脆弱性を生んだリリースが何回あったのでしょうか。脆弱性の数が少ないのは、セキュリティが向上したからなのか、それともアプリケーションが長い間テストされていないからなのか。指標のプログラムには、より多くの文脈が必要です。
Hanley氏は、Cisco/Duoがプログラムの成功を測るために成熟度モデルをどのように活用しているかを紹介しました。「Duoで使っている成熟度モデルは、BSIMMとSAMMを組み合わせたものです……そこから得られる重要な指標は何か、活動のうち少なくとも部分的にカバーできている割合はどれくらいか、完全にカバーできている割合はどれくらいかを考えるようにしています」とHanley氏は説明しました。
さらにHanley氏は、どの組織も検討すべき、指標に関するもう一つの重要な考え方を紹介しました。彼らのアプローチは、継続的な改善を重視するモデルに焦点を当てるのに役立ったといいます。多くのセキュリティ施策が失敗するのは、現実的ではないほど高い目標の達成を目指すためです。達成そのものではなく改善に目標を置けば、失敗から学び、適応し、革新する余地が生まれます。最終的には、セキュリティ実践の事業価値も、より明確に示せるようになります。
Duoでの経験を通じてHanley氏が共有した考え方は、DevSecOps文化を築こうとするあらゆる組織が直面するニーズを示しています。
2nd Sight Labのクラウドセキュリティ
クラウドセキュリティのベストプラクティスを教え、開発者を支援する
開発者とセキュリティ担当者の相互理解を深める
クラウドセキュリティにおけるガバナンスの役割
多くの組織のIT戦略でクラウドへの移行が中心となるなか、その環境のセキュリティ確保に伴う課題はさらに大きくなっています。セキュリティを維持しながら、開発者がクラウドネイティブ技術を活用できるようにするのは容易ではありません。また、組織内のさまざまな分野の担当者が連携し、全体像を理解できるようにすることも、複雑なクラウド環境を守るうえで欠かせません。さらに、プログラムを監視し、失敗から学ぶ方法も、こうした事業変革に取り組む際の重要な要素です。
Guy Podjarny氏は、2nd Sight LabのCEOであり、『クラウド時代の経営幹部のためのサイバーセキュリティ』の著者でもあるTeri Radichel氏に話を聞きました。Teri氏は、以前経営していたWebアプリケーションの開発・ホスティング会社で侵害を経験した後、クラウドセキュリティの世界に入った経緯を説明しました。2nd Sight Labは、クラウドセキュリティのトレーニングとコンサルティングを提供する企業です。Teri氏の話の多くは、単一の組織にクラウド技術を導入する視点ではなく、複数の組織を支援してきたコンサルタントとしての経験に基づいていました。
クラウドやクラウドへの移行について話すとき、根本的な課題となるのは、そもそもクラウドとは何かを定義することです。Teri氏はこう述べています。「クラウドは誰かのコンピューターにすぎないと言う人もいますが、私はそれ以上のものだといつも話しています。マネージドホスティング施設にいた頃も、それは誰かが所有する金属製のコンピューターでしたよね」。組織によっては、Software-as-a-Service(SaaS)ソリューションの利用もクラウド戦略の一部になり得ます。
クラウドとは何かを理解するだけでも複雑なうえ、クラウドネイティブ技術の動的な性質が加わることで、セキュリティに関する大きな責任を開発者に委ねることになります。Teri氏はこの複雑さについてこう語っています。「ネットワークの構築やS3バケット、ロードバランサー、CDNの設定を求められる開発者なら、ベストプラクティスをしっかり調べる必要があります」。この課題に対処するため、開発者に向けて次のようにアドバイスしています。「主要なクラウドプロバイダー3社すべてのベストプラクティスを示す、CIS Benchmarksというものがあります」
もちろん、クラウドセキュリティの複雑さに対処するうえでもう一つ重要なのは、開発者とセキュリティの専門家が協力し、知識を共有し、互いの仕事を理解し、安全なソフトウェアという共通の目標に向かって取り組むことです。Radichel氏は、この点でセキュリティチームが積極的な役割を果たす必要があると述べています。「セキュリティには、キーボードを使って直接作業すること以外にも、非常に大きな役割があります。アプリケーションセキュリティや、コードにクロスサイトスクリプティングの脆弱性がないかを確認することだけがセキュリティではありません。セキュリティとはリスクなのです」と語りました。
最後に、大規模な変革においては、定められたプロセスや手順を一貫して守り、失敗から学ぶことも非常に重要です。Radichel氏はこう認めています。「もちろん、人は間違いを犯します。だから、組織全体のガバナンスについて考え、間違いが起きないように組織をどう整えるかを考えなければなりませんよね?」
最終的に、真のDevSecOps文化における責任共有モデルを活用することで、クラウドへの移行全体を通じて、より優れたプラクティスを推進できます。Radichel氏の見解や重要な提言は、デリバリーパイプラインに関わるすべてのチームが協力し、知識を共有し、共通の目標に注力することの重要性を示しています。