次の方法で共有


DevOps プラットフォームのセキュリティに関する考慮事項

Azure DevOpsGitHub などのクラウドベースの開発プラットフォームでは、セキュリティを常に優先する必要があります。 Microsoft は、基盤となるクラウド インフラストラクチャのセキュリティを更新して維持しますが、ご自身の Azure DevOps 組織と GitHub インスタンスのセキュリティのベスト プラクティスを確認して構成するのはお客様の責任です。

継続的インテグレーションと継続的デリバリー (CI/CD) パイプラインでコードとしてのインフラストラクチャを介して環境をデプロイする場合でも、Azure でホストされているアプリケーションにコードをデプロイする場合でも、次の重要なセキュリティ領域を考慮してください。

DevOps ツールへのアクセスを制限する

Microsoft Entra ID を介したロールベースのアクセス制御 (RBAC)を使用して、最小限の特権の原則に従います。 ビジネス機能を実行するために必要な DevOps プラットフォームへの最小限のアクセス権をユーザーとサービスに付与します。 詳細については、次の記事を参照してください。

ID 管理プレーンとして Microsoft Entra ID を確立したら、ベスト プラクティスに従って、Microsoft Entra グループ メンバーシップを使用して Azure DevOps ロールの割り当てを管理します。 Azure DevOps ロールを Microsoft Entra グループに割り当て、ユーザーの Microsoft Entra メンバーシップを調整して、Azure DevOps アクセスを変更または削除できます。

  • Microsoft Entra ID エンタイトルメント管理を使用して、Microsoft Entra ユーザーがタスクを完了するために必要なリソースへの期限付きアクセスを許可するアクセス パッケージを作成します。

  • Just-In-Time アクセスに Microsoft Entra Privileged Identity Management を使用して、個人を Azure DevOps 管理者ロールに一定期間昇格させることもできます。

Azure DevOps 組織、プロジェクト、またはオブジェクト レベルでセキュリティ グループ、ポリシー、設定を使用して、Azure DevOps のセキュリティを管理します。 可能であれば、Azure DevOps でアクセス許可の継承を無効にすることを検討してください。

リポジトリとブランチのアクセスを制限する

リポジトリへのアクセス、アクセス許可、ブランチの作成を制限して、望ましくない変更や悪意のある変更からコードと環境を保護します。 Azure DevOps のセキュリティ グループを使用して、リポジトリへのアクセスを制限します。 ブランチのアクセス許可を設定して、ブランチ内のコードを読み取って更新できるユーザーを制限します。

パイプラインのアクセスとアクセス許可を制限する

悪意のあるコードによってエンタープライズ データやシークレットが盗まれたり、運用環境が破損したりする可能性があります。 パイプラインでの悪意のあるコードのデプロイを防ぐためにガードレールを実装します。 アクセスを制限し、ガードレールを実装することで、侵害されたパイプラインから他のプロジェクト、パイプライン、リポジトリへの横方向の露出を防ぐことができます。

YAML パイプラインをセキュリティで保護するには、漸進的アプローチに従うことを検討してください。 詳細については、「YAML パイプラインをセキュリティで保護する方法を計画する」を参照してください。

セキュリティのニーズに基づいて DevOps エージェントを選択する

Microsoft ホストテッドまたはセルフホステッドのいずれかのエージェントを使用して、Azure DevOps と GitHub パイプラインを強化できます。 エージェントの種類ごとにトレードオフがあります。

Microsoft ホストテッド エージェントを使用している場合、アップグレードやメンテナンスについて心配する必要はありません。 セルフホステッド エージェントを使用すると、セキュリティ ガードレールを実装する柔軟性が高くなります。 エージェント ハードウェア、オペレーティング システム、インストールされているツールを制御します。

エージェントの種類の違いを確認し、潜在的なセキュリティ上の考慮事項を特定するには、「Azure Pipelines エージェント」を参照してください。

セキュリティで保護されたスコープ付きサービス接続を使用する

可能な限り、サービス接続を使用して、インフラストラクチャまたはアプリケーション コードを Azure 環境にデプロイします。 潜在的な攻撃対象領域を減らすために、サービス接続では、特定の Azure リソースまたはリソース グループへのデプロイ アクセスを制限する必要があります。 また、開発、テスト、QA、運用環境用に個別のサービス接続を作成することを検討してください。

シークレット ストアを使用する

リポジトリ内のコードまたは補助ドキュメントにシークレットをハードコーディングしないでください。 敵対者はリポジトリをスキャンし、無防備な機密データを検索して悪用します。 Azure Key Vault などのシークレット ストアを設定し、Azure Pipelines でストアを参照して、キー、シークレット、または証明書を安全に取得します。 詳細については、「パイプラインと CI/CD ワークフローをセキュリティで保護する」を参照してください。 Key Vault のシークレットを GitHub Actions ワークフローで使用することもできます。

強化された DevOps ワークステーションを使用してコードをビルドおよびデプロイする

プラットフォームと開発の各チームは、多くの場合、Azure プラットフォーム、または Azure DevOps や GitHub などの他のサービスに対して昇格された特権を持っています。 このアクセスにより、潜在的な攻撃対象領域が大幅に増えます。 ガードレールを実装して、コードの開発とデプロイに使用するエンドポイントとワークステーションを保護します。

強化された安全な管理ワークステーション (SAW) を使用して、リスクの高い環境や運用環境に変更を展開します。 詳細については、「ゼロ トラストによるエンドポイントのセキュリティ保護」を参照してください。

セキュリティ スキャンとテストを行う

アプリケーション コードまたはコードとしてのインフラストラクチャのいずれをデプロイする場合でも、DevSecOps のベスト プラクティスとコントロールをパイプラインに実装します。 CI/CD 体験の早い段階でセキュリティを統合して、後でコストのかかるセキュリティ侵害を防ぎます。 静的コード分析、単体テスト、シークレット スキャン、パッケージ/依存関係スキャンをパイプラインに実装するための戦略を作成します。

Microsoft Defender for Cloud などのエンタープライズ セキュリティ ツールは、DevOps ツールと統合できます。 たとえば、Defender for Cloud では、CI/CD ワークフローで脆弱なコンテナー イメージを識別できます。 GitHub Actions とリポジトリの場合には、コードとシークレットのスキャンと依存関係の確認に GitHub Advanced Security を使用します。

監査イベントを定期的に確認して、管理者や他のユーザーによる予期しない使用パターンを監視し、対応します。 Azure DevOps 組織の監査ログに対してアクセス、フィルター処理、エクスポートできます。 長期ストレージと詳細なログ クエリの場合は、Azure Monitor Log Analytics ワークスペース、または Microsoft Sentinel などのセキュリティ情報イベント管理 (SIEM) システムへの監査ストリームを作成します。