開発者ワークフローへのゼロ トラストセキュリティの埋め込み

開発者は自信と安心感を持って迅速にに動く必要があります。 コードを複製するとすぐに、セキュリティが必要になります。 この記事では、迅速かつ安全にイノベーションを起こすことができるように、ゼロ トラスト原則を使用して開発する方法について説明します。 アプリケーションを設計および実装するためのゼロ トラスト セキュリティ戦略とアプローチは、次の原則で構成されます。

  • 明示的に確認する 使用可能なすべてのデータ ポイントに基づいて、常に認証と承認を行います。
  • 最低特権アクセスを使用します。 ジャスト・イン・タイムおよびジャスト・エナフ・アクセス(JIT/JEA)、リスクベースのアダプティブ・ポリシー、データ保護により、ユーザー・アクセスを制限します。
  • 侵害を想定する。 影響範囲を最小限に抑えるために、アクセスをセグメント化します。 エンドツーエンドの暗号化を検証し、分析を使用して可視性を得て、脅威検出を促進し、防御を強化します。

ワークフローにセキュリティを埋め込むと可能になること:

  • セキュリティの脆弱性をより迅速に特定する。
  • より安全な開発者ツールを提供する。
  • 接続を作成してセキュリティ チームと開発チーム間の共同作業を向上させる。

コードを作成するときにイノベーションを強化してワークフローをセキュリティで保護する

次の図に示すマイクロソフトの統合ソリューションは、DevOps チームと SecOps チームの間の橋渡しを行い、コードからクラウドへの開発を加速してセキュリティで保護するのに役立ちます。

図は、統合されたクラウドへのコードの開発ソリューションを構成するテクノロジを示しています。

DevOps を保護するソリューションは、開発者へのイノベーションを強化するツールの提供と、開発者がコードを作成する際の開発者ワークフローのセキュリティ保護という、2 つのメイン コンポーネントに依拠しています。 Microsoft Build 2022 の「Accelerate and secure your code to cloud development」を観て、これらのコンポーネントが開発環境をセキュリティで保護する方法について学習してください。

開発ソリューションをセキュリティで保護するために、Azure と GitHub で連携する次のベスト プラクティスを実行してください。

  • 開発者がコードを複製するとセキュリティが開始されるため、Azure と GitHub を使用して DevSecOps を有効にして、DevOps チームと SecOps チームの間を橋渡しし、開発環境をセキュリティで保護する。
  • Visual StudioVisual Studio Code を使用して、開発者、言語、スタックのための柔軟で強力な開発者ツールを提供する。
  • GitHub CodespacesMicrosoft Dev Box を使用して、クラウド内の開発ライフサイクル ツール全体により、新しい開発者のオンボードとサードパーティとの共同作業を簡素化する。
  • 複数の場所に分散しなくなったコードに対する組み込みの知的財産権保護を入れる。 GitHub ActionsAzure Pipelines を使用して、チームが必要とする場所でコードの共同作業、開発、自動化、デプロイができるようにする。
  • GitHub Advanced Security を使用して、コード スキャン、シークレット スキャン、依存関係レビューにより、開発者ワークフロー内のセキュリティ ガイダンスと継続的なセキュリティ フィードバックを取得する。
  • Microsoft Entra ID の ID 管理サービスを使用して、組織全体にゼロトラスト セキュリティを適用する。

ゼロ トラスト セキュリティを開発ライフサイクルに組み込む

コミット前からコミット、デプロイ、運用、監視まで、開発ライフサイクルのすべての段階でセキュリティ ソリューションが必要です。

コミット前ステージ

  • 脅威モデリング
  • IDE セキュリティ プラグイン
  • コミット前フック
  • 安全なコーディング標準
  • ピア レビュー

開発のコミットメント前フェーズでは、主に人為的ミスが原因で、コードの欠陥の 85% が発生します。 コードをコミットする前に、Visual Studio Code、Visual Studio、または GitHub Codespaces でコードを記述し、脆弱性を特定してコードをセキュリティで保護することで、セキュリティに注意してください。 ピア レビューを使用して、セキュリティで保護されたコーディング プラクティスを促進してください。

