In this article
SnykがOWASP Software Assurance Maturity Modelにどう役立つか
Oliver Dombai
Mathias Conradt
OWASP Software Assurance Maturity Model(SAMM)は、アプリケーションセキュリティ(AppSec)プログラムの測定と強化を目指す組織にとって、重要な基盤となっています。広く認知されているフレームワークであるOWASP SAMMは、セキュリティ対策の体系化と評価に役立ち、継続的な改善に向けたロードマップを提供します。その重要性と導入方法を理解することは、ソフトウェアセキュリティ態勢を真剣に強化する企業にとって欠かせません。
OWASP SAMMフレームワークは、2009年にOpenSAMMとして初めて公開され、2016年に更新された後、OWASPを代表するプロジェクトへと発展しました。アプリケーションセキュリティに焦点を当て、具体的な指針を示すことで、ソフトウェアセキュリティの実践を構築、管理、改善するアプローチを提供します。現在の実践状況を観察するBSIMMのような記述的モデルとは異なり、OWASP SAMMは、具体的かつ実行可能なセキュリティ対策の導入を組織に促すために設計されています。
OWASP SAMMの使命は明確です。あらゆる規模や業種の組織がソフトウェアセキュリティを分析・改善するための、測定可能で効果的な方法を提供し、ソフトウェア保証の主要な成熟度モデルとなることです。この包括的なモデルは、開発と調達を含むソフトウェアライフサイクル全体を支援し、適応性とリスクベースの設計を備えています。こうした柔軟性により、OWASP SAMMはさまざまな業界やテクノロジーにおいて有効性を保ちます。
では、なぜDevSecOpsの成熟度フレームワークが必要なのでしょうか。セキュリティ脅威がますます巧妙化する時代に、組織は場当たり的、あるいは事後対応型のアプローチを続けるわけにはいきません。OWASP SAMMのような成熟度フレームワークは、セキュリティを効果的に管理するために必要な体系を提供します。進捗を測定し、基準を設定し、ゼロから方法を考え直すことなく、実績に裏付けられたベストプラクティスに沿って取り組めます。他者の知見を学び、コミュニティ主導のアプローチを活用することで、長年にわたり検証、改善されてきた実践方法を導入できます。
OWASP SAMMが選ばれる理由は複数あります。主な特長は次のとおりです。
測定可能:セキュリティ実践ごとに成熟度レベルが定義されており、継続的な改善に役立ちます
実践的:成熟度を高めるための明確な道筋を示します。
柔軟:テクノロジー、プロセス、組織に依存せず、スタートアップから大企業まで幅広く活用できます
オープン:リソースを無料で利用でき、コミュニティ主導で知識を共有します。情報が有料の壁に制限される独自フレームワークとは異なります
世界的に有効:広範なエンタープライズ情報セキュリティではなく、アプリケーションセキュリティとDevSecOpsに特化しています。
OWASP SAMMの構造は、次のような主要な活動を支援するよう設計されています。
現在のソフトウェア保証態勢を評価する
改善戦略を策定する
導入ロードマップを作成する
具体的な活動の実施方法について、実践的なアドバイスを提供する
ただし、導入を成功させるには、明確な戦略だけでは不十分です。こうしたセキュリティ対策を実現するには、人材、プロセス、ツールが重要な役割を果たします。
開発者を重視したセキュリティプラットフォーム、Snyk
そこで活用できるのが、開発者を重視したセキュリティプラットフォームのSnykです。SnykはOWASP SAMMが定めるセキュリティ実践に密接に対応するツールを提供し、組織がセキュリティ態勢を導入、維持しやすくします。Snykは、複数のレイヤーにわたってアプリケーションのコードベースを静的解析する4つのモジュールを提供しています。
Snyk Code:開発者が作成したコードの脆弱性をスキャンする静的アプリケーションセキュリティテスト(SAST)ツールです。
Snyk Open Source:アプリケーションレベルで、オープンソースの依存関係に含まれる脆弱性をスキャンするソフトウェア構成分析(SCA)ツールです。
Snyk Container:コンテナイメージレベルでオープンソースの依存関係をスキャンし、イメージのパッケージレジストリに取り込まれる内容の安全性を確保します。
Snyk IaC:TerraformやCloudFormationなどのInfrastructure as Codeファイルをスキャンして設定ミスを検出し、基盤となるインフラストラクチャの潜在的なセキュリティリスクに対処します。
Snykの理念は、ソフトウェア開発ライフサイクル(SDLC)全体を通じて、開発者がすでに使用しているツールにセキュリティを組み込み、自らセキュリティに取り組めるようにすることです。このシフトレフトのアプローチは、具体的な指針を示すOWASP SAMMの性質とよく合致しています。開発プロセスの早い段階からセキュリティ対策を導入し、全体を通じて堅牢なセキュリティ態勢を維持できます。
セキュリティ対策をさらに強化するために、Snyk AppRiskは組織のすべての資産にわたってリスクを管理、優先順位付けし、最も重要な領域に修復作業を集中できるようにします。この包括的なセキュリティアプローチとOWASP SAMMの体系的なガイダンスを組み合わせることで、成熟度が高く、効果的で、測定可能なソフトウェアセキュリティプログラムを構築、維持できます。
SAMMとSnyk
各ビジネス機能とセキュリティ実践の詳細、そしてSnykがどのように役立つかを見ていきましょう。以下の図では、Snykが支援できるセキュリティ実践を紫色で示しています。

