DUICUO

見逃せない!DevSecOps完全ガイド

[[431362]]

[51CTO.com 速報]企業によっては、従業員がソフトウェア開発者でなくても、DevSecOpsの基礎を理解することが不可欠です。これは、企業のセキュリティを向上できるためです。長年にわたり、多くの企業は新しいソフトウェアをできるだけ早く導入するために、アプリケーション開発の加速に重点を置いてきましたが、これはしばしばセキュリティを犠牲にしています。

残念ながら、この段階でアプリケーションにセキュリティ上の問題が発見された場合、大量のコードを書き換える必要があり、開発者にとって非常に複雑で困難で時間のかかる作業となります。

しかし、DevSecOpsの指標と方法論は、ソフトウェア開発ライフサイクル(SDLC)を管理する開発者にとって重要なアップデートとなっています。DevOpsの急速な進化とSecOpsの厳格な監督を受け入れることで、これらを統合し、一貫性のあるものにすることができます。このアプローチにより、開発者はプロジェクト開始前から安全なソフトウェアを構築できるようになります。

ソフトウェア配信、セキュリティ、インフラストラクチャへの新しいアプローチは、2021 年の DevOps のトレンドになると予想されています。インフラストラクチャ自動化ツールの成熟、セキュリティ ツールの向上、デジタル トランスフォーメーションの完全な受け入れにより、DevOps はさらに勢いを増し、注目を集めることになります。

この記事では、DevSecOps に関する知識、ソフトウェア パイプラインに DevOps セキュリティ メトリックを実装する方法に関するガイドラインとヒント、このように作業する開発者が増えている理由、DevSecOps の実装によって従業員間のチーム スピリットが向上し、ソフトウェア開発ライフサイクル (SDLC) が高速化され、生産性とセキュリティが向上する仕組みについて説明します。

DevOpsセキュリティ

DevOps プラクティスに統合して DevSecOps ソフトウェア開発方法論を実装する場合、最も一般的な推奨事項は次のとおりです。

  1. セキュリティを継続的に優先し、アプリケーションに組み込みます。
  2. 自動および手動のスキャン プロセスを使用して、オープン ソースおよびサードパーティ コンポーネントのセキュリティを確保します。
  3. 常に安全なコーディングガイドラインに従ってください。
  4. すべての入力データ、応答、コンテンツ タイプを検証します。
  5. 異常な動作を警告し、攻撃の潜在的な兆候を分析します。
  6. 手動と自動の両方の安全性テストと保護を活用します。
  7. SAST ツールを使用して、安全で信頼性の高いコードを作成します。

DevSecOpsの必要性

Cloud DefenseのDevOps専門家であるBarbara Ericson氏は、「DevOpsは、ビルド(リリース)の失敗率を低減することで、ソフトウェアアプリケーションをエンドユーザーに迅速に提供することに主眼を置いています。また、測定可能な品質管理を通じて迅速なターンアラウンドを実現するために必要なツールも重視しています」と指摘しています。

しかし、「DevSecOps」は、ソフトウェア開発、IT運用、そしてセキュリティ要素を単一の統合フレームワークに統合します。この組み合わせは、ソフトウェア開発におけるこれら3つの優先事項のバランスを重視しています。

DevSecOpsは、潜在的なセキュリティ脆弱性を発見し、サイバー攻撃者に悪用される前に修正することで、セキュリティサービスを組み込んだビジネス主導のソフトウェアを構築できます。このアプローチにより、コンプライアンスコストとソフトウェアリリースの遅延を削減できます。DevSecOpsが広く導入される前は、企業は新しく開発されたソフトウェアをリリース前の最終段階でレビューするのが一般的でした。

迅速な導入の文化により、コアとなるセキュリティ問題に対処するのではなく、セキュリティ修正のためにサーバーにパッチを適用することがますます一般的になっています。

今日、サイバー攻撃による潜在的な損失はあまりにも大きく、企業はもはやセキュリティを後回しにすることはできません。ITインフラは遍在し、IT技術はショッピング、銀行業務、医療といった日常的な活動に広く利用されています。つまり、増大し続ける需要とデータ侵害による壊滅的な被害の可能性を考慮すると、DevOpsは拡張性に優れている必要があるということです。