コミット (CI) ステージ

  • スタティック コード分析
  • セキュリティ単体テスト
  • 依存関係管理
  • 資格情報のスキャン

コミット ステージで、広範なセキュリティ メソッドを使用してコードを確認し (静的コード分析を含む)、コードをソース管理にチェックインするときにスキャンします。 認証情報スキャン (シークレット スキャンまたはトークン スキャンともいう) を使用して、誤ってコードベースに導入した可能性のある認証情報を特定します。 依存関係を確認して環境に導入する前に、セキュリティで保護されていない依存関係をキャッチします。

デプロイ (CD) ステージ

  • コードとしてのインフラストラクチャ (IaC) スキャン
  • 動的セキュリティ スキャン
  • クラウド構成チェック
  • セキュリティ受け入れテスト

デプロイ ステージで、コードベースの全体的な正常性を確認し、高度なセキュリティ スキャンを実行してリスクを特定します。 クラウド構成チェック、インフラストラクチャ コード チェック、およびセキュリティ受け入れテストを実行して、組織のセキュリティ目標と整合させます。

運用および監視ステージ

  • 継続的な監視
  • 脅威インテリジェンス
  • 責めない事後分析

運用および監視フェーズで、継続的な監視と脅威インテリジェンスを使用して、徐々に継承される可能性がある全体的な依存関係の脆弱性を軽減します。 事後分析を実行して、得られた教訓を取り除き、DevOps サイクルの反復を続けます。

依存関係、コード、シークレットのスキャンを実装する

開発者がコードのセキュリティを簡単に保護できるようにするには、ネイティブで自動化された機能を使用して、開発ライフサイクル全体を通じて継続的なセキュリティ機能による継続的なフィードバックを提供します。 GitHub Advanced Security の依存関係スキャン、コード スキャン、シークレット スキャンを使用して、開発者とコミュニティに全体的なセキュリティを提供します。

依存関係スキャン

  • 依存関係の統合されたレビュー
  • アラートとセキュリティ更新プログラム

継続的な依存関係スキャンを使用して、コードベース内の脆弱な依存関係に対する依存関係のリスク レベルと自動修正を取得します。 継続的なプロセスとして、開発者をフレンドリーかつ目立たない方法で正しい方向に促します。

コード スキャン

  • コード スキャン用の拡張可能なフレームワーク
  • 開発者ワークフロー内に統合
  • 業界をリードする CodeQL エンジンによる裏付け

別の場所で実行する他の手順を使用せずに、コードを生成する際にコード スキャンを実装します。 なじみのある GitHub ユーザー エクスペリエンスでスキャン結果を表示することで、開発ライフサイクルの早い段階での修正を容易にします。

シークレット スキャン

  • パブリック リポジトリとプライベート リポジトリで漏洩したシークレットをスキャンする
  • 40 以上のプロバイダーとのパートナーシップ
  • プッシュ保護
    • 修復から予防への移行
    • 信頼度の高いシークレットを確認する
    • クリック 1 回で保護を有効にする

シークレット スキャンを使用して、ハードコーディングされた認証情報とトークンについてコードをスキャンします。 コードベースにプッシュする前に、シークレットとトークンの保護スキャンをプッシュします。 開発者がコードをプッシュし、GitHub がシークレットを識別するときにプッシュをブロックするときに、信頼度の高いシークレットを確認します。

ワークロード ID の管理とセキュリティ保護

  • ライフサイクル管理
  • アクセス ガバナンス
  • セキュリティで保護されたアダプティブ アクセス

ワークロード ID のアクティビティを可視化し、定期的なクリーンアップを有効にします。 ワークロード ID を所有するユーザーと、組織の変更の前後にわたりこの情報を最新の状態に保つ方法を決定します。 ワークロード ID を最後に使用した日時、最後にトークンを発行した日時、およびトークンの有効期限を追跡します。

