Slide 1

Slide 1 text

Azure App Service for Containerを 使ったセキュアな構成とCI/CD Qiita Night ~Azure~ 2023/04/28 Shingo Kawahara 1

Slide 2

Slide 2 text

自己紹介 • 河原 慎吾 Microsoft MVP for Azure • 株式会社セゾン情報システムズ • R&D組織運営 • クラウド/コンテナ担当 • CCoE Lead • 経歴 • VMwareベースの自社クラウド構築/運営 ⇓⇓⇓ • パブリッククラウド活用推進、組織運営 2

Slide 3

Slide 3 text

Qiita • Azure中心に書き溜めているので参考になればうれしいです! • https://qiita.com/shingo_kawahara • フォローお待ちしております♪ 3

Slide 4

Slide 4 text

なぜこのテーマ? 4 Azure App Service for Containerを使った セキュアな構成とCI/CD PaaSをフル活用した構成でも、厳しいセキュリティ要件を満たせる構成 が可能なことをお伝えしたい!!

Slide 5

Slide 5 text

全体構成 5

Slide 6

Slide 6 text

全体構成 6 vNet Japan East SQL Database Container Registry App Service for Container (FrontEnd) Private Endpoint Log Analytics Storage Account PrivateLink Subnet (Front) Integration Subnet (Front) Private Endpoint PrivateLink Subnet (Back) Integration Subnet (Back) App Service for Container (BackEnd) Private Endpoint PrivateLink Subnet (DB) Private Endpoint PrivateLink Subnet (ACR) Audit/AppLogなど各種ログ Express Route S2S VPN等 DevOps pull VMSS Self-hosted Subnet pull push アプリケーションビルド デプロイ CI CD CD CI CD

Slide 7

Slide 7 text

Azure App Service (Web Apps) 7

Slide 8

Slide 8 text

Azure App Service (Web Apps) • インフラストラクチャを管理することなく、任意のプログラミ ング言語で Web アプリケーション、モバイル バックエンド、 および RESTful API を構築し、ホストするためのサービスで す • AWSでいうところのElastic Beanstalkにあたります。 • 利用可能な言語は以下 • ASP.NET • ASP.NET Core • Java • Ruby • Node.js • PHP • Python 8

Slide 9

Slide 9 text

Azure App Service (Web Apps) • 隠ぺいされた形でロードバランサーが配備されているため、負 荷分散が可能 • 手動、自動スケーリングが可能(月末だけWebサーバを増やし たり、負荷に応じて自動で増やしたり) • ブルーグリーンデプロイメントが可能 9

Slide 10

Slide 10 text

Azure App Service (Web Apps) • App Service for Windows • App Service for Linux • App Service for Containers • 任意のカスタムコンテナーをWebアプリケーションとしてデプロイ可能 10

Slide 11

Slide 11 text

Azure Container Registry 11

Slide 12

Slide 12 text

コンテナーレジストリー • コンテナイメージの格納先は3つから選択できます • Azure Container Registry • Docker Hub • プライベートレジストリ • Azureメインで利用する場合はAzure Container Registryが選択肢になる ことが多いです(後述するプライベートエンドポイントなどはACR利用が 前提となる) • プライベートエンドポイントを活用する場合は、サービスレベル Premiumの利用が必要です。 12

Slide 13

Slide 13 text

Secure Network 13

Slide 14

Slide 14 text

vNet Integration(仮想ネットワーク統合) • App Serviceから仮想ネットワーク内のリソースにアクセスすることができるようになります 14 vNet App Service for Container Private Endpoint Integration Subnet (Front) Private Endpoint PrivateLink Subnet (ACR) Express Route S2S VPN等 pull Container Registry オンプレサーバー Japan East • ExpressRouteやS2S VPNを介して、オンプレのリソースへのアクセスも可能 • 統合したサブネットはvNet Integration専用サブネットになるため、VM等の他のリソー スは配置できない(プライベートエンドポイントサブネットは共用できる)

Slide 15

Slide 15 text

プライベートエンドポイント • サブネット内にプライベートIPを持たせることで、vNet内やオンプレから直接PaaSにア クセスすることが可能 15 vNet SQL Database Private Endpoint PrivateLink Subnet (Back) Private Endpoint Integration Subnet (Back) App Service for Container (BackEnd) Private Endpoint PrivateLink Subnet (DB) Express Route S2S VPN等 10.0.0.5 • PaaSに対してプライベートアクセスさせるためには必須の仕組みです。 • 似た仕組みでサービスエンドポイントというものがあります。

