ゼロ トラスト セキュリティを開発者ワークフローに埋め込む

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

  • 明示的に確認する 使用可能なすべてのデータ ポイントに基づいて、常に認証と承認を行います。
  • 最低特権アクセスを使用します。 ジャスト・イン・タイムおよびジャスト・エナフ・アクセス(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 つのステップで構成されています。

図は、ワークロード 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」を視聴してください。 デモは、Microsoft Build 2022 セッション、コードをクラウド開発に高速化してセキュリティで保護 の 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 トークンで受け取ることができる情報について説明しています。 最小限の特権でアプリケーションのゼロ トラスト セキュリティを強化しながら、柔軟性と制御性を向上させるようにトークンをカスタマイズする方法について説明しています。
  • トークンでのグループ要求とアプリ ロールの構成」は、アプリ ロール定義を使用してアプリを構成し、セキュリティ グループをアプリ ロールに割り当てる方法を説明しています。 これらの方法は、最小限の特権でアプリケーションのゼロ トラスト セキュリティを強化しながら、柔軟性と制御を向上させるのに役立ちます。