Slide 1

Slide 1 text

現場からみた Azure リファレンスアーキテクチャ 答え合わせ Kuniteru Asami Masahito Morishima Yoshimasa Katakura Yui Ashikaga Session Code : JPCTT09

Slide 2

Slide 2 text

登壇者紹介 浅見 城輝 Kuniteru Asami 株式会社 pnop Microsoft MVP for Azure 森島 政人 Masahito Morishima 株式会社 pnop Microsoft MVP for Azure 片倉 義昌 Yoshimasa Katakura 株式会社 pnop Microsoft MVP for Azure 足利 惟 Yui Ashikaga 株式会社 pnop Microsoft MVP for Azure

Slide 3

Slide 3 text

セッション概要  Azureでシステムを構築する場面において、Azure Architecture Centerで提供されているリファレンスアーキテクチャはとても参考 になります。しかしプロジェクトにおける様々な要件により、リ ファレンス通りにはできないこともあります。  そこで本セッションでは、Webアプリケーションを対象としたリ ファレンスアーキテクチャを題材に、Azureスペシャリストが数多 のプロジェクトで経験してきた考慮点とそれに対する解決案や、皆 さんが遭遇した課題についてお話ししましょう。

Slide 4

Slide 4 text

Azure Architecture Center とは?

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

https://docs.microsoft.com/ja-jp/azure/architecture/reference-architectures/app-service-web-app/basic-web-app

Slide 8

Slide 8 text

このアーキテクチャの特長  PaaSのみで構成されたWebアプリケーションアーキテクチャ  フルマネージドなのでOSの管理などは必要ない(作りたいものに注力できる)  PaaSで構成されているためスケールが容易

Slide 9

Slide 9 text

現場からみた課題

Slide 10

Slide 10 text

現場で言われること  通信のプライベート化  Webサーバーからバックエンドサービス(Key VaultやSQL DBなど)へは内部通信を制限したい  アウトバウンド通信の制限  Webサーバーから外に出ていく通信を制限したい、送信元IPアドレスも固定化したい  Azureリソースへのアクセス制御  いろいろなリソースへのアクセスに使う資格情報の管理から開放されたい  その他にも  マルチリージョン構成にするにはどうしたらいいか  リトライ処理がなぜ必要なのか  特定サービスの監視がしたいが、どのメトリックをみればいいのか  などなど…

Slide 11

Slide 11 text

通信のプライベート化

Slide 12

Slide 12 text

通信のプライベート化

Slide 13

Slide 13 text

とある現場における通信のプライベート化の要件  Azureで利用しているPaaS(Key VaultやSQL DB)はインターネット からアクセスさせたくない  各PaaSのFirewall設定を細かく制御するのは大変  Webアプリケーションのログには秘 匿情報が含まれているため プライベートネットワークを経由し て保存したい  オンプレミスからも安全にPaaSを利 用したい (インターネット経由させたくない)  ExpressRouteのMicrosoftピアリングではなく

Slide 14

Slide 14 text

選択肢 Service Endpoint 特定の仮想ネットワークサブネットか らのみ、PaaSへのアクセスを許可する Private Endpoint 個々のPaaSが仮想ネットワーク内に専 用のプライベートIPアドレスを持つ Subnet Service Endpoint Subnet Virtual Machine Subnet Private Endpoint Subnet Virtual Machine Virtual Machine

Slide 15

Slide 15 text

App Service(Web App)のVNET統合 Web AppをVirtual Networkに統合することで、VNET内の他リソースにプライ ベートIPアドレスでアクセスが行える (2022年4月からはBasic SKUでも利用可能!) Subnet Subnet Virtual Network VNET統合 App Service web app App Service Plan Virtual Machine

Slide 16

Slide 16 text

Subnet 現場ではこうしました Internet Azure Active Directory Azure DNS Private Endpoint Subnet Virtual Network VNET統合 App Service web app App Service Plan Azure Key Vault Logical server Database Database Azure Private DNS (privatelink.database.windows.net privatelink.vaultcore.azure.net privatelink.monitor.azure.com etc..) Azure Monitor Private Link Scope Azure Monitor Log Analytics Metric data Audit and Diagnostic logs Metric data Audit and Diagnostic logs VNETリンク プライベート リンク Application Insights on-premises GatewaySubnet Metric data Audit and Diagnostic logs

Slide 17

Slide 17 text

プライベート接続を行わない場合のその他考慮事項  SNATポートの枯渇  Azure PaaSや、インターネット外部へのアクセスは全てAzureプラットフォーム側のLoad Balancerを経由する  その際にAzureが管理しているPublic IP Addressを使用するが、同時接続が行えるSNATポー ト数に制限がある  App Serviceの場合は1インスタンスあたり最低128ポートが用意されており、それを超えた 場合にPaaSや外部サービスに接続できなくなる場合がある Azure SQL DatabaseやAzure StorageなどのAzure PaaSに対してApp Serviceから多くの接続が ある場合に、Load BalancerのSNATポートが枯渇して接続の不具合が発生してしまうことが しばしばあるが、App ServiceからAzure PaaS へのアクセスをService Endpointあるいは Private Endpoint経由でにすることで、この制限を回避することができる。