近年、サイバー犯罪の件数は着実に増加しています。最近の調査によると、2020年末までに英国企業の60%がサイバー攻撃の被害に遭っています。リモートワークとパンデミックはこの傾向を加速させています。DevSecOpsの導入はもはや単なるグッドプラクティスではなく、深刻なデータ侵害やその他のハッキングインシデントの発生リスクを低減するために必要な対策です。

DevSecOpsはセキュリティに重点を移し、ソフトウェア開発パイプラインに関わる全員が最大限のITセキュリティを確保する責任を負います。ソフトウェア開発プロセスのあらゆるレベルでサイバーセキュリティに重点を置くことで、スピード、機能性、そしてセキュリティが最優先されます。

DevSecOpsとDevOps

新旧のDevSecOpsモデルの違いは何でしょうか?まずは共通点から見ていきましょう。どちらのアプローチもチームワークの概念を重視し、それが重要な新規ソフトウェアのリリースを加速させることを認識しています。どちらもアジャイルフレームワークを活用し、動的かつ継続的なワークフローによって推進されるワークカルチャーを重視し、あらゆるレベルでのコミュニケーションとコラボレーションを重視しています。

DevOpsとDevSecOpsはどちらも、単純なタスクに対してある程度の自動化を活用することで、開発者がソフトウェアのより重要な側面に集中できるようにします。継続的なプロセスの概念はどちらのプラクティスにも適用され、各段階で主要な開発目標、運用目標、またはセキュリティ目標が達成され、パイプラインのボトルネックが回避されます。

開発者、運用スタッフ、セキュリティ専門家は、共同作業を通じて、新しいアプリケーションやソフトウェアアップデートをタイムリーに開発し、コードベースとセキュリティ境界を監視、ログ記録、評価し、中央リポジトリを使用して新規および改善されたコードベースを展開できます。DevOpsとDevSecOpsの主な違いは明確です。DevSecOpsは、これまで他の方法論やフレームワークでは見落とされてきたセキュリティに再び焦点を当てています。これまで、企業は新しいアプリケーションの開発とリリースのスピードを重視してきましたが、サイバーセキュリティの専門家がコードをレビューし、セキュリティ上の脆弱性を指摘すると、困難な状況に陥っていました。

前者のアプローチは、ソフトウェア開発サイクルにおけるボトルネックの発生を助長し、サイバーセキュリティの専門家や開発者に大きなプレッシャーをかけ、ソフトウェアのバグや脆弱性を迅速に修正することを強いることになります。これは、多くの場合、ソフトウェアの機能性とセキュリティを犠牲にすることになります。

DevSecOpsパイプライン

本質的に、DevSecOpsパイプラインとは、ソフトウェア開発パイプラインのあらゆるステップに組み込まれたセキュリティプラクティスとツールのリストです。ITプロフェッショナルは協力して、安全なソフトウェアをより迅速に構築、テストし、最終的にリリースします。

DevSecOpsを導入することで、開発チームはソフトウェア開発ライフサイクル(SDLC)の早期段階でセキュリティ脆弱性を特定し、手遅れになる前に最適な修正を行えるようになります。これにより、ライフサイクル全体を通してスピードと俊敏性が向上します。また、チームメンバー全員が潜在的なセキュリティ問題を把握し、組織がセキュリティインシデントからより迅速に回復できるようになります。

伝統的に、現代のDevOpsパイプラインは複数の明確なレイヤーで構成されています。これらのフェーズは、計画、コーディング、ビルド、テスト、リリース、デプロイメント、運用、監視の各フェーズとして知られています。これらのフェーズはDevSecOpsの考え方と一致していますが、唯一の例外は、すべてのレイヤーでセキュリティが重視されることです。

セキュリティへの重点は、様々な形で現れます。まず第一に重視されるのは脅威モデリングです。開発チームは、最も可能性の高い様々な攻撃シナリオをブレインストーミングし、影響を受ける可能性のある機密データを調査し、可能な解決策を提案します。また、チーム全員が共通のセキュリティ問題を認識できるようにするという利点もあります。もう一つの重点はスキャンです。これは、コードを分析して、一般的な脆弱性の影響を受けていないことを確認するものです。手動と自動の両方のスキャンプロセスを活用するのが賢明です。

