この1年半の間、GitHubネイティブのCI/CD機能であるGitHub Actionsを改善し、完全な開発プラットフォームになるべく急速に進化してきました。このGitHub ActionsとGitHub Advanced Securityを連携し、GitHub EnterpriseにネイティブにDevSecOpsを実装できることはご存知でしょうか。本ブログでは、OWASPのDevSecOps成熟度モデル(DSOMM)を参照しつつ、開発ワークフロー内でソフトウェア構成分析(SCA)、静的アプリケーションセキュリティテスト(SAST)、動的アプリケーションセキュリティテスト(DAST)、さらにGitHubのネイティブ機能であるシークレットスキャンを実行することで、レベル1の成熟度を達成する方法を説明します。
DSOMMとは
まず、DSOMMの定義について認識を合わせましょう。
OWASPは、DevOps戦略の使用時に適用できるアプリケーションセキュリティ基準と、それらの基準をどのように優先順位付けできるかを示すために、DSOMMフレームワークを作成しました。DSOMMは、セキュリティプログラムの有効性をレベル1(成熟度が最も低い)からレベル4(DevOpsに完全組み込まれたDevSecOpsプログラム)に徐々に引き上げることを目指します。
DSOMMには4つの主要な評価基準があります。
- 静的な深度 : AppSec CIパイプライン内で実行している静的コードスキャンがどの程度包括的であるか。
- 動的な深度 :AppSec CIパイプライン内で実行されている動的スキャンがどの程度包括的であるか。
- 強度 :AppSec CIパイプライン内で実行されているセキュリティスキャンのスケジュール頻度。
- 統合 : 検出結果とプロセスの完全性に対処するための修正ワークフロー。
DSOMMレベル1の達成
DSOMMには4つの成熟度レベルがあり、DevSecOpsプログラム全体のさまざまな側面を定義しています。一般的なレベル1では、ツールまたは設定を変更することなく、シークレットスキャン、SCAおよびSATAを含む静的分析ツールを実行することが必要です。多くの場合、DASTツールはベースライン設定で実行されます。うまく計画されたプログラムは時間の経過とともに強度が線形に増加します。スキャンは週1回または月1回、デフォルトブランチで実行されます。最初はまとまりのないレポートになる可能性がありますが、心配無用です。レベル2で整理統合を開始します。
ツールの実装以外では、DSOMMレベル1には次のような主要な要件がいくつかあります。
- スキャン結果に基づいてビルドを不合格にしないでください。なぜなら、このレベルでは偽陽性(False positive)が生じることがあり、スキャン結果だけでビルドを不合格にすると修正ワークフローを担当する開発チームとの間の信頼関係が損なわれる可能性があるからです。
- ツールの実装および知識の移転を小さい範囲で開始して、徐々に広範なエンジニアリングチームへと拡大するという、段階的な運用をしてください。エンジニアリングチームが、ツールを実行して結果を解析するための専門知識をもっていることが重要です。
- SDLC(Software Development Life Cycle)のできる限り早い段階で問題を修正できるように、即時にフィードバックを開発者に提供できるツールを使ってください。これにより、スプリントサイクル全体を通してツールやタスクのコンテキストスイッチを頻繁に管理する開発者の時間とブレインサイクルを節約できます。
GitHubでのDSOMMレベル1の実装
次に、GitHub Advanced Securityでツールを実装しましょう。GitHubでは、ネイティブの機能を使用して簡単にDSOMMレベル1を達成できます。既存のツールまたは構成を一切変更することなくネイティブのSCA、SAST、およびシークレットスキャン機能を有効化でき、デフォルトの設定でDASTツールを実行することもできます。
開発チームがDSOMMを実践し、レベル1を達成したら、6~12か月後にはレベル2への成熟に向けて取り組むことができますので、DevSecOpsに関する今後のブログ投稿を参考にしてください。
安全なソフトウェア開発のために
本ブログで紹介した各機能は、以下のサイトで詳細を確認することができます。
GitHubでは、企業における安全なソフトウェア開発を進めるためのソリューションを提供しています。ご相談がある場合は、GitHub営業担当にお問い合わせください。