セキュリティ コントロール v3: DevOps セキュリティ
DevOps セキュリティでは、デプロイ フェーズ前に重要なセキュリティ チェック (静的アプリケーション セキュリティ テストや脆弱性管理など) のデプロイを行い DevOps プロセス全体のセキュリティを確保するなど、DevOps プロセスでのセキュリティ エンジニアリングと操作に関連したコントロールを対象とします。また、脅威モデリングやソフトウェア サプライ セキュリティなどの一般的なトピックも含まれます。
DS-1: 脅威のモデル化を実施する
CIS Controls v8 ID | NNIST SP 800-53 r4 ID | PCI-DSS ID v3.2.1 |
---|---|---|
16.10、16.14 | SA-15 | 6.5、12.2 |
セキュリティ原則: 脅威モデリングを実行して、潜在的な脅威を特定し、軽減するコントロールを列挙します。 脅威モデリングが次の目的で機能する必要があります。
- 実稼働の実行時ステージでアプリケーションとサービスをセキュリティで保護します。
- 成果物、基になる CI/CD パイプライン、およびビルド、テスト、デプロイに使用されるその他のツール環境をセキュリティで保護します。
脅威モデリングには、少なくとも次の側面が含まれる必要があります。
- アプリケーションのセキュリティ要件を定義します。 これらの要件が脅威モデリングで適切に対処していることを確認します。
- アプリケーションのコンポーネント、データ接続、およびそれらの関係を分析します。 この分析には、アプリケーション スコープ外のアップストリーム接続とダウンストリーム接続も含まれる必要があります。
- アプリケーション コンポーネント、データ接続、アップストリームおよびダウンストリーム サービスが公開される可能性がある潜在的な脅威と攻撃ベクトルを一覧表示します。
- 列挙された脅威を軽減するために使用できる適切なセキュリティ コントロールを特定し、追加の対処計画を必要とするコントロールのギャップ (セキュリティの脆弱性など) を特定します。
- 特定された脆弱性を軽減できるコントロールを列挙して設計します。
Azure ガイダンス: Azure 脅威モデル テンプレートが埋め込まれた Microsoft 脅威モデリング ツールなどの脅威モデリング ツールを使用し、脅威モデリング プロセスを促進します。 STRIDE モデルを使用して、内部と外部の両方から脅威を列挙し、適用可能なコントロールを特定します。 脅威モデリング プロセスに、DevOps プロセスの脅威シナリオ (アクセス制御ポリシーが正しく構成されていない、安全ではない成果物リポジトリを介して、悪意あるコードが注入されるなど) が含まれていることを確認します。
脅威モデリング ツールを使用できない場合は、少なくともアンケートベースの脅威モデリング プロセスを使用し、脅威を特定する必要があります。
脅威モデリングまたは分析の結果は、アプリケーションまたは脅威の状況においてセキュリティに大きな影響を与える変更がある場合に記録および更新されます。
実装と追加のコンテキスト:
- 脅威モデリングの概要
- アプリケーション脅威分析 (STRIDE + アンケート ベースの方法を含む)
- Azure テンプレート - Microsoft Security Threat Model ステンシル
顧客のセキュリティ上の利害関係者 (詳細):
DS-2: ソフトウェア サプライ チェーンのセキュリティを確保する
CIS Controls v8 ID | NNIST SP 800-53 r4 ID | PCI-DSS ID v3.2.1 |
---|---|---|
16.4、16.6、16.11 | SA-12、SA-15 | 6.3、6.5 |
セキュリティ原則: 企業の SDLC (ソフトウェア開発ライフサイクル) またはプロセスに、アプリケーションに依存関係がある自社およびサードパーティ製のソフトウェア コンポーネント (独自のソフトウェアとオープン ソース ソフトウェアの両方を含む) を管理するための一連のセキュリティ制御が含まれる必要があります。 脆弱なコンポーネントや悪意のあるコンポーネントが統合され、環境にデプロイされるのを防ぐためのゲーティング条件を定義します。
ソフトウェア サプライ チェーンのセキュリティ制御には、少なくとも次の側面が含まれる必要があります。
- 開発、ビルド、統合、デプロイ フェーズで必要なアップストリームの依存関係を特定します。
- アップストリームで利用可能な修正プログラムがある場合に、既知の脆弱性について、社内およびサードパーティのソフトウェア コンポーネントのインベントリと追跡を行います。
- 未知の脆弱性の静的および動的アプリケーション テストを使用して、ソフトウェア コンポーネントの脆弱性とマルウェアを評価します。
- 適切なアプローチを使用して、脆弱性とマルウェアを確実に軽減します。 これには、ソース コードのローカルまたはアップストリームの修正、機能の除外、または直接的な軽減策が利用できない場合の補正制御の適用が含まれる場合があります。
クローズド ソースのサードパーティ コンポーネントが実稼働環境で使用されている場合は、そのセキュリティ態勢に対する可視性が制限されている可能性があります。 コンポーネントに悪意のあるアクティビティや脆弱性が関連付けられている場合の影響を最小限に抑えるために、アクセス制御、ネットワーク分離、エンドポイント セキュリティなどの追加の制御を検討する必要があります。
Azure ガイダンス: GitHub プラットフォームの場合は、GitHub Advanced Security または GitHub のネイティブ機能の次の機能またはツールを使用して、ソフトウェア サプライ チェーンのセキュリティを確保します。
- 依存関係グラフを使用し、Advisory Database を介してプロジェクトのすべての依存関係と関連する脆弱性をスキャン、インベントリ、および特定します。
- Dependabot を使用して、脆弱な依存関係が確実に追跡および修復され、依存するパッケージとアプリケーションの最新リリースにリポジトリが自動的に対応するようにします。
- GitHub のネイティブ コードのスキャン機能を使用し、外部からコードをソーシングする場合のソース コードをスキャンします。
- Azure Defender for Cloud を使用して、コンテナー イメージの脆弱性評価を CI/CD ワークフローに統合します。
Azure DevOps ではサードパーティの拡張機能を使用して、サードパーティ製のソフトウェア コンポーネントとその脆弱性のインベントリ、分析、修復に同様のコントロールを実装できます。
実装と追加のコンテキスト:
- GitHub の依存関係グラフ
- GitHub Dependabot
- CI/CD ワークフロー内の脆弱なコンテナー イメージを特定する
- Azure DevOps Marketplace - サプライ チェーンのセキュリティ
顧客のセキュリティ上の利害関係者 (詳細):
DS-3: DevOps インフラストラクチャをセキュリティで保護する
CIS Controls v8 ID | NNIST SP 800-53 r4 ID | PCI-DSS ID v3.2.1 |
---|---|---|
16.7 | CM-2、CM-6、AC-2、AC-3、AC-6 | 2.2、6.3、7.1 |
セキュリティ原則: DevOps インフラストラクチャとパイプラインが、ビルド、テスト、運用の各ステージを含む環境全体のセキュリティのベスト プラクティスに従う必要があります。 これには通常、次のスコープのセキュリティ コントロールが含まれます。
- ソース コード、ビルドされたパッケージとイメージ、プロジェクト成果物、ビジネス データを格納する成果物リポジトリ。
- CI/CD パイプラインをホストするサーバー、サービス、ツール。
- CI/CD パイプラインの構成。
Azure ガイダンス: Azure セキュリティ ベンチマークを DevOps インフラストラクチャのセキュリティ制御に適用する際、その一環として、次のコントロールに優先順位を付ける必要があります。
- CI/CD パイプラインが悪意のあるコードを挿入する手段にならないよう、成果物と基になる環境を保護します。 たとえば、CI/CD パイプラインを確認して、組織、プロジェクト、ユーザー、パイプライン (ビルド & リリース)、接続、ビルド エージェントなどの Azure DevOps のコア領域の構成ミスを特定して、オープン アクセス、弱い認証、安全でない接続のセットアップなどの構成の誤りを特定します。 GitHub の場合は、同様のコントロールを使用して、組織のアクセス許可レベルをセキュリティで保護します
- パイプラインへの変更が承認されるよう、パイプラインの Azure AD、ネイティブ サービス、CI/CD ツールに ID/ロールのアクセス許可とエンタイトルメント ポリシーを構成します。
- Azure マネージド ID や Just-In-Time アクセスなどの機能を使用して、開発者やテスト担当者などのアカウントに永続的な "独立的" 特権アクセスを提供しないようにします。
- CI/CD ワークフロー ジョブで使用されるコードとスクリプトからキー、資格情報、シークレットを削除し、キー ストアまたは Azure Key Vault に格納します。
- セルフホステッド ビルド/デプロイ エージェントを実行する場合は、ネットワーク セキュリティ、態勢および脆弱性の管理、エンドポイント セキュリティなどの Azure セキュリティ ベンチマーク コントロールに従って、環境をセキュリティで保護します。
実装と追加のコンテキスト:
- DevSecOps コントロールの概要 - セキュリティで保護されたパイプライン
- GitHub 組織をセキュリティで保護する
- Azure DevOps パイプライン - Microsoft ホステッド エージェントのセキュリティに関する考慮事項
顧客のセキュリティ上の利害関係者 (詳細):
DS-4: 静的なアプリケーション セキュリティ テストを DevOps パイプラインに統合する
CIS Controls v8 ID | NNIST SP 800-53 r4 ID | PCI-DSS ID v3.2.1 |
---|---|---|
16.12 | SA-11 | 6.3、6.5 |
セキュリティ原則: 静的アプリケーション セキュリティ テスト (SAST) が CI/CD ワークフローのゲーティング コントロールの一部に含まれていることを確認します。 このゲーティングは、脆弱なパッケージがリポジトリにコミットされたり、パッケージに組み込まれたり、または実稼働環境にデプロイされたりするのを防ぐために、テスト結果に基づいて設定できます。
Azure ガイダンス: ソース コードを CI/CD ワークフローで自動的にスキャンできるよう、SAST をパイプラインに統合します。 Azure DevOps パイプラインまたは GitHub は、以下のツールとサードパーティ製の SAST ツールをワークフローに統合できます。
- GitHub CodeQL を使用してソース コード分析を行います。
- Microsoft BinSkim Binary Analyzer for Windows および *nix バイナリ分析。
- Azure DevOps 資格情報スキャナーと GitHub ネイティブ シークレット スキャンを使用し、ソース コードの資格情報のスキャンを行います。
実装と追加のコンテキスト:
顧客のセキュリティ上の利害関係者 (詳細):
DS-5: 動的なアプリケーション セキュリティ テストを DevOps パイプラインに統合する
CIS Controls v8 ID | NNIST SP 800-53 r4 ID | PCI-DSS ID v3.2.1 |
---|---|---|
16.12 | SA-11 | 6.3、6.5 |
セキュリティ原則: 動的アプリケーション セキュリティ テスト (DAST) が CI/CD ワークフローのゲーティング コントロールの一部に含まれていることを確認します。 ゲーティングは、脆弱性がパッケージに組み込まれたり、実稼働環境にデプロイされたりするのを防ぐために、テスト結果に基づいて設定できます。
Azure ガイダンス: DAST をパイプラインに統合して、ランタイム アプリケーションを Azure DevOps または GitHub の CI/CD ワークフロー セットで自動的にテストできます。 自動侵入テスト (手動による検証を使用) も DAST の一部である必要があります。
Azure DevOps パイプラインまたは GitHub は、サードパーティ製の DAST ツールの CI/CD ワークフローへの統合をサポートします。
実装と追加のコンテキスト:
顧客のセキュリティ上の利害関係者 (詳細):
DS-6: DevOps ライフサイクル全体を通してワークロードのセキュリティを確保する
CIS Controls v8 ID | NNIST SP 800-53 r4 ID | PCI-DSS ID v3.2.1 |
---|---|---|
7.5、7.6、7.7、16.1、16.7 | CM-2、CM-6、AC-2、AC-3、AC-6 | 6.1、6.2、6.3 |
セキュリティ原則: 開発、テスト、デプロイの各ステージで、ライフサイクル全体にわたってワークロードがセキュリティで保護されていることを確認します。 Azure セキュリティ ベンチマークを使用して、既定でガードレールとして設定したり、デプロイ ステージの前にシフト レフトしたりできるコントロール (ネットワーク セキュリティ、ID 管理、特権アクセスなど) を評価します。 特に、次のコントロールが DevOps プロセスに配置されていることを確認します。
- CI/CD ワークフロー、インフラストラクチャ管理 (コードとしてのインフラストラクチャ)、およびテストで、Azure またはサードパーティ製のツールを使用してデプロイを自動化し、人為的エラーと攻撃領域を削減します。
- VM、コンテナー イメージ、その他の成果物が悪意のある操作からセキュリティで保護されていることを確認します。
- CI/CD ワークフローにデプロイする前に、ワークロード成果物 (つまり、コンテナー イメージ、依存関係、SAST、DAST スキャン) をスキャンします
- 脆弱性評価と脅威検出機能を実稼働環境にデプロイし、実行時にこれらの機能を継続的に使用します。
Azure ガイダンス: Azure VM のガイダンス:
- Azure Shared Image Gallery を使用して、組織内のさまざまなユーザー、サービス プリンシパル、AD グループに対してイメージを共有できます。 Azure ロールベースのアクセス制御 (Azure RBAC) を使用して、確実に承認されたユーザーのみがカスタム イメージにアクセスできます。
- 不要な資格情報、アクセス許可、パッケージを排除するために、VM でセキュリティで保護された構成基準を定義します。 カスタム イメージ、Azure Resource Manager テンプレート、Azure Policy のゲスト構成を使用し、これらの構成基準をデプロイして適用します。
Azure コンテナー サービスのガイダンス:
- Azure Container Registry (ACR) を使用して、Azure RBAC を介してきめ細かくアクセスを制限できるプライベート コンテナー レジストリを作成します。そうすることで、承認されたサービスとアカウントのみがプライベート レジストリ内のコンテナーにアクセスできるようになります。
- Defender for Azure Container Registry を使用して、プライベート Azure Container Registry 内のイメージの脆弱性評価を行います。 さらに、Azure Defender for Cloud を使用して、CI/CD ワークフローの一部としてコンテナー イメージスキャンを統合することができます。
Azure サーバーレス サービスの場合は、同様のコントロールを採用して、デプロイ前の段階にセキュリティ制御をシフト レフトします。
実装と追加のコンテキスト:
- 共有イメージ ギャラリーの概要
- Azure Defender for Cloud の脆弱性評価の推奨事項を実装する方法
- Azure Container のセキュリティに関する考慮事項
- Azure Defender for container registries
顧客のセキュリティ上の利害関係者 (詳細):
DS-7: DevOps でログと監視を有効にする
CIS Controls v8 ID | NNIST SP 800-53 r4 ID | PCI-DSS ID v3.2.1 |
---|---|---|
8.2、8.5、8.9、8.11 | AU-3、AU-6、AU-12、SI-4 | 10.1、10.2、10.3、10.6 |
セキュリティ原則: ログ記録と監視のスコープに、非実稼働環境と DevOps (および他の開発プロセス) で使用される CI/CD ワークフロー要素が含まれていることを確認します。 これらの環境を対象とする脆弱性と脅威を適切に監視しなければ、実稼働環境に重大なリスクを与えるおそれがあります。 CI/CD ビルド、テスト、およびデプロイ ワークフローからのイベントも監視して、CI/CD ワークフロー ジョブの逸脱を特定する必要があります。
Azure ガイダンス: DevOps プロセス全体で使用される非実稼働および CI/CD ツール環境 (Azure DevOps や GitHub など) で監査ログ機能を有効にして構成します。
Azure DevOps および GitHub CI/CD 作業におけるビルド、テスト、およびデプロイ ジョブのイベントも監視して、CI/CD ジョブの例外結果を特定する必要があります。
上記のログとイベントを、ログ ストリームまたは API を使用して Azure Sentinel または他の SIEM ツールに取り込み、セキュリティ インシデントが適切に監視され、処理のためにトリアージされていることを確認します。
ワークロードのログと監視の制御を実装するためのガイドラインとして、「Azure セキュリティ ベンチマーク - ログと脅威検出」に従います。
実装と追加のコンテキスト:
顧客のセキュリティ上の利害関係者 (詳細):