ゼロトラストのためのDevOps環境のセキュリティ保護
本ドキュメントは、Microsoft Learnの以下の記事に基づき、開発者がゼロトラストの原則(明示的な検証、最小特権アクセス、侵害の想定)を実装するために、開発環境およびDevOpsプラットフォーム環境を保護するためのベストプラクティスをまとめたものです。
- Secure DevOps environments for Zero Trust
- Secure the developer environment for Zero Trust
- Secure the DevOps platform environment for Zero Trust
開発環境のセキュリティ保護
開発者の環境は、攻撃者がシステムに侵入するための入り口となる可能性があります。
最小特権のベストプラクティス
開発環境への攻撃者が管理者権限を持つことを防ぐため、以下の最小特権の原則を適用します。
- DevOpsのための最小特権とジャストインタイム(JIT)アクセスの実装: チームメンバーには、必要な期間だけ最小限のアクセス権を付与します。
- ソースコードアクセスにPersonal Access Token (PAT)を使用しない: SaaSベースのDevOpsツールやコードリポジトリへのアクセスには、SSHキーやHTTPS(ID連携)を使用し、PATの使用は避けます。
- GitHub Enterprise Managed User (EMU) アカウントの標準化: 企業のIDプロバイダー(IdP)を通じてユーザーアカウントを管理し、GitHubのユーザー名やメールアドレスを組織のIDと同期させます。
- 組織のIDストアへの接続: SaaS環境への接続(HTTPS、PAT、SSH)は、組織のIDストアと連携させます。SSOによるアクセス制御を徹底します。
- SSH認証局(CA)の使用: 署名されたSSH証明書を使用して、メンバーがGitリソースに安全にアクセスできるようにします。
- Git Credential Managerの使用: Visual Studioなどのツールが持つIDサポートや、Git Credential Managerを活用して、コードへのアクセスを強化します。
ブランチセキュリティのベストプラクティス
コードリポジトリへの不正アクセスや改ざんを防ぐため、ブランチ戦略と制御を実装します。
- コードレビューによるブランチの保護: 保護されたブランチへの変更に対して、検証、レビュー、承認を必須とします。
- 承認権限の管理: Gitリポジトリの管理者が承認権限をコントロールし、プルリクエストのマージ前に承認レビューやステータスチェックの通過を強制します。
ツール、拡張機能、統合の信頼に関するベストプラクティス
IDEの拡張機能や統合ツールは生産性を高めますが、攻撃対象領域にもなり得ます。
- 信頼できるマーケットプレイスとパブリッシャーからのツールのみを統合する: 新しいツールや拡張機能を採用する際は、パブリッシャーの信頼性を確認します。
- 拡張機能の使用を制御する: 拡張機能が必要とする権限(ファイル読み取り、クラウド接続など)を把握し、攻撃対象領域を制限します。
- 開発者マシンの拡張機能を追跡する: VS Codeなどの拡張機能は、検証済みパブリッシャーからのものに限定し、定期的にインストールされている拡張機能を確認します(例:
code --list-extensions --show-versions)。
DevOpsプラットフォーム環境のセキュリティ保護
パイプラインや本番環境へのデプロイを担うDevOpsプラットフォームもまた、攻撃者の標的となります。
パイプラインを標的とする攻撃手法
攻撃者は以下のような脆弱性を利用してパイプラインを侵害しようとします。
- ランタイム変数や引数インジェクションによる情報の抽出
- パイプラインからのサービスプリンシパルや認証情報の奪取
- 設定ミスのあるPersonal Access Token (PAT) の悪用
- コードへのアクセス権を持つ統合ツール(テストフレームワーク、SAST/DASTツールなど)の脆弱性や設定ミス
シークレットと証明書の管理
壊滅的な侵害を防ぐためには、効果的なシークレット管理が不可欠です。
- シークレットと証明書の安全な保管: コード内やチーム環境ではなく、Azure Key Vaultなどの安全なストレージにシークレットを保管します。
- GitHub OIDCとAzureの連携: OpenID Connect (OIDC) を使用して、GitHub Actionsワークフローが長期間有効なシークレットを保存することなくAzureリソースにアクセスできるように構成します。
その他のベストプラクティス
- 監査証跡の整備: 誰がアクセスし、何が変更されたかを追跡できるよう、すべてのDevOpsプラットフォーム環境で監査ログを有効化し、レビューします。
- ソフトウェアサプライチェーンの保護: 不要なライブラリやオープンソースコンポーネントを削除し、攻撃対象領域を縮小します。
- Infrastructure-as-Code (IaC) テンプレートスキャンの自動化: 設定ミスやコンプライアンス違反を検出するために、IaCテンプレートのスキャンを自動化します。
- 承認ワークフローの自動化: 本番環境へのコードプッシュ前に、セキュリティ、ビジネス価値、品質を確認するチェック(ゲート)を設けます。
- 検証済みDevOpsツール統合のみを許可: 最小特権の原則に基づき、検証済みの統合のみを許可し、適切な読み取り/書き込み権限を設定します。