シークレットと認証情報の漏洩の可能性を軽減するには、アクセス レビューを定期的に実施します。 ワークロード ID を確認し、不要なアクセス特権を削除するようユーザーに要求します。 ユーザーに権限が過剰で使用率の低いアクセス特権を報告させます。 ワークロード ID を違反から保護する方法について説明します。 条件付きアクセスを有効にして、アクセスが予期されるリソースから発信されていることを確認します。

GitHub OIDC と Microsoft Entra ワークロード ID フェデレーションを使用して ID をセキュリティで保護する

組織をさらにセキュリティで保護するには、Microsoft Entra ワークロード ID フェデレーション と共に GitHub OpenID Connect (OIDC) を使用し、シークレットの格納とアクセスの必要性を最小限に抑えます。 Azure サーバー プリンシパル シークレットとその他の有効期間の長いクラウド認証情報リソースを安全に管理して、認証情報の有効期限切れによるサービスのダウンタイムを最小限に抑えます。 GitHub Actions などの開発者プラットフォームと統合して、アプリを安全に構築します。

次の図に示すように、推奨されるワークロード ID フェデレーション ワークフローは、6 つのステップで構成されています。

図は、以下に説明する 6 つのワークロード ID フェデレーション ワークフローのステップを示しています。

  1. Microsoft Entra ID で信頼を設定し、トークンを要求します。
  2. アクションがトークンを取得できるように GitHub ワークフローを構成します。
  3. GitHub ワークフローで Azure ID に要求が送信されます。
  4. Microsoft Entra ID が、アプリケーションに対する信頼を検証し、キーをフェッチしてトークンを検証します。
  5. Microsoft Entra ID が、トークンにアクセスして発行します。
  6. デプロイ アクションでは、Microsoft Entra アクセス トークンを使用して Azure 内のリソースにデプロイします。

シニア クラウド アドボケイトおよびDevOps プラクティス リーダーの April Edwards によるデモ「the Workload Identity Federation workflow」を視聴してください。 このデモは、YouTube でも視聴可能なMicrosoft Build 2022 セッション「Accelerate and secure your code to cloud development」(以下に埋め込まれています) の、19:14 マークから始まります。

次のステップ

  • Azure で開始するのにかかる時間を短縮するオープンソース ツールである Azure Developer CLI のサインアップをします。
  • GitHub の OIDC をフェデレーション ID として信頼するように Azure を構成します。 OpenID Connect (OIDC) を使用すると、GitHub Action ワークフローから Azure 内のリソースにアクセスできます。このとき、Azure 認証情報を有効期間が長い GitHub シークレットとして格納する必要はありません。
  • Microsoft Entra ID を一元化された ID 管理システムとして運用することで、覚書 22-09 (米国行政命令 14028「国家のサイバーセキュリティの向上」に準拠) に記載されるゼロ トラスト原則を実装します。
  • クラウド エクスペリエンスに対する最も高速で最も安全なコードを開発者に提供するツールにより、Azure DevOps を使用してコードを高速化し、セキュリティで保護します。
  • 開発環境のセキュリティ保護は、最小特権、ブランチ セキュリティ、信頼ツール、拡張機能、統合に関するベスト プラクティスに基づいて、開発環境にゼロ トラスト原則を実装する方法を説明します。
  • ゼロ トラスト用の DevOps 環境のセキュリティ保護」では、ハッカーが開発者ボックスを侵害したり、リリース パイプラインに悪意のあるスクリプトを感染させたり、テスト環境を介して運用データにアクセスできるようにしたりするのを防ぐための、DevOps 環境のセキュリティ保護に関するベスト プラクティスについて説明しています。
  • トークンのカスタマイズでは、Microsoft Entra トークンで受信することができる情報と、最小限の特権でアプリケーションのゼロ トラスト セキュリティを強化しながら、柔軟性と制御を向上させるためにトークンをカスタマイズする方法について説明します。
  • グループ クレームとアプリケーション ロールをトークンに設定するでは、アプリケーション ロール定義を使用してアプリケーションを構成し、セキュリティ グループをアプリケーション ロールに割り当てて柔軟性とコントロールを向上させ、最小特権の原則でアプリケーションのゼロ トラスト セキュリティを強化する方法を説明します。