DevSecOps とは? なぜそれが重要なのか?

政府におけるDevSecOps

政府の製品開発は、多様なユーザーベースの広がりから、テクノロジー製品に求められる拡張性や信頼性に至るまで、難しいものです。 ユーザーには、あらゆるタイプの人々、世代、民族、言語が含まれ、彼らは製品が堅牢で、流動性と回復力があることを期待しています。 どの製品にとっても最も困難な側面の1が、情報の保護です。 特に政府の製品に関する違反は、長年の努力を通じて築き上げられた信頼を即座に損なう可能性があります。 開発・セキュリティ・運用(DevSecOps)を統合するアジャイルアプローチを採用することで、パイプライン全体にセキュリティを組み込むことができます。

この記事では、DevSecOps を定義し、製品開発で採用する方法について説明します。

DevSecOpsとは何か?

まず、DevOpsとは何でしょうか? DevOpsは、ソフトウェア開発と一般的なITインフラストラクチャ間のプロセスを自動化および統合するために機能する一連のアジャイルプラクティスであるため、部門横断的なチームとしてソフトウェア製品をより迅速かつ確実にシームレスに構築、テスト、リリースできます。 DevOpsという用語は、「開発(Development)」と「運用(Operations)」という言葉を組み合わせたもので、歴史的にサイロ化して機能してきたソフトウェア開発とIT運用の間のギャップを埋める文化的転換を意味します。

DevSecOpsは、このDevOpsに、最初からセキュリティの実践を統合するという考え方です。 これには、ソフトウェア開発、IT運用、セキュリティの専門家による継続的で柔軟なコラボレーションにより、アジャイルな「Security as Code(SaC)」文化を構築することが含まれます。 セキュリティの問題を別のチームとして扱うのではなく、すべての開発やその他のテストが完了したら、すべてのスプリントの完了の定義にセキュリティを組み込みます。 DevSecOpsの目標は、ITとセキュリティの間の従来のギャップを埋めながら、ソフトウェアの、高速で安全なデリバリーを保証することです。

DevSecOps は、旧来のセキュリティモデルのボトルネック効果への対応です。 従来のセキュリティゲートは、セキュリティ要件とテストに合格しない限り、製品がリリースされないことを保証するために設けられており、通常は別のセキュリティ部門によって、ソフトウェア開発プロセスの最後のステップで行われていました。 継続的インテグレーションと継続的デプロイ(CI/CD)を組み合わせた DevSecOpsアプローチにより、セキュリティテストは、スプリントレベルの完了の定義の一部として日々の自動化によって実施され、リリースレベルの完了の定義の一部として「レッド チーム」テストを通じて、リリース サイクル中に対処されます。

アジャイルチームが 新しい設計に積極的に関与し、ソフトウェアの価値と品質を提供し、規制要件を遵守することで、セキュリティはもはやセキュリティチームだけの関心事ではなくなり、全員の責任となります。

また、DevSecOpsワークフローの速度が低下しないように、いくつかのセキュリティゲートを自動化することも意味します。 セキュリティを継続的に統合するための適切なツールを選択することで、これらの目標を達成することができます。 ただし、効果的な DevSecOps には、新しいツール以上のものが必要です。それは、DevOps の文化的な変化に基づいて、セキュリティの作業を遅らせることなく早急に統合することです。 DevSecOps は組み込み型のセキュリティのことであり、アプリやデータ周辺の境界線として機能するセキュリティのことではありません。

アジャイル組織ではどのようにDevSecOpsを使うのか

セキュリティは、ソフトウェアに後付けで追加できるものではなく、リスクを軽減するセキュリティ対策を、プロセスの始まりから納品、そしてそれ以降まで組み込む必要があります。 各要件はアイデアから始まり、コード化、テスト、統合、文書化、承認、そして展開され、市場からのフィードバックに至ります。

