次の方法で共有


コードとしてのインフラストラクチャ (IaC) 向け DevSecOps

Microsoft Sentinel
Azure Monitor
GitHub

ソリューションのアイデア

この記事ではソリューションのアイデアについて説明します。 クラウド アーキテクトはこのガイダンスを使用すると、このアーキテクチャの一般的な実装の主要コンポーネントを視覚化しやすくなります。 ワークロードの特定の要件に適合する、適切に設計されたソリューションを設計するための出発点として、この記事を使用してください。

このソリューションのアイデアは、コードとしてのインフラストラクチャ (IaC) に GitHub を使用する DevSecOps パイプラインを示しています。 また、オペレーショナル エクセレンス、セキュリティ、コストの最適化のためにワークフローを管理する方法についても説明します。

Terraform は Hashicorp の商標です。 このマークを使用することは、保証を意味するものではありません。

アーキテクチャ

IaC 用 DevSecOps のアーキテクチャを示す図。

このアーキテクチャの Visio ファイルをダウンロードします。

データフロー

次のデータフローは、前の図に対応しています。

  1. テスト駆動型開発を使用して、IaC テンプレートなどのインフラストラクチャ定義のコード変更を GitHub リポジトリに確認します。 IaC の品質をテストするために、単体テスト、統合テスト、およびコードとしてのポリシー (PaC) を同時に開発します。

  2. プル要求は、GitHub Actions を使用して自動単体テストをトリガーします。

  3. ローカルにデプロイされたインフラストラクチャの状態とプランを使用して IaC をテストするように GitHub Actions ワークフロー プロセスを構成します。

  4. コードの品質とセキュリティの問題をスキャンするように GitHub Actions を構成します。 独自のカスタムビルド GitHub CodeQL クエリを作成して、IaC テンプレートを分析し、潜在的なセキュリティ脆弱性を検出します。 脆弱性が検出された場合、GitHub から組織またはリポジトリの所有者とメンテナーにアラートが送信されます。

  5. IaC ツールは、サイズ、インスタンス数、およびその他のプロパティを調整することで、各環境のリソースをプロビジョニングおよび変更します。 プロビジョニングされたリソースに対して、IaC の自動統合テストを実行することができます。

  6. インフラストラクチャの手動更新が必要な場合、指定した管理者のアクセス権が変更を実行できるように昇格されます。 変更後、昇格されたアクセスは削除されます。 また、IaC の調整のために GitHub イシューをログに記録する必要があります。 調整の手順とアプローチは、特定の IaC ツールによって異なります。

  7. SecOps により、セキュリティの脅威と脆弱性を継続的に監視し、防御します。 Azure Policy により、クラウド ガバナンスを適用します。

  8. 異常が検出されると、GitHub の問題が自動的にログに記録され、解決できるようになります。

コンポーネント

  • GitHub は、バージョン管理とコラボレーションのためのコード ホスティング プラットフォームです。 GitHub のソース管理リポジトリには、すべてのプロジェクト ファイルとそのリビジョン履歴が含まれます。 開発者は、リポジトリ内のコードの投稿、ディスカッション、管理を共同で行うことができます。

  • GitHub Actions には、継続的インテグレーション、自動テスト、コンテナーデプロイをカバーする一連のビルドおよびリリース ワークフローが用意されています。

  • GitHub Advanced Security には、IaC のセキュリティを保護する機能があります。 別のライセンスが必要です。

  • CodeQL には、静的コードに対して動作するセキュリティ スキャン ツールが用意されており、インフラストラクチャの誤った構成を検出できます。

  • Terraform は HashiCorp によって開発されたパートナー製品であり、Azure やその他の環境でインフラストラクチャの自動化を可能にします。

  • Microsoft Defender for Cloud では、統合されたセキュリティ管理と高度な脅威に対する保護がハイブリッド クラウド ワークロード全体に提供されます。

  • Microsoft Sentinel は、クラウドネイティブのセキュリティ情報およびイベント管理 (SIEM) およびセキュリティ オーケストレーション自動応答 (SOAR) ソリューションです。 高度な AI およびセキュリティ分析を使用して、企業全体で脅威を検出し、対応することができます。

  • Azure Policy は、 クラウド リソースのルールを適用できるポリシー定義を使用して、チームが IT の問題を管理および防止するのに役立ちます。 たとえば、認識できない SKU を持つ仮想マシンをプロジェクトがデプロイしようとしている場合、Azure Policy によって問題が警告され、デプロイが停止されます。

  • Azure Monitor によって、パフォーマンス メトリックやアクティビティ ログなどのアプリ テレメトリが収集され、分析されます。 このサービスで、不規則な状態が特定されると、アプリと担当者に通知されます。