分析はセキュリティにおいて重要な役割を果たします。このフェーズでは、前の2つのフェーズで収集された情報、データ、指標をさらに精査します。開発チームはセキュリティリスクに優先順位を付け、最も深刻なリスクとそれほど深刻ではないリスク、そして最も発生確率の高いリスクをリストアップします。修復フェーズでは、ソフトウェア開発ライフサイクル(SDLC)に関わるチームが、特定されたすべてのセキュリティリスクに対するソリューションを設計します。静的解析セキュリティテスト(SAST)は、自動化によってコード内で検出された多くのバグや脆弱性に対するソリューションを提供できます。

最後に、開発チームはソフトウェアを監視し、特定された脆弱性を追跡し、潜在的なセキュリティ問題を軽減するために実施した手順を文書化します。監視フェーズでは、ソフトウェア全体のセキュリティを継続的に評価する必要があります。

DevOpsセキュリティツール

幸いなことに、開発チームには、エラーや脆弱性のないコードを作成するための多くのツールが含まれたツールキットがあります。これらのツールは開発チームの作業を簡素化し、サイバーセキュリティソフトウェアの開発を促進します。

  • SASTツール

静的解析セキュリティテスト(SAST)ツールは、コードの脆弱性評価を自動化によって実現します。SASTは高いスケーラビリティを備えた強力なツールです。SA​​STの最も重要な要素の一つは、ソースコード構成解析です。これは、OSSソフトウェア、OWASP、脆弱性、バグ、ライブラリ、その他セキュリティ上の問題が発生する可能性のあるコンポーネントの脆弱性を自動的にスキャンします。

SASTツールは国際的に認められたコーディング標準に準拠しており、脆弱性パターンが検出された箇所に警告サインを表示します。様々な種類のコードにおけるセキュリティ脆弱性を早期に特定できるため、サイバーセキュリティを優先するためにコードを書き直す必要が生じた場合のコスト削減につながります。SASTが提供するリアルタイムフィードバックにより、開発者は脆弱性の正確な場所と原因を把握し、適切な対策を講じることができます。

  • DASTツール

動的アプリケーションセキュリティテスト(DAST)ツールは、ソフトウェアアプリケーションのコードを詳細に解析し、実行ロジックとリアルタイムデータを分析します。DASTツールはより包括的なアプローチを提供し、アプリケーションの実行中に解析を実行します。暗号アルゴリズムをテストし、「ホワイトハット」ハッキング手法を用いて外部から解読を試みます。

DASTは、様々な権限レベルでのセキュリティ確保のために権限を検証するのに役立ちます。クロスサイトスクリプティング、SQLインジェクション、その他の一般的なソフトウェアセキュリティ脆弱性をチェックできます。ハードウェアアプリケーションの障害を捕捉し、テスト後の障害分析のためにアプリケーション実行をログに記録できます。さらに、サードパーティ製インターフェースに深刻な脆弱性が存在しないことも確認できます。

SASTとDASTは連携して動作します。これらのツールは、効果的なDevSecOpsパイプラインにおける包括的なセキュリティテストプロセスに不可欠です。

  • コンテナスキャン

コンテナスキャンとは、スキャンツールを使用してコンテナを継続的にチェックし、意図したとおりに機能していることを確認するプロセスです。少なくとも、コンテナスキャンでは、ソフトウェアサプライチェーンが稼働していること、そして開発チームのコンテナインフラストラクチャが正しく構成され、セキュリティ保護されていることを確認する必要があります。

優れたコンテナスキャンツールは、コンテナコンポーネントを、拡大し続ける脆弱性データベースと比較します。また、発見されたライセンスの問題や脆弱性に関するレポート、影響分析、チャートを開発チームに提供する必要があります。

結論

人々がますますテクノロジーに依存する世界の中で暮らすようになるにつれ、開発チームは安全なソフトウェアを開発するという重大な責任を負っています。機密性の高い医療情報、金融情報、その他の個人情報を含む大規模なデータベースを含むアプリケーションの開発には、大きなリスクが伴います。

幸いなことに、DevSecOps の考え方、適切な DevOps ツール、適切なメトリックがあれば、最大限のセキュリティを確保するソフトウェアを構築および記述する方法は数多くあります。

原題: DevSecOps: 完全ガイド、著者: Vishnu Vasudevan

[この記事は51CTOによって翻訳されました。提携サイトへの転載の際は、元の翻訳者と出典を51CTO.comとして明記してください。]