アジャイル製品開発チームがリスクを軽減するセキュリティ対策を製品開発に組み込む方法の例を次に示します。

  • アイデアとして、ユーザーストーリーを使用して、望ましい安全な機能と結果を説明できます。
  • コーディングの際、チームはテスト駆動開発やペアリングを使用して、開発中の製品の品質と安全性を確保することができます。
  • 継続的なテストと統合を通じて、スキャンや静的コード解析、侵入テスト、コンプライアンス テスト、負荷テスト、オリジン解析テスト、その他のアプローチを使用して、製品のセキュリティの堅牢性に対する信頼性を高めることができます。
  • デプロイの際、チームはコーディング中に作成されたイメージと、ユーザーにデプロイされたイメージが同じであることを確認します。 DevSecOpsのパイプラインは、デプロイを自動化し、単体テストと回帰テストの多くを自動化します。
  • 製品を保守する場合、ユーザーにリリースされた後、定期的な脆弱性スキャンによって変異や脆弱性が露呈する可能性があります。

これらのリスク軽減策は、チームの完了の定義に含まれるようになります。 プロダクトオーナーは、「完了」していない、または安全でない製品のインクリメントを即却下します。

欠陥が特定されると、アジャイルチームは 予期しないセキュリティ問題に容易に対処することができます。 アジャイルアプローチは、チームが長期的な視野で作業を整理するだけでなく、発生した変化に対応するためにも非常に有効です。 安全で安定した製品の作成に関心を持つのは全員の仕事ですが、 開発者の数がセキュリティ専門家の数を100対1で上回っているため、各チームにセキュリティの専門家を配置することは不可能です。 基準と自動化を通じて、DevSecOpsはDevOpsを拡張し、強固なセキュリティプラクティスとツールをデリバリー運用プロセスに統合することで、チームが適切なレベルのセキュリティ保証と信頼性を実現できるようにします。

DevSecOpsを使用する組織が推し進めるものの1つにセキュリティトレーニングがあります。 多くの場合、組織は、セキュリティの専門家を活用して、健全なセキュリティ対策がすべての部門横断的な製品開発チームのメンバーによって学習、理解、採用されるようにできる実践コミュニティまたはギルドをサポートしています。 セキュリティ、運用のステークホルダー、および内容領域専門家も、フィードバックとガイダンスを提供できるスプリント レビューに参加する機会があります。 懸念事項や調査結果が議論されます。 プロダクトオーナーは、他のすべてのフィードバックと共に、セキュリティに関するフィードバックをプロダクトバックログに追加し、優先順位をつけるために検討します。

どこから手をつければいい?

まずあなたの現在地から始めましょう。 あなたの製品のセキュリティの強み、弱み、機会、脅威を分析することから始めます。 製品のセキュリティを向上させるために、完了の定義に加えることができる変更はありますか? おそらく、すべての人のセキュリティ対策を改善できる基準や自動化があるのだろう。 潜在的な脅威を浮き彫りにするために、CI/CDパイプラインの一部として、あるいは単独で実行できるセキュリティテストがありますか? その場合は、この情報を使用して、あなたの開発アプローチを適応させます。 検査と適応です。

まとめ

DevSecOpsは、セキュリティがプロセスと製品に内在するような製品開発を可能にしようとするものです。 このアプローチは、最新のシステム、特に政府が使用する製品など、より規制の厳しい環境では不可欠です。 DevSecOpsは、エンドツーエンドのソフトウェア開発プロセス全体にセキュリティを織り込みながら、納期を遅らせる可能性のある不要な負担を回避することに組織が取り組む中で登場しました。 DevSecOps を成功させるための鍵は次のとおりです。

  • セキュリティが最初から考慮され、製品開発プロセス全体を通じて、チームの「完了の定義」を使って組み込まれ、「SaC」文化を形成する
  • ソフトウェア開発、運用、セキュリティの熟練した人材間の、部門横断的かつ密な日常的コラボレーション
  • 自動化とアジャイルなアプローチにより、DevSecOps が可能になる
  • セキュリティは、意識、トレーニング、オーナーシップを通じてすべての人の責任になる

ぜひご相談ください。 DevSecOpsのベストプラクティスを取り入れ、持続可能な「SaC」文化を構築するお手伝いをします。

0

We are using cookies to give you the best experience on our website.

You can find out more about which cookies we are using here.