米国防総省（DoD）におけるDevSecOps（第3章4節）#DevSecOps

原文・参照先資料
[DoD Enterprise DevSecOps Reference Design - DoD CIO](https://dodcio.defense.gov/Portals/0/Documents/DoD%20Enterprise%20DevSecOps%20Reference%20Design%20v1.0_Public%20Release.pdf?ver=2019-09-26-115824-583)

## 3.4 DevSecOpsエコシステム
 DevSecOpsエコシステムは、DevSecOpsのライフサイクル全体を通じたすべてのアクティビティをサポートするために、ツールとその上で作成、実行されるプロセスワークフローの集合体です。図8に示すように、DevSecOpsのエコシステムは3つのサブシステムで構成されています。DevSecOpsエコシステムは外部のエンタープライズサービスと連携してすべての依存関係をサポートし、エンタープライズおよびローカルAOと連携して運用の権限を取得します。
 DevSecOps管理チームは、エコシステムツールの管理とプロセスワークフローの自動化を担当する。ミッション・アプリケーション・チームは、エコシステムを使用した開発、テスト、セキュリティ、運用タスクに重きを置いています。
![image14.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440539/79239be3-0451-8272-3f88-5311f46c0f37.jpeg)
図8:DevSecOpsエコシステム

### 3.4.1 計画
　計画フェーズには、プロジェクトの時間、コスト、品質、リスク、および問題の管理を支援するアクティビティが含まれます。これらのアクティビティには、ビジネスニーズの評価、プロジェクトプランの作成、実現可能性の分析、リスク分析、ビジネス要件の収集、ビジネスプロセスの作成、システム設計、DevSecOpsの設計、エコシステムのインスタンス化などが含まれる。重要なビジネス・ニーズに対応する実用最小限の製品(minimum viable product ： MVP)を最初に開発することがベスト・プラクティスです。そして、できるだけ早くフィードバックループのプロセスに入ります。これはリーンスタートアップの方法論[11]で推奨されています。DevSecOps設計はDevSecOpsプロセスとコントロールゲートを作成し、ライフサイクル全体を通して自動化を導きます。DevSecOpsエコシステムツールはプロセスの自動化と一貫したプロセス実行を促進します。
　DevSecOpsプランニングサブシステムは、コミュニケーション、コラボレーション、プロジェクト管理、変更管理のツールを使って、計画フェーズのアクティビティをサポートします。このフェーズでは、プロセスワークフローは完全に自動化されていません。プランニング・ツールは、人的交流を支援し、チームの生産性を向上させます。


### 3.4.2 ソフトウェア・ファクトリ
　図9に示すように、ソフトウェア・ファクトリには複数のパイプラインが含まれています。このパイプラインには、ツール、プロセス・ワークフロー、スクリプト、および環境のセットが装備されており、人間の介入を最小限に抑えて、ソフトウェアをデプロイ可能な成果物のセットを生成します。開発、ビルド、テスト、リリース、デリバリといったフェーズのアクティビティを自動化する。ソフトウェア・ファクトリでセットアップされる環境は、IaCおよびSaCを含み、さまざまなツールで実行されるスクリプトを使用して調整する必要があります。ソフトウェア・ファクトリは、マルチテナント型で、複数のプロジェクトのソフトウェア作成を自動化するように設計する必要があります。DoD組織では、Webアプリケーションや組み込みシステムなど、さまざまなタイプのソフトウェアを扱うシステムに対して複数のパイプラインが必要になる場合があります。
![image15.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440539/a50dbd8e-d2ae-1cd5-fff5-1069b607181a.jpeg)
図9:DevSecOpsソフトウェア・ファクトリ

 まず、開発チームがアプリケーション・コードとIaCを開発し、QAチームがテスト・スクリプトを開発し、セキュリティー・チームが適切なIDEでSaCを開発します。ソフトウェア・ファクトリ全体では、OCI準拠コンテナとDoD Hardenedコンテナが利用可能な場合は、それらを活用する必要がある。COTS、Government off the Shelf(GOTS)、または新しく開発されたコードとスクリプトがソフトウェア・ファクトリのコードリポジトリにコミットされると、アセンブリラインの自動化が開始されます。アセンブリラインとして複数のCIパイプラインインスタンスが存在する場合があります。それぞれは、Webフロントエンド用のJavaScriptアセンブリライン、データ分析用のPythonまたはRアセンブリライン、バックエンドアプリケーション用のGoLangアセンブリラインなど、特定のアプリケーションサブシステム用です。CIアセンブリ・ラインは、コードを構築し、ローカル・アーティファクト・リポジトリからの依存関係(ライブラリなど)を組み込むことによって、継続的インテグレーションを通してサブシステムを構築します。さらに、ユニット・テスト、静的コード分析、機能テスト、インターフェース・テスト、動的コード分析などの開発/テスト環境でテストを実行します。CIアセンブリ・ライン・コントロール・ゲート・ポリシーに合格したサブシステムは、システム統合のための本番前環境に移行されます。この時点からCDの組み立てラインが制御を引き継ぎます。この環境では、パフォーマンス・テスト、受入テスト、セキュリティ・コンプライアンス・スキャンなど、より多くのテストおよびセキュリティ・スキャンが実行されます。コントロール・ゲート・ポリシーが満たされている場合、CD組立ラインはリリースされ、リリースされたアーティファクト・リポジトリに最終製品パッケージを配布します。
　DevSecOpsソフトウェアファクトリを使用してアプリケーションを開発することには、多くのメリットがある。
・ソフトウェア製品の一貫性と品質の向上
・タイム・トゥ・マーケットの短縮と生産性の向上
・簡素化されたガバナンス

### 3.4.3 運用
　本番環境では、リリースされたソフトウェアはアーティファクト・リポジトリから取得され、デプロイされます。操作、操作モニター、およびセキュリティー・モニターが実行されます。運用運用ツールは、導入、運用、および監視アクティビティを合理化および自動化することを目的としています。ツールは、システムの機能要件と、本番環境のインフラストラクチャへの適合性に基づいて選択する必要があります。

### 3.4.4 外部システム
　DevSecOpsエコシステム自体とプログラムアプリケーションは、運用に必要なベースラインツールやアプリケーション依存性、セキュリティサービスを獲得するために、DoDエンタープライズサービスに依存している。　
・DoD Centralized Artifact Repository(DCAR)には、DevSecOpsツールやコンテナセキュリティツール、共通プログラムプラットフォームコンポーネント(COTSやオープンソース製品など)といった、DoDプログラムソフトウェアチームが認証プロセスのベースラインとして利用可能な、強化されたVMイメージと、強化されたOCI準拠コンテナイメージが保持されている。
・DoD Common Security Servicesは、サイバーセキュリティの実施とIT管理を容易にするDoDのエンタープライズレベルの共通サービスです。1つのセキュリティ・サービスは、ミッション区域とミッション・アプリケーションを保護するために、トラフィックの検査とフィルタリングを実行します。セキュリティサービスの例としては、ファイアウォールがあります。
・侵入検知システム(IDS)/侵入防止システム(IPS)
・マルウェア検出
・データ損失防止
・ホストベースのセキュリティ
・ログ/テレメトリの集約と分析

Identity、Credential、およびAccess Management(ICAM)です。
サイバーセキュリティサービスプロバイダ(CSSP)は、攻撃の検知と警告(ASW)、フォレンジックメディア分析(FMA)、保証脆弱性管理(AVM)、インシデント報告(赤外線)、インシデント対応(IHR)、情報運用条件(INFOCON)、サイバー保護条件(CPCON)、マルウェア通知保護(MNP)、およびネットワークセキュリティ監視(NSM)などの追加サービスを提供します。
　DevSecOpsエコシステムは、初期ソフトウェアファクトリーATOと初期アプリケーションATOのために企業AOと、アプリケーションのための継続的ATOのためにローカルAOと対話します。