見出し画像

OWASP SAMMではじめる、プロダクトセキュリティの評価と中期計画

こんにちは。
ワンキャリアでセキュリティエンジニアをしている蟹と申します。

本稿は、先日下記のイベントで、セキュリティ組織についてのフレームワーク「OWASP SAMM」についてお話しした内容を記事化したものです。

スライドはこちら

ソフトウェア開発組織においてセキュリティ対策の評価や戦略策定にお悩みの皆さんが、OWASP SAMMを理解する一助になればと思います。



はじめに

いきなりですが、皆さんの組織において、セキュリティ対策の戦略は適切に立てられていますか?
とても重要で難しいテーマだと思います。

セキュリティ対策に限らず、何か目的を達成しようとする際、何をどの順で実施し、今はどの領域にリソース投下を集中させるのか?など、効率的に目的を達成するための計画を立てて進めると思います。計画がない状態で進めてしまうと、本来やらなくても良いことに時間を取られてしまったり、目的が果たされなかったりするかもしれません。

というわけで組織のセキュリティ対策も戦略的に行っていきたいよね、というのが本稿の前提です。


戦略とは?

戦略は大事だ、ということでしたが、今度は「じゃあ戦略ってなんだろう?」ということになりますので、「戦略」を定義しましょう。
本稿では「対象全体をセグメントに区切り、どこから取るかを決めること」としたいと思います。こちらは、弊社CSOである北野の言葉を借りています。

上記定義に沿って実際に戦略を立てる流れを整理すると、まず対象全体を定義し、対象全体を分割する。その区切りごとに現状を評価していって、優先度を与える。ということになります。

簡単ですね。

とはいえ実際、セキュリティ対策において、これらを自力で行うのはとても大変に思えます。
まずセキュリティ対策全体のスコープを定めて区分することと、これらに網羅性と妥当性を与えることは豊富な知識と経験が必要でしょう。また、それらを評価して数値化することも、いかにも個人に依存するように感じられます。

これらの課題を解決し、セキュリティ対策の戦略を立てるためのフレームワークが、今からご紹介する「OWASP SAMM」です。


OWASP SAMMとは?

OWASP SAMMとは、OWASPが公開している「組織のソフトウェアセキュリティ対策状況を評価し、戦略の策定・実施をするためのフレームワーク」で、まさに「セキュリティ対策」の「戦略」を与えるものになっています。
SAMMは「Software Assurance Maturity Model」の略で、セキュリティ対策の中でも「ソフトウェア開発」を行う「組織の成熟度」に焦点を当てたフレームワークであることが特徴です。

NIST CSF(サイバーセキュリティフレームワーク)や、PSIRT Services Framework、コーポレート寄りの内容も含んだCIS Controlsなど、セキュリティ対策のためのフレームワークはいくつかありますが、今回は深入りせず、OWASP SAMMに限ったお話をいたします。

なお、今回これら他のフレームワークでなくOWASP SAMMを選択した理由としては、
・対象の領域がWeb開発にマッチしている
 ・ソフトウェアへ特化している
 ・小さい組織も対象としている
・戦略立案のための必要な要素を満たす
 ・領域の網羅的な分割を与えてくれる
 ・各区分について定量的な評価を与えてくれる
といった点が、ワンキャリアでのプロダクトセキュリティ対策の戦略立案に対して最適だと判断したためです。

SAMMには執筆時点で1.0、1.5、2.0の3つのバージョンがあります。1.0のみ日本語訳がありますが、1.5と2.0に日本語訳はありません。
本稿では2.0を取り上げますが、筆者とChatGPTによる日本語訳となるため、不適切な訳が含まれる可能性がございます。もしそのような箇所を発見された方がいらっしゃいましたら、後述するXのアカウントなどからご教授ください。


OWASP SAMMの具体的な内容

OWASP SAMMの具体的な全体像は、下図のようなツリー構造です。
5つのビジネス機能、ビジネス機能ごとに3つのセキュリティ対策、セキュリティ対策ごとに2つのストリームという、合計30の区分に分かれており、その区分ごとに成熟度レベル1〜3の評価を下すイメージです。

ストリームを具体的に書き出すと下図のようになります。
(ここは日本語訳に自信がない箇所もあるので、ご覧いただいた有識者の方がいらっしゃいましたら別案を教えてください!)

実際の中身の例をあげると、ビジネス機能「実装」 > セキュリティ対策「セキュアなデプロイ」 > ストリーム「A. デプロイプロセス」> レベル「1」を下に抜粋します。

Quality Criteria(品質保証、チェック項目のようなもの)として、「デプロイプロセスを把握できていますか?」「デプロイに関するドキュメントは最新に保たれていますか?」など、いくつかの項目があり、「できていない」「少しできている」「大体できている」などの回答の段階があります。

例えば、レベル1が全て満たされていれば、レベル1達成。その上でさらにレベル2が半分できていたら、「1+」と評価します。


活用方法と結果

最後に、実際にワンキャリアでOWASP SAMMを活用しプロダクトセキュリティ対策方針を立案した流れについてご紹介します。ただし、数値は全てダミーの値としていることをご了承ください。

全体としては、まず現状を評価し、目標を定め、ギャップを埋める計画を策定する。という教科書的な流れで活用しました。各ステップで工夫したポイントをスライドと共にご紹介します。

STEP1:現状の評価

基本的には、上述したQuality Criteriaに答える形で評価を行います。

一点工夫したところは、「セキュリティ対策単位での平均値」を指標として採用した点です。つまり、2つのストリーム・3つのレベルを全て丸めた値を採用しています。具体例としては、下記の表で「58%」を評価の指標として設定しています。

理由としては2つあり、一つ目はレベル1基準が一部未達でもレベル2・3の基準が達成されるケースもあるため、「3段階の成熟度レベル全ての平均値」を指標としたかった点。二つ目は単純にストリームやレベルまで加味した30や60は一般的な人間には認知負荷が高すぎる(追いきれない)と感じたためです。実際、二つ目も無視できない要素だと考えており、セキュリティを担当する部内だけでなく、経営陣や開発現場、プロダクトの事業部などとのコミュニケーションにも使用する指標としたいので、分かりやすさは重要です。

本指標の注意点としては、OWASP公式ではレベル1の基準を全クリアしないとレベル2・3に進めない、と言う段階的な成熟度の思想からは外れるため、吉と出るか否かは追々運用してみて噛み締めます… また1年くらいしたら振り返りの記事を出せるといいなと思っています。

これらを全ての項目において実施し、レーダーチャートで表現したものが下図です。(値はExampleで、お花柄にしています。)

STEP2:リスクの評価と目標の策定

15の各セキュリティ対策に対し、目標のスコアを定めます。先ほどの例だと「58%」だったものを、何%まで上げたいか?というスコアです。

今回、目標スコアは、セキュリティ対策に対応するリスクを列挙し、下記の式で算出しました。

目標スコア = 発生確率(1〜10) × 深刻度(1〜10) ± 各補正項(15) 

他社で公開している数値を見つけられなかったことと、リスク評価にはワンキャリアの事業環境を踏まえるべきだろうという理由で、この定義にしています。

例えば下の表のように、リスクを書き出し、ワンキャリアでの発生確率と深刻度を定義します。補正項は現状での達成度合いや、実際のQuality Criteriaを鑑みての実現可能性なども加味しています。具体的には、現状が既に上回っている場合は目標を現状の数値に引き上げたり、目標が90や100などになっていても実際の対策項目が過剰な場合は引き下げたり、分かりやすさのため1の位を四捨五入したりしています。(補正項の匙加減で好きできてしまうので、四捨五入に留めるようにはしています。)

全項目にするとこんな感じです。綺麗ですね。

STEP3:施策の洗い出しと計画の策定

最後に、現状と目標のギャップを埋めます。先ほどの目標と現状の差分の大きいものから、「今年はこの施策をやっていきます」「3〜5年かけてこの順でやっていきます」という形で計画を立てました。

例えば下記のようなイメージです。


さいごに

まとめると、下記の3点です。

・SAMMとは「セグメントに区切る」分類と「どこから取るかを決める」ための指標を与え、セキュリティ対策の「戦略」立案を補助するフレームワーク
・SAMM活用の流れ「目標 − 現状 = 計画」
・結果、網羅的・定量的に自社サービスのセキュリティを評価し、今後の計画を戦略的に策定することができた

ぜひ皆さんもOWASP SAMMなどのフレームワークを活用し、組織のセキュリティ対策戦略について思いを馳せてみてはいかがでしょうか。


▼ワンキャリアのエンジニア組織のことを知りたい方はまずこちら

▼カジュアル面談を希望の方はこちら

▼エンジニア求人票


この記事が参加している募集

オープン社内報

この記事が気に入ったらサポートをしてみませんか?