あらゆる企業がDXに取り組む現在、データを活用して新たな価値をユーザーに提供していくケースが増えています。その手法は主にアプリやWebサービスですが、リリースを急ぐあまりセキュリティがおろそかになってしまい、大きなインシデントが発生してしまうこともあります。この連載では、開発にセキュリティを組み込むための考え方や手法について、GitLabのブログを再構成してお届けしています。今回は、開発現場向けのサプライチェーン・
アプリの9割に含まれるオープンソースコードがソフトウェアのサプライチェーンを危険にさらす
サプライチェーンには、例えば製造業における部品製造、パーツ組立、製品組立のような商流のサプライチェーンなど複数の種類があります。しかし、ここではソフトウェアのサプライチェーンについて紹介します。サプライチェーンリスクは、SolarWinds社の情報漏えい事件によって広く注目されました。ある調査によると、すべてのアプリケーションの90%にオープンソースコードが含まれており、それを標的としたサプライチェーン攻撃は、非常に大きな問題になっています。
10年以上前、組織にはリリーススケジュールに影響を与えずにDevOpsプロセスにセキュリティを実装するために必要な人材もツールもありませんでした。セキュリティはソフトウェアがリリースされる前の最後のステップの一つだったのです。リリースを急ぐあまりセキュリティは重視されず、たとえ最後の段階でセキュリティを組み入れようにも、開発へさかのぼることはできません。
その結果、リリース後に重大な脆弱性が発見され、多くのシステムが脅威にさらされました。この問題を解決するのがDevSecOpsです。DevSecOpsは、リスクとセキュリティインシデントを削減し、より高速で安全なコードのデプロイメントを可能にする戦略です。また、インフラストラクチャとアプリケーションのセキュリティを開発プロセスに統合し、CIパイプライン内に自動セキュリティスキャンとコンプライアンスコントロールを追加します。
サプライチェーンのセキュリティは、具体的な予防策がない業界全体の問題のように見えるかもしれません。しかし、そうではありません。DevOpsの強力なサイバーハイジーンは、サプライチェーンの攻撃に対する効果的な障壁を作るとともに、防御を強化するための積極的なアプローチも提供します。DevSecOpsは、開発の早期からセキュリティを組み込むため、シフトレフトとも呼ばれています。
DevSecOpsを導入における3つのポイント
DevSecOpsを導入するには次の3つのポイントが重要になります。
1:常に可視性を維持する
DevOpsチームは、ソフトウェアを開発している全員がその依存関係を理解できるように、可視化する必要があります。特に、チームがすぐにコントロールできない依存要素を明確にして、可視性を維持します。依存関係にあるソフトウェアに依存して開発を進める前に、チームはその移植性、更新頻度、および他のプラットフォームとの互換性を理解する必要があります。そうでなければ、悪用可能な脆弱性を持つソフトウェアをリリースしてしまうリスクがあります。
2:ビルドモニタの配置
サプライチェーンへの攻撃を防ぐには、ビルドプロセスを保護することが重要です。まず、ビルドモニタ担当者を割り当てます。これにより、チームがビルドを行う際、ビルドモニタであるメンバーの一人がビルドプロセスを監視し、異常や不正なコード変更など、疑わしい行為の兆候を鋭くチェックすることができます。プロセスの進行に伴い、安全なビルドを確保するためのその他の方法には、次のようなものがあります。
- CI/
CDパイプラインを活用し、SASTとDASTの自動テストを開発プロセスに統合する - 開発者に脆弱性スキャンと依存性スキャンを実施させる
- スキャン、監視、レビューを支援する新しいAI/
MLツールの導入
3:機密情報管理に対する積極的な投資
アプリケーション内でユーザー名やパスワード、APIトークン、SSHキー、暗号化キーなどの機密認証情報を扱うチームは、機密管理ソリューションに投資する必要があります。また、業界ではクラウドネイティブの開発モデルが増加しているため、複数のインフラにまたがる機密情報を管理することが難しく、DevOpsチームがセキュリティの盲点に陥りやすい可能性があります。
さらに、2016年にハッカーがGitHub経由でソースコードレポジトリの脆弱性に侵入したことに端を発するUberの侵害など、過去の侵害事件から認証情報がリスクにさらされたままでは消費者の信頼が損なわれるという、高い代償を負うことが明らかになっています。
ベンダーが提供するソフトウェアによって収集された機密情報を保管する場合、ソフトウェアの責任者は当該データのセキュリティを監視できないか、最悪の場合、データの存在さえ知らない可能性があります。ベンダーと企業は、機密情報や個人を特定できる情報などが保護されていない場所に保管されないよう、情報の透明性を高める必要があります。
DevSecOpsを実践していくことで、より安全なソフトウェアのサプライチェーンを実現できる
GitLabが最近行ったDevSecOpsの調査では、76%以上の運用チームが、開発者が開発プロセス中にセキュリティの問題を受け取り、対処できると回答しています。DevOpsの開発者がすでにセキュリティの部分を処理していることを考えると、このデジタル変革の時代にDevOpsとDevSecOpsを別々のプラクティスとして扱うことをやめるべき時が来ていると考えられます。
DevSecOpsの実施をはじめ、セキュアビルドの実施、より包括的なベンダーのリスク管理の実践など、プロアクティブなセキュリティ対策を採用することで、より効果的で安全なエンタープライズサプライチェーンを実現できるのです。