Slide 16

Slide 16 text

サービスエンドポイント • サービスエンドポイントはプライベートIPを持たせるのではなく、PaaSへのルーティング設定が 追加されることに違いがあります 16 • プライベートIPは持っていないため、オンプレから直接アクセスすることはできません。対象 vNetの中からの通信の場合はインターネット経由ではなくサービスエンドポイント経由になるイ メージです。 • プライベートエンドポイントは有料ですが、サービスエンドポイントは無料です。 https://learn.microsoft.com/ja-jp/azure/virtual-network/virtual-network-service-endpoints-overview

Slide 17

Slide 17 text

CI/CD 17

Slide 18

Slide 18 text

Azure DevOps Services • 開発に必要なツール群の総称。今回はPipelinesをピックアップしてご紹介します • GitHub Actionsでも可能です 18 https://azure.microsoft.com/ja-jp/products/devops

Slide 19

Slide 19 text

Azure DevOps Services • アプリケーションビルドやコンテナイメージのpush、 App Serviceへのデプロイといった一連の流れをyaml ファイルに記載することでCI/CDを実現することが可 能です。 • 処理を実行する環境(パイプライン実行エージェン ト)は3種類から選択可能 19 https://azure.microsoft.com/ja-jp/products/devops Node.jsインストール Nuxt.jsインストール ビルド Dockerインストール

Slide 20

Slide 20 text

パイプライン実行エージェント • Microsoft によってホストされるエージェント • Microsoftによってホストされるエージェントを利用する • 最初から様々なツールがインストールされた状態で利用可能 • vNet内に入れることができないため、閉ざされた環境では利用できないことがある • 例)エージェント → ACRへのdocker pushは、ACRがインターネットからのアクセス拒否しているため利用できない • セルフホステッドエージェント • 仮想マシン上にエージェントをインストールして利用する方法 • 自由度が高く一度セットアップすればその状態でずっと利用できる • OSや各種ツールのバージョンアップなど管理が必要なのが欠点 • Azure Virtual Machine Scale Set エージェント • VMSSにエージェントをインストールして利用する方法 • 自動スケーリングが可能なため、使ってないときは0ノードにすることでコスト節約が可能 • 毎回一からのセットアップが必要なため、パイプライン実行に時間がかかるのが欠点 • 例)Dockerが必要な場合は毎回Dockerインストールから必要 20

Slide 21

Slide 21 text

パイプライン実行エージェント 21 vNet Japan East Container Registry Private Endpoint PrivateLink Subnet (ACR) VMSSエージェント Self-hosted Subnet push セルフホステッド エージェント push Microsoft エージェント IP制限により アクセス不可 • 各エージェント利用時のイメージ図です。要件に応じて選択します。

Slide 22

Slide 22 text

まとめ 22

Slide 23

Slide 23 text

全体構成 23 vNet Japan East SQL Database Container Registry App Service for Container (FrontEnd) Private Endpoint Log Analytics Storage Account PrivateLink Subnet (Front) Integration Subnet (Front) Private Endpoint PrivateLink Subnet (Back) Integration Subnet (Back) App Service for Container (BackEnd) Private Endpoint PrivateLink Subnet (DB) Private Endpoint PrivateLink Subnet (ACR) Audit/AppLogなど各種ログ Express Route S2S VPN等 DevOps pull VMSS Self-hosted Subnet pull push アプリケーションビルド デプロイ CI CD CD CI CD

Slide 24

Slide 24 text

まとめ • PaaSを利用する場合でも、閉域に閉じた構成をとることが可能です。 • どこまでの構成にするかは要件による • CI/CDも閉じた環境で行う場合は、セルフホステッドエージェントを活用 することで対応可能です。 • セキュア構成にする場合は、コストも変わってくるので注意が必要です。 • 例)ACRのPremiumレベル、Private Endpoint利用料 etc 24

Slide 25

Slide 25 text

おまけ 25

Slide 26

Slide 26 text

Azure Open AI Service • 今回のセキュアネットワーク構成は、Azure Open AI Serviceにおいても利用可能です。 • プライベートエンドポイントはリージョンを跨ぐことができるため、東日本リージョンvNet から米国東部リージョンのOpen AI Serviceにセキュアに接続する構成が可能になります。 • 当社ではこの構成で全社員向けに環境を公開しています。 26 vNet Japan East Private Endpoint PrivateLink Subnet Integration Subnet (Front) App Service for Container Azure Open AI Service Web Socket ※米国東部リージョン

Slide 27

Slide 27 text

Azure Open AI Service 27