シナリオの詳細

概念的には、IaC の DevSecOps は 、Azure Kubernetes Service (AKS) 上のアプリケーション コードの DevSecOps に似ています。 ただし、IaC の継続的インテグレーションと継続的デリバリーを管理および自動化するには、別のパイプラインとツールのセットが必要です。

IaC を採用する場合、コードを開発するときに自動化テストを作成することが重要です。 このようなテストを実行することで、ワークロードのスケール時に IaC をテストする複雑さを軽減できます。 Terraform の状態や テスト駆動型開発の計画などのローカル インフラストラクチャ構成状態を使用できます。 これらの構成状態は、実際のデプロイをエミュレートするものです。 Azure Resource Graph REST API を使用して、実際のインフラストラクチャ デプロイで IaC の統合テストを実行できます。

PaC は、規制やコーポレート ガバナンスに準拠したインフラストラクチャを提供するためのもう 1 つの重要な方法です。 パイプラインに PaC ワークフローを追加することで、クラウド ガバナンスを自動化することができます。

開発段階の早い段階でインフラストラクチャをセキュリティで保護すると、デプロイ後に攻撃のポイントを公開するインフラストラクチャが正しく構成されていないリスクが軽減されます。 GitHub の CodeQL を使用してインフラストラクチャ コードのセキュリティの脆弱性をスキャンすることで、Synk や Aqua Security tfsec などの静的コード分析ツールを統合できます。 このプロセスは、静的なアプリケーション セキュリティ テストに似ています。

インフラストラクチャをデプロイし、稼働状態になると、特に運用環境では、クラウド構成のドリフトを解決するのが困難になることがあります。

運用環境のクラウド インフラストラクチャをデプロイまたは変更するために、専用のサービス プリンシパルを設定します。 次に、環境の手動構成を可能にする他のすべてのアクセスを削除します。 手動構成が必要な場合は、指定された管理者のアクセス権を昇格し、変更後に昇格されたアクセス権を削除します。 開発者が変更を調整できるように、GitHub の問題を発生するように Azure Monitor を構成する必要があります。 可能な場合は手動で構成しないでください。

セキュリティ インシデントを防ぐために、クラウド環境の脅威と脆弱性を継続的に監視することが重要です。 脅威保護と SIEM ツールを使用して、異常なトラフィックを検出できます。 これらのツールは、セキュリティ管理者に自動的に警告し、GitHub の問題を発生させます。

考えられるユース ケース

あなたは、架空の会社 Contoso でマルチクラウド戦略を使う IaC 開発者の中心的なチームの一員です。 DevSecOps for IaC を使用して新しい Azure ランディング ゾーンにクラウド インフラストラクチャをデプロイし、デプロイのセキュリティと品質を確保したいと考えています。 また、インフラストラクチャに対するすべての変更を追跡し、監査したいと考えています。

共同作成者

Microsoft では、この記事を保持しています。 次の共同作成者がこの記事を書きました。

プリンシパルの作成者:

  • ヴィートチン |シニア クラウド ソリューション アーキテクト
  • 邑邑 シニア クラウド ソリューション アーキテクト

公開されていない LinkedIn プロフィールを見るには、LinkedIn にサインインしてください。

次のステップ