Upgrade to Pro — share decks privately, control downloads, hide ads and more …

202504xx_Secure Deployment - GitHub Actions で始...

Avatar for Kohei Saito Kohei Saito
February 28, 2025
61

202504xx_Secure Deployment - GitHub Actions で始める安全な CI_CD パイプライン構築

Avatar for Kohei Saito

Kohei Saito

February 28, 2025
Tweet

Transcript

  1. Secure Deployment – GitHub Actions で始める 安全な CI/CD パイプライン構築 日本マイクロソフト株式会社

    コーポレートソリューション事業本部 インテリジェントクラウド 技術本部 App Innovation Technical Specialist 斎藤 功平
  2. 本セッションの想定聴講者とゴール • 想定聴講者 ➢ 運用負荷が低くかつ安全なCI/CDパイプライン構築に関心のあるエンジニア ➢ セキュリティ対策を強化したい企業の技術担当者 • ゴール ➢

    運用負荷の軽減: GitHub hosted runner を利用して、GitHub Actions の実行 VM 管理にかかるコストと手間を削減する手 法を学ぶ。 ➢ セキュリティの強化: OpenID Connect を活用することで、従来の秘密情報管理に伴うリスクを低減し、より安全な認証・認 可フローを構築する方法を理解する。 ➢ プライベート環境への安全なデプロイ: プライベートネットワーク内のリソースに対するデプロイ手法や、ネットワーク内外のセキュリティを 両立する実践的な戦略をライブデモを通じて習得する。
  3. アジェンダ 1. GitHub Actions と OIDC (OpenID Connect) の基礎 1.

    GitHub Actions とは 2. OIDC (OpenID Connect) とは 3. GitHub-hosted ランナー と Self-hosted ランナー 2. 安全な CI/CD パイプラインの設計 1. 従来の秘密情報管理の問題点とリスク 2. GitHub Actions と OIDC の統合 3. GitHub-hosted ランナーによるPrivate Networkへの安全なデプロイ 1. API Gateway と OIDC を組み合わせたデプロイ 2. Azure 仮想ネットワーク内のリソースへデプロイ 4. デモ 5. まとめ
  4. 1-1. GitHub Actions とは GitHub上でコードのビルド、テスト、デプロイなどの一連の工程を自動化する 統合CI/CDプラットフォーム GitHub GitHub Actions ステージング環境

    開発環境 本番環境 Visual Studio VS Code • コンテナとしてビルドサーバーを用意し、 ソースが壊れることを常に検知する • デプロイ手順は機械的に定義されるため、 意図しないデプロイを防止可能 • 常に最新の状態のコードを管理
  5. 1-3. GitHub-hosted ランナー と Self-hosted ランナー 特徴 GitHub-hosted ランナー Self-hosted

    runner 定義 GitHub社が管理・提供する、予め構成さ れた実行環境 自社や独自環境で構築・運用される、自 由度の高い実行環境 セットアップ 簡単に利用開始でき、すぐに動作可能 初期設定やカスタマイズが必要で、環境 構築に時間を要する場合もある 管理・運用 GitHub社が管理・運用するため、ユー ザー側での実行基盤メンテナンスは不要 自社で実行基盤を管理・運用する必要が あり、定期的にメンテナンスが必要 環境の柔軟性 標準化された最新環境が提供される 自社要件に合わせた自由なカスタマイズ が可能 スケーラビリティ 自動スケーリングによりリソース管理が 容易 スケーリングは自社で設計・実装する必 要がある コスト 利用時間に応じた従量課金モデル (一定の 実行時間内であれば無償) 初期投資や運用コストがかかるが、長期 的にはコスト効率が出る可能性がある ユースケース 素早い導入と運用負荷軽減が求められる 場合に最適 高度なカスタマイズや特定のセキュリ ティ要件がある場合に最適
  6. 2-1. 従来の秘密情報管理の問題点とリスク 構成①: シークレットをハードコード 構成②: シークレットを環境変数に設定 構成③: シークレットをGitHub Secrets に設定

    ・・・ password=passvalue ・・・ ・・・ password=${{ env.password }} ・・・ ・・・ password=${{ secrets.password }} ・・・ 悪い人 ・・・ password= passvalue ・・・ ログ出力・デバッグ情報 ・・・ password= *********** ・・・ ログ出力 ・・・ password= passvalue ・・・ 設定ミスがある場合 静的なシークレット 設定だと 嬉しいなぁ。。
  7. 2-2. GitHub Actions と OIDC の統合 クラウドプロバイダーから有効期限付きのトークンを取得し、ワークフローで使用 OpenID Connect を使ったセキュリティ強化について

    - GitHub Docs ◼ メリット 1. 静的なシークレットの生成不要 2. クラウドプロバイダーの認証・認可の仕組みと統合可能 3. シークレットをローテーションする処理を作る必要なし
  8. 3-1. API Gateway (Proxy) と OIDC を組み合わせたデプロイ OIDC と API

    Gateway を使用し、GitHub Actions の外部でワークフローを認証 Using an API gateway with OIDC - GitHub Docs ◼ メリット ➢ Firewall や Private Network のルーティング変更不要 ◼ デメリット ➢ API Gateway (Proxy) を構成する必要がある
  9. 3-2. Azure 仮想ネットワーク経由でのデプロイ ➢ Azure 仮想ネットワーク内に GitHub-hosted ランナー用の NIC が展開される

    ➢ Azure のほか (接続経路を構成 することで) オンプレミスや他 社クラウドへのデプロイも可 能 About Azure private networking for GitHub-hosted runners in your organization - GitHub Docs
  10. 5. まとめ ◼ GitHub Actions と OIDC の統合 ➢ GitHub

    Actions の自動化機能と OIDC を組み合わせることで、従来の秘密情 報管理の課題を解消し、安全な認証・認可フローを実現できます。 ◼ ランナーの選択 ➢ GitHub-hosted runner と Self-hosted runner の特性を比較し、運用負荷軽減 やセキュリティ要件に応じた最適な選択について確認しました。 ◼ プライベートネットワークへのデプロイ ➢ GitHub-hosted runner を活用して、プライベートネットワーク内のリソース へ安全にデプロイするための具体的な手法確認しました。