ビジネス機能:ガバナンス
セキュリティ実践:戦略と指標
OWASP SAMMモデルのガバナンス機能における「戦略と指標」の実践では、組織全体でソフトウェアセキュリティの目標を達成するための、一貫性と実効性のある計画の策定、維持に重点を置きます。すべてのセキュリティ活動を組織の目標に沿わせ、非効率や逆効果につながる取り組みを防ぎます。明確に定義されたソフトウェアセキュリティプログラムを策定することで、セキュリティ施策の優先順位付けを支援し、リソースを効果的に配分できます。
計画に加えて、「戦略と指標」の実践では、指標に基づいてセキュリティプログラムの有効性を追跡することも重視します。これには、主要業績評価指標(KPI)など、セキュリティ対策が組織の目標をどの程度達成しているかを把握できる指標の定義とモニタリングが含まれます。このアプローチにより、継続的な改善を促し、セキュリティ戦略を組織全体の目標に沿わせることができます。
Snykが「戦略と指標」を支援する方法
Snykは、充実したレポートとエンタープライズ分析の機能を提供します。これらのツールは、特に静的アプリケーションセキュリティテスト(SAST)とソフトウェア構成分析(SCA)に関連する、ソフトウェアセキュリティ対策の指標やKPIの定義、追跡に役立ちます。Snykの分析機能は、セキュリティプログラムの有効性について詳細なインサイトを提供し、十分な情報に基づく意思決定と、セキュリティ戦略全体の見直し、改善を支援します。
Snykのレポート機能を活用することで、組織はセキュリティ態勢を明確に把握し、セキュリティ施策の効果を測定するとともに、ソフトウェアセキュリティプログラムを組織の目標に沿わせることができます。
セキュリティ実践:ポリシーとコンプライアンス
OWASP SAMMモデルのガバナンス機能における「ポリシーとコンプライアンス」の実践は、組織が社内のセキュリティ基準と外部の規制要件を満たすことを目的としています。セキュリティポリシーを組織の事業目標に合わせ、アプリケーションごとのセキュリティベースラインを作成し、ソフトウェア開発ライフサイクル(SDLC)全体を通じてコンプライアンスを監視する自動監査を可能にします。
ストリームAでは、すべてのアプリケーションに適用するセキュリティポリシーと基準の策定、徹底に重点を置き、一貫した遵守とモニタリングを実現します。
ストリームBでは、サードパーティー要件への準拠状況の測定と報告に重点を置き、各アプリケーションが外部の義務を満たし、その内容が文書化、維持されるようにします。
Snykが「ポリシーとコンプライアンス」を支援する方法
Snyk Security PoliciesとLicense Policiesを利用すると、オープンソースライブラリの使用に関するガイドラインを定義し、適用できます。これにより、社内のセキュリティ基準とサードパーティー要件の両方への準拠を維持できます。
さらに、Snyk AppRiskは、組織のガバナンスポリシーで定められたすべてのセキュリティ制御が整備され、効果的に実施されるように支援します。アプリケーション固有のセキュリティ要件のモニタリングと報告にも役立ちます。これらのツールをSDLCに組み込むことで、コンプライアンスの適用を自動化し、違反のリスクを低減して、組織のセキュリティ態勢を強化できます。
セキュリティ実践:教育とガイダンス
OWASP SAMMモデルのガバナンス機能における「教育とガイダンス」の実践は、ソフトウェア開発ライフサイクルに携わるすべての人に、安全なソフトウェアを作成するために必要な知識とリソースを提供することを中心としています。継続的な教育と組織全体のセキュリティ意識の向上を重視します。開発者を対象としたトレーニングから始まり、組織内の他の職務にも対象を広げ、最終的には職務ごとの研修へと発展させ、セキュリティ対策の確実な実践につなげます。
トレーニングにとどまらず、この実践では、組織内の連携と透明性を促し、チーム間で知識やツールを共有することでアプリケーションセキュリティを推進します。すべてのメンバーがセキュアな開発を実践する、セキュリティ意識の高い環境を築くことが目標です。
Snykが「教育とガイダンス」を支援する方法
Snyk Learnは、安全なコーディングを学べる環境です。開発者やチームメンバーに、シナリオに基づくインタラクティブなセキュア開発レッスンを提供します。実践的な学習を通じてセキュリティ意識とスキルの向上を支援し、日々のワークフローにセキュアコーディングを組み込みやすくします。
ビジネス機能:設計
セキュリティ実践:脅威評価
OWASP SAMMモデルの設計機能における「脅威評価」の実践は、ソフトウェアの機能と運用環境に基づき、プロジェクトレベルでリスクを特定、評価することに重点を置きます。プロジェクトごとに想定される脅威や攻撃を把握することで、組織はセキュリティ施策の優先順位付けやリスク管理について、より適切な判断を下せます。この実践は、単純な脅威モデルやリスクプロファイルから、脅威情報を外部要因や補完的な制御に密接に結び付ける、より高度で包括的なアプローチへと発展します。セキュリティ問題が下流に及ぼし得る影響を深く理解し、組織が脅威にさらされている状況を常に最新の状態に保つことが目標です。
Snykが「脅威評価」を支援する方法
Snyk AppRiskは、カスタムポリシーに基づいてリポジトリなどのソフトウェア資産を自動分類する、アプリケーションセキュリティポスチャ管理ソリューションです。組織はアプリケーションのリスクプロファイルを正確かつ一元的に把握し、組織全体の脅威カバレッジを継続的にモニタリング、更新できます。Snyk AppRiskは、リスク評価が網羅的かつ最新で、現在の脅威状況に即したものとなるよう支援します。
ビジネス機能:実装
セキュリティ実践:セキュアビルド
OWASP SAMMモデルのImplementationビジネス機能におけるSecure Buildプラクティスは、標準化された再現可能なソフトウェアビルドプロセスを確立し、最初からセキュリティを組み込むことに重点を置いています。このプラクティスでは、ビルドプロセスを自動化して主観や人的ミスを排除し、静的アプリケーションセキュリティテスト(SAST)や動的アプリケーションセキュリティテスト(DAST)などのセキュリティチェックをパイプラインに組み込むことを重視します。自動化により、セキュリティのリグレッションを早期に特定して対処し、安全でない成果物が本番環境に到達するのを防ぎます。
さらにこのプラクティスでは、現代のアプリケーションにおけるソフトウェア依存関係の重要な役割にも取り組みます。潜在的な脆弱性の影響を最小限に抑えるため、トランジティブ依存関係を含むサードパーティーコンポーネントのセキュリティ状況を特定し、追跡することの重要性を強調します。より高度な実装では、アプリケーションコードに適用するのと同じ厳格なセキュリティチェックを依存関係にも適用し、包括的なセキュリティカバレッジを確保します。
SnykによるSecure Buildの支援
Snykは、Secure Buildプラクティスに最適な一連のツールを提供しています。
Snyk Codeは静的アプリケーションセキュリティテスト(SAST)機能を提供し、自動化されたビルドプロセスの一環として、開発者がコードをスキャンして脆弱性を検出できるようにします。これにより、セキュリティ上の問題を早期に検出して対処し、安全でないコードが本番環境に到達するリスクを低減します。
Snyk Open Sourceは、トランジティブ依存関係を含むオープンソース依存関係をスキャンし、既知の脆弱性を検出します。このツールは、サードパーティーコンポーネントの問題を継続的に監視して対処することで、安全なソフトウェアサプライチェーンの維持に役立ちます。
SnykのAutomatic Fix PRs機能は、オープンソースライブラリで検出された脆弱性を修正するプルリクエストを自動的に作成します。Gitシステムとの連携によってセキュリティ問題の修正プロセスを効率化し、アプリケーションの安全性を継続的に保ちます。
SnykのPull Request Checkは、すべてのプルリクエストを自動的にレビューし、変更によって新たに持ち込まれる脆弱性を検出します。これにより、セキュリティレビューのサイクルを短縮し、コードの完全性を維持できます。
CI/CDとのインテグレーションおよびSnyk CLI:SnykはCI/CDパイプラインにシームレスに統合され、一定の深刻度しきい値を超える脆弱性を含むビルドをブロックするセキュリティゲートとして機能します。また、Snyk CLIでは、SPDX形式およびCycloneDX形式のソフトウェア部品表(SBOM)を生成できます。これにより、アプリケーションで使用されているコンポーネントと、それらに関連するリスクを詳細に把握できます。
ビルドプロセスにSnykを統合することで、組織はセキュリティチェックを自動化し、アプリケーションコードと依存関係の両方に含まれる脆弱性を管理できます。また、OWASP SAMMモデルが定めるベストプラクティスに沿って、一貫性のある安全なビルドプロセスを実現できます。
セキュリティプラクティス:Secure Deployment
OWASP SAMMモデルのImplementationビジネス機能におけるSecure Deploymentプラクティスは、デプロイプロセス中もアプリケーションのセキュリティと完全性を維持します。このプラクティスでは、手作業によるミスを減らすためのデプロイプロセスの自動化と、各段階でのセキュリティ検証チェックの組み込みを重視します。また、開発に直接関与していない訓練を受けた担当者がデプロイを行うよう、職務分掌を推奨しています。
デプロイの手順だけでなく、本番環境でアプリケーションを稼働させるために不可欠なパスワード、トークン、その他のシークレットなど、機密データの保護にも取り組みます。基本的なプラクティスでは、シークレットをリポジトリや設定ファイルから安全な保管庫に移します。より高度な実装では、デプロイ時にシークレットを動的に生成し、保護されていないシークレットがないか継続的に監視します。
SnykによるSecure Deploymentの支援
Snykは、Secure Deploymentプラクティスに適した複数のツールを提供しています。
Snyk Codeは静的アプリケーションセキュリティテスト(SAST)によってデプロイ前にコードの脆弱性を特定し、安全なコードだけが本番環境に到達するようにすることで、Secure Deploymentを支援します。
Snyk Open Sourceは、トランジティブ依存関係を含むオープンソース依存関係をスキャンして脆弱性を検出し、サードパーティーコンポーネントに関連するリスクからアプリケーションを保護することで、安全なデプロイを支援します。
CI/CDとのインテグレーションおよびSnyk CLI:SnykはCI/CDパイプラインに直接統合されます。指定した深刻度しきい値を超える脆弱性を含むビルドのデプロイを防ぐセキュリティゲートとして機能します。この自動化により、セキュリティチェックを一貫して適用し、要件を満たすビルドだけをデプロイできます。
シークレット管理:SnykはGitGuardianとのパートナーシップを通じて、シークレットの管理と保護も支援し、Secure Deploymentプラクティスの第2のストリームに対応します。この連携により、シークレットの漏えいを検出して軽減し、デプロイ時および本番環境で機密情報を適切に保護できます。
これらのツールを活用することで、Snykは組織によるデプロイプロセスの自動化、セキュリティチェックの徹底、シークレットの効果的な管理を支援します。OWASP SAMMモデルが定めるベストプラクティスに沿った、安全で信頼性の高いデプロイパイプラインを実現できます。
セキュリティプラクティス:Defect Management
Defect Managementプラクティスでは、ソフトウェアのセキュリティ上の欠陥を体系的に収集、追跡、分析します。開発プロセス全体を通じて欠陥を効果的に管理し、セキュリティ保証のレベルを把握したうえでソフトウェアをリリースできるようにすることが目的です。セキュリティ上の欠陥の特定と解決だけでなく、欠陥データを充実させ、有意義な指標を導き出すことも重視します。こうした指標は、個々のプロジェクトとセキュリティ保証プログラム全体の安全性に関する意思決定に役立ちます。高度な実装では欠陥管理を正式なプロセスとして確立し、リアルタイムのデータ分析と傾向の検出を組織のセキュリティ戦略の策定に活用します。
SnykによるDefect Managementの支援
Snykは、Defect Managementプラクティスの導入を支援する堅牢なツールを提供しています。
SnykのWeb UI、レポート機能、Enterprise Analytics:これらの機能により、組織はすべての脆弱性を体系的に追跡し、詳細な指標を作成できます。Snykのツールを使用すれば、ベースラインの問題、新たに特定された問題、予防可能な問題の件数や、平均修復時間(MTTR)などの主要な指標をチームで監視できます。包括的な追跡と分析により、セキュリティの優先事項について、指標に基づいた適切な意思決定が可能になります。
チーム別・プロジェクト別の指標:Snykでは指標をチーム別またはプロジェクト別にグループ化でき、セキュリティ体制においてどのチームが優れているかを把握できます。この機能によって管理と説明責任が向上し、セキュリティチャンピオンプログラムの構築に役立つ、競争やゲーミフィケーションの要素も取り入れられます。
Snykのツールを活用することで、組織は欠陥管理プロセスを強化し、セキュリティ上の欠陥を追跡・解決するとともに、戦略的な意思決定やセキュリティプラクティス全体の改善に役立てることができます。
ビジネス機能:Verification
セキュリティプラクティス:Requirements-driven Testing
Requirements-driven Testingプラクティスでは、アプリケーションのセキュリティコントロールが意図したとおりに機能し、プロジェクトで定められたセキュリティ要件を満たしていることを確認します。このプラクティスでは、肯定的テストと否定的テストに重点を置きながら、セキュリティテストとリグレッションテストを段階的に開発・実行します。肯定的テストでは、セキュリティコントロールが機能上のセキュリティ要件に従って正しく機能することを確認します。否定的テストでは、誤用や悪用のシナリオに対するアプリケーションの処理を検証し、欠陥や脆弱性を特定します。より高度な段階では、サービス拒否テストなどのセキュリティストレステストも実施します。また、自動化されたセキュリティユニットテストや、特定・修正したバグに対するリグレッションテストを通じて、アプリケーションセキュリティを継続的に改善します。
SnykによるRequirements-driven Testingの支援
Snykは、自社開発コードとサードパーティーコードの両方に含まれる脆弱性の特定を支援し、Requirements-driven Testingプラクティスの導入をサポートします。
Snyk Codeを使うと、開発者は開発プロセスの早い段階でコードの脆弱性を検出でき、セキュリティコントロールが必要な基準を満たし、正しく機能することを確認できます。
Snyk Open Sourceはオープンソース依存関係をスキャンして既知の脆弱性を検出し、アプリケーションに組み込まれるサードパーティーコンポーネントが必要なセキュリティ要件を満たし、新たなリスクを持ち込まないようにします。
セキュリティプラクティス:Security Testing
OWASP SAMMモデルのVerificationビジネス機能におけるSecurity Testingプラクティスは、セキュリティ要件を満たしているかどうかの確認にとどまらず、アプリケーションの技術的な弱点やビジネスロジックの不備を明らかにすることを目的としています。十分な範囲を網羅するため、自動テストと手動テストを組み合わせます。自動セキュリティテストは、よくある脆弱性や「簡単に見つかる問題」を大規模かつ効率的に検出できます。テストを継続的に改善し、実行頻度を高めることで、開発サイクルの早い段階でバグやリグレッションを発見します。
ただし、自動テストには限界があり、特にアプリケーションへの深い理解を必要とする複雑な攻撃経路やビジネスロジックの不備には対応しきれない場合があります。そのため、専門家による手動テストが不可欠です。手動レビューでは通常、リスク、最近の変更、または近く予定されている大規模リリースに基づいて優先順位を付け、重要なコンポーネントを重点的に確認します。また、外部の専門知識を活用してさらなる脆弱性を発見するため、バグバウンティプログラムを実施することもあります。
Security Testingの主な目的は、アプリケーションの脆弱性を特定して経営陣やビジネス関係者に明らかにし、リスクを理解して先回りで対処できるようにすることです。
SnykによるSecurity Testingの支援
Snyk Codeは自社開発コードを自動的にスキャンして脆弱性を検出します。開発プロセスの早い段階でよくあるセキュリティ問題を発見し、深刻化する前に対処しやすくします。
Snyk Open Sourceは、トランジティブ依存関係を含むオープンソース依存関係をスキャンし、既知の脆弱性を検出します。これにより、アプリケーションに組み込まれたサードパーティーコンポーネントがセキュリティリスクをもたらさないようにします。
CI/CDとのインテグレーションおよびSnyk CLI:Snykはセキュリティゲートとして機能し、指定した深刻度しきい値を超える脆弱性を含むビルドをブロックできます。この連携により、開発ライフサイクル全体を通じてセキュリティテストを継続的に実施し、問題をできるだけ早期に検出できます。
ビジネス機能:Operations
セキュリティプラクティス:Environment Management
OWASP SAMMモデルのOperationsビジネス機能におけるEnvironment Managementプラクティスでは、アプリケーションの運用環境のセキュリティと完全性を維持することの重要性を強調しています。デプロイ後も、テクノロジースタックを構成するさまざまなコンポーネントに対して、新しいセキュリティパッチや機能が継続的にリリースされるため、セキュリティ対策を続ける必要があります。多くのテクノロジーは、後方互換性の確保や設定の簡素化を目的として、デフォルトでは安全でない状態になっているため、すべてのシステムに安全なベースライン設定を一貫して適用することが重要です。
環境を安全に保つため、脆弱性を定期的に監視し、すべてのコンポーネントに迅速にパッチを適用する必要があります。また、構成の強化に関する正式なプロセスを確立し、構成を継続的に監視するとともに、セキュリティベースラインからの逸脱をセキュリティ上の欠陥として扱うことも重要です。
環境管理にSnykが役立つ方法
Snykは、Snyk IaC(Infrastructure as Code)ツールを通じて、環境管理のプラクティスを支援します。Snyk IaCは、CloudFormation、Kubernetes、ARM、TerraformなどのIaCファイルをスキャンし、セキュリティリスクにつながる可能性のある設定ミスを検出します。スキャンにはCIS BenchmarksやAWS Well-Architected Frameworkなどのベストプラクティスやフレームワークが活用され、安全なインフラ構成を実現できます。
Snyk IaCは、開発ライフサイクルのさまざまな段階にシームレスに統合できます。
IDEとの統合:開発の早い段階で設定ミスを検出できます。
Gitとの統合:Gitのワークフローの一環としてSnyk IaCのスキャンを実行し、変更がマージされる前に設定ミスを検出できます。
CI/CDの自動化:CI/CDパイプラインでCLIを通じてSnyk IaCのスキャンを自動化し、インフラの変更をデプロイする際に継続的なセキュリティチェックを実施できます。
Snyk IaCを活用することで、組織は環境全体で安全な構成のベースラインを一貫して適用し、脆弱性をプロアクティブに管理できます。また、運用環境の安全性を保ち、業界標準への準拠を確実にできます。
まとめ
OWASP SAMMフレームワークは、アプリケーションセキュリティの強化を目指す組織にとって非常に有用です。Snykを活用すれば、OWASP SAMMで定められたセキュリティプラクティスを効果的に実践し、セキュリティ目標の達成はもちろん、それを上回る成果を目指せます。