Slide 18

Slide 18 text

Azureリソースへの アクセス制御

Slide 19

Slide 19 text

Azureリソースへのアクセス制御

Slide 20

Slide 20 text

現場での課題  パスワードはどこに保存したらよいですか?  Key Vault ってどうやって使ったらよいですか?  アプリケーション構成設定ファイル (Web.config など) にパスワー ドが記述されている  権限の管理が正しくされていない 我々の視点

Slide 21

Slide 21 text

現場ではこうしました その1  アプリの構成ファイルからWeb App の構成へ  サブスクリプションにアクセスで きる人しか参照できない  サブスクリプションにアクセスで きれば見られてしまう  権限の管理まではできていない アプリ Web.config ApplicationSettings.json

Slide 22

Slide 22 text

現場ではこうしましたその2  マネージドIDを有効にしパスワードを無くす  Web App の マネージドIDを利用することによって、パスワードな しでリソースにアクセスできる  Storageに読み取り権限を付与する  SQL Database の ユーザーの連携する  Key Vault リファレンスを使う 1. マネージドID 2. アクセス権付与(RBAC) 3. アクセス SP

Slide 23

Slide 23 text

Build 2022 サービスコネクターがGAしました  説明したような設定を簡略化できる 設定 ✓ 接続先(BLOB/Cosmos/SQL..) ✓ 接続名 ✓ 接続先の情報 ✓ クイライアントタイプ(.NET/Java) 認証 ✓ システムマネージドID ✓ ユーザーマネージドID ✓ 接続文字列(KVに格納するか) ✓ サービスプリンシパル 設定した結果

Slide 24

Slide 24 text

アウトバウンド通信 の制限

Slide 25

Slide 25 text

アウトバウンド通信の制限 外部サービス Internet

Slide 26

Slide 26 text

とある現場におけるアウトバウンド通信の要件  決まった 1 つの IP アドレスから だけ送出したい  Azure App Service などから SaaS など 外部のサービスを利用する場合に、 外部サービス側では特定の IP アドレスからのみ アクセスを受け入れるため  App Service からアクセスできる サイトを URL で制限したい  App Service の送信 IP アドレス  いくつかの所定の IP アドレスから送信される  IP アドレスを 1 つに固定するための 選択肢  VNet NAT 経由での送信  Azure Firewall 経由での送信

Slide 27

Slide 27 text

Subnet Public IP IP Prefix Virtual Network Firewall 選択肢 VNet NAT インターネットへの送信 IP を 1 つまたは所定の複数に固定できる Azure Firewall ネットワーク間通信のフィルタリング や SNAT 機能などを有する Subnet Public IP IP Prefix NAT Virtual Network O microsoft.com O google.com X DANGER.com

Slide 28

Slide 28 text

現場ではこうしました 外部サービス Internet Subnet Public IP Virtual Network Firewall

Slide 29

Slide 29 text

まとめ

Slide 30

Slide 30 text

まとめ  現場ではこうしました  通信のプライベート化:Private Endpoint で内部通信を明示的に (ER経由の接続もOK)  アウトバウンド制御:Azure Firewall で通信内容含め細かく制御  Azureリソースへのアクセス制御:Managed Identities を活用  今回紹介しきれなかったトピック  開発環境の準備について  Infrastructure as Code (環境の自動化)  DevOps  まだまだ語りたいアーキテクチャはたくさん  IaaS中心の構成とか、IoTとか

Slide 31

Slide 31 text

今回紹介した要素が含まれているリファレンスアーキテクチャ Azure SQL Database への Web アプリのプライベート接続 https://docs.microsoft.com/ja-jp/azure/architecture/example- scenario/private-web-app/private-web-app PaaS データストアへのプライベート接続を使用した ネットワーク強化 Web アプリケーション https://docs.microsoft.com/ja-jp/azure/architecture/example- scenario/security/hardened-web-app

Slide 32

Slide 32 text

株式会社pnop 株式会社pnopはMicrosoft Azureに関する課題解決のプロフェッショナル集団です。 皆様のプロジェクトに、 Azure経験豊富なエンジニアがノウハウを提供いたします。 Azure アーキテクチャ 設計相談 Azure 運用設計 相談 Azure開発 Azure 環境構築 Azure トラブル シューティング Azure トレーニング 新規システムを Azureで稼働させしたい 既存システムを Azureに移行したい パッケージ・ソリューション をAzureに対応したい Azureを利用することで システムコストを下げたい Azureで安全・安心な システムを提供したい Azureを利用することで 運用担当者の負担を軽減し たい Azureを利用しているうえで 困っていることを解決した い Azureのスキルを向上したい Azureに関するご相談・お問い合わせ:[email protected] https://www.pnop.co.jp