OpenSAMMのSAMMとはSoftware Assurance Maturity Model(ソフトウェア保証成熟度モデル)の略で名前の通り、成熟度モデルの一種です。成熟度モデルで有名な米カーネギーメロン大学のCMMI(Capability Maturity Model Integration – 能力成熟度モデル統合)同類の成熟度モデルに基づくセキュアなソフトウェア開発の方法論です。OpenSAMMはCMMIに比べるとかなり簡易化されており、小さな組織でも導入しやすいモデルになっています。
SAMMはプライバシーマーク認証やISMS認証を取得している組織でも有効です。これらの認証制度と重複している部分もありますが、ソフトウェア品質保証に特化したSAMMはより効果的かつ広範囲にセキュア開発をサポートできます。SAMMより広範囲な領域をサポートするCMMIを導入している組織には必要ありません。
私の会社では比較的導入しやすいセキュア開発メソドロジーであるSAMMを推奨し、導入サポートも行っています。SAMMは新しい物ではなく7年ほど前に最初のバージョンがリリースされており、当時から推奨しています。
成熟度モデルとは?
SAMMを理解するには”成熟度モデル”とは何かを理解する必要があります。成熟度モデルは組織(個人含む)の成熟度(知識、環境)は一足飛びに高いレベルに到達することは困難である事実から開発されました。
ISMSを導入した組織なら一度に”すべきこと”全て実現することがいかに大変かよく理解されていると思います。成熟度モデルでは”すべきこと”を全く実現していなくても、すぐに導入できます。段階的に成熟度を向上させ、より高いレベルの達成に必要な要件を順次導入できます。
成熟度モデルでは特定の領域(要件管理、構成管理など)の成熟度をモデル化し、達成レベルで評価します。高いレベル(成熟度)の要件を満たすと、レベル2、レベル3とレベルがあがります。
個人的にはCMMIもお気に入りですが、領域の数や要求事項が多くあります。成熟度モデルは導入しやすいですが、一般的な組織にとってはCMMIの導入はかなりの負担になります。SAMMは仕様書も100ページ足らずでCMMIに比べかなり導入しやすいです。導入しやすくてもセキュア開発にとても役立ちます。
SAMMの概要
SAMMが対応する領域とその範囲を図にすると以下のようになります。
SAMMでは以下の4つの領域とそれぞれ三つのサブ項目に分けて成熟度を測ります。
- ガバナンス – 戦略&指標(SM)、教育&指導(EG)、ポリシー&コンプライアンス(PC)
- 構築 – セキュリティ要件(SR)、驚異の査定(TA)、セキュアなアーキテクチャー(SA)
- 検証 – 設計レビュー(DR)、セキュリティテスト(ST)、コードレビュー(CR)
- 配備 – 環境の堅牢化(EH)、脆弱性の管理(VM)、運用体制のセキュリティ対応(OE)
セキュアな開発を運用をするために必要な項目がコンパクト※にまとめられています。
※CMMIには「開発のためのCMMI」”だけ”で20以上のプロセス領域があります!
SAMMのレベル
SAMMでは初期レベルはレベル0(何もしていない成熟度)です。最終的なレベルはレベル3(目標とする成熟度)です。
- レベル0:「セキュリティ対策」の活動が満たされていない状態を表す暗黙の開始点
- レベル1:「セキュリティ対策」に関する初歩的な理解とその場限りの対応
- レベル2:「セキュリティ対策」の効率や効果の向上
- レベル3:「セキュリティ対策」についての総合的な熟達
レベル0は何もしていない状態なので要求事項はありません。
実例を見た方が解りやすいでしょう。例えば、戦略&指標(SM)の各レベルは以下のように定義されています。
SM1、SM2、SM3はそれぞれは戦略&指標のレベル1、レベル2、レベル3を意味します。それぞれの項目にはそのレベルの成熟度達成に必要要素が定義されています。査定の流れは以下のようになります。
フローチャートにあるようにワークシートが用意されています。SM(戦略&指標)の場合は以下のワークシートを使います。
とても導入しやすそうだ!と分かると思います。しかし、単純すぎないか?と思うかも知れません。SAMMは100ページ弱あり、もっと詳しく解説してあります。例えば、SM(戦略&指標)の査定の項目の効果は次のように解説されています。
このくらい詳しくなってくると「私の所属する組織はSM3のレベルには達成していない」「SM1でさえ達成していない」と感じる方も多いのではないでしょうか?
SM1の成熟度に必要な項目は以下のように解説されています。
確かにこういうセキュリティ対策を実施すべだと思える事が記述されています。
SAMMはとてもシンプルかつ使いやすい/導入しやすいメソドロジーですが、セキュア開発標準/メソドロジーを導入せずにSM1を達成できている組織はあまりないのでしょうか?
まとめ
セキュリティ対策とは本質的にマネジメントであり、ソフトウェアセキュリティの確保とは本質的には品質管理です。セキュリティ向上のために、確かにこうすべきだな、と思える事であっても何もなしで自ら実施することはかなり困難です。SAMMはセキュアなソフトェア開発を実施するためにとても役立つ方法論です。
SAMM v1.0
- 英語版:http://www.opensamm.org/downloads/SAMM-1.0.pdf
- 日本語版:https://www.jpcert.or.jp/research/2010/SAMM_20100407.pdf
先日、「個々の脆弱性対策だけやれば良い」とする議論に組みしない理由をFBでシェアした時に
「このセキュリティ対策だけはやっておきましょう」はセキュリティ対策の第一ステップに過ぎません。
とコメントを付けました。これはSAMMやCMMIを理解すると「セキュリティ対策の第一ステップに過ぎない」ことが解ると思います。