More Related Content
Similar to Azure Network Security Group(NSG) はじめてのDeep Dive (20)
More from Yoshimasa Katakura (6)
Azure Network Security Group(NSG) はじめてのDeep Dive
- 1. Azure Network Security Group (NSG)
はじめてのDeep Dive
2019/6/29
Interact 2019
Yoshimasa Katakura (@yo_ta_n)
#msinteract19 #DD02
- 2. 自己紹介
片倉 義昌 (かたくら よしまさ)
(株)pnopで働いてます(2015~)
Azureコンサルティングとかしてます
元インフラエンジニア、プログラマ(C, ASM)
Microsoft MVP for Azure (2017~)
Copyright© 2019, Y.Katakura All Rights Reserved.
2
yoshimasa.katakura@yo_ta_n
はい次12345678910
https://qiita.com/yotan
https://zakki.nya-n.net
- 3. JAZUG のご紹介
Japan Azure User Group ( 略称 : じゃずゆーじー)
コミュニティ活動概要
Microsoft Azure を通じて、技術、交流、実ビジネスを楽しむ
“ちょっと興味がある=ゆるふわな方“ から “実ビジネスで使うんだよね” な
方まで大歓迎!ゆるふわコミュニティです。
Facebook グループ運営中 「JAZUG」で検索!
Twitter ハッシュタグ:#jazug
一緒に運営してくれるメンバーを募集中です。
コミュニティイベントの開催は「connpass」で告知しています
https://jazug.connpass.com/
Copyright© 2019, Y.Katakura All Rights Reserved.
3
- 6. まずはAzure IaaSとPaaSのおさらい
Copyright© 2019, Y.Katakura All Rights Reserved.
6
Office 365
Dynamics 365
Microsoft Azure
オンプレミス IaaS(仮想マシン) PaaS SaaS
アプリケーション
データ
ランタイム
ミドルウェア
OS
仮想化技術
サーバー
ストレージ
ネットワーク
仮想化技術
サーバー
ストレージ
ネットワーク
OS
データ
ランタイム
ミドルウェア
アプリケーション
お客様 マイクロソフト
お客様によるセキュリティ、運用管理の責任
- 12. Network Security Group(NSG)って?
Virtual Network内外でL4レベルでの通信制御が行えるFirewall的な機能
【例】
TCP/80(HTTP), TCP/443(HTTPS)はインターネットからアクセス許可する
TCP/22(SSH), TCP/3389(RDP)は特定の拠点IPアドレスからのみアクセス可能にする
Copyright© 2019, Y.Katakura All Rights Reserved.
12
•HTTP, FTP, IRC, SSH, DNSL7:Application
•SSL, SSH, IMAP, FTP, MPEG, JPEGL6:Presentation
•API’s, Sockets, WinSockL5:Session
•TCP, UDPL4:Transport
•IP, ICMP, IPSec, IGMPL3:Network
•Ethernet, PPP, Switch, BridgeL2:Datalink
•HardwareL1:Physical
- 15. NSGに設定するルールについて
ソース(送信元)
Any(全て)、IP Address(CIDR形式、複数記述可能)、
サービスタグ、Application Security Group名
ソースポート範囲
複数記述可能、5000-5100等の範囲指定も可能
通常指定しない(*にする)場合が多い
宛先(送信先)
Any(全て)、IP Address(CIDR形式、複数記述可能)、
サービスタグ、Application Security Group名
宛先ポート範囲
複数記述可能、5000-5100等の範囲指定も可能
プロトコル
Any, TCP, UDP
アクション
許可、拒否
優先度
100~4096の範囲で指定、値が小さい程高優先に
なる
名前
任意の名前、受信セキュリティ規則、送信セキュ
リティ規則、デフォルトルールの名前と重複して
はいけない
後から変更不可
15
Copyright© 2019, Y.Katakura All Rights Reserved.
- 16. NSGルールで指定可能なサービスタグ
VirtualNetwork
AzureLoadBalancer
Internet
AzureTrafficManager
AzureCloud / AzureCloud.[RegionName]
Storage / Storage.[RegionName]
Sql / Sql.[RegionName]
AzureCosmosDB / AzureCosmosDB.[RegionName]
AzureKeyVault / AzureKeyVault.[RegionName]
EventHub / EvnetHub.[RegionName]
ServiceBus / ServiceBus.[RegionName]
MicrosoftContainerRegistry / MicrosoftContainerRegistry.[RegionName]
AzureContainerRegistry / AzureContainerRegistry.[RegionName]
AppService / AppService.[RegionName]
AppServiceManagement / AppServiceManagement.[RegionName]
ApiManagement
AzureConnectors / AzureConnectors.[RegionName]
GatewayManager
AzureDataLake
AzureActiveDirectory
AzureMonitor
ServiceFabric
AzureMachineLearning
BatchNodeManagement
16
Copyright© 2019, Y.Katakura All Rights Reserved.
https://docs.microsoft.com/ja-jp/azure/virtual-network/security-overview
- 20. 仮想ネットワーク
サブネット1
Web-1 Web-2
DB-1 DB-2
NSG
192.168.0.10 192.168.0.11
192.168.0.20 192.168.0.21
192.168.0.10と192.168.0.11はTCP/80,443を許可
192.168.0.20と192.168.0.21はTCP/1433を許可
Application Security Group(ASG)とは(1)
用途の異なる(疎通条件の異な
る)仮想マシンに対してIPアドレ
スやセグメントの指定をせずに
NSGのルールを簡素に書く手段
同一サブネットに複数の用途を
持つ仮想マシンが同居している
場合、IPアドレスをNSGに直接
記述するなど煩雑だった
20
Copyright© 2019, Y.Katakura All Rights Reserved.
- 24. Service Endpoint
各種PaaS側のFirewall機能で特定のSubnetからの通信を許可させる
Storage Account、SQL Databaseなど、インターネット向けのエン
ドポイントを持っているPaaSの接続制限を行う機能(あまりNSGと
は関係ない)
VMから各PaaSへ接続するときのアクセス先(エンドポイント)のホス
ト名やURLは今までと一緒
ストレージアカウントだったら
https://storageaccount01.blob.core.windows.net/
SQLDBだったら
sqldb01.database.windows.net:1433
Copyright© 2019, Y.Katakura All Rights Reserved.
24
https://docs.microsoft.com/ja-jp/azure/virtual-network/virtual-network-service-endpoints-overview
- 25. Service Endpoint対応サービス
General Availability(一般公開)
Azure Storage
Azure SQL Database, Data Warehouse
Azure Database for PostgreSQL, MySQL, MariaDB
Azure Cosmos DB
Azure Key Vault
Azure Service Bus
Azure Event Hubs
Azure Data Lake Store Gen 1
Public Preview
Azure Container Registry
Copyright© 2019, Y.Katakura All Rights Reserved.
25
https://docs.microsoft.com/ja-jp/azure/virtual-network/virtual-network-service-endpoints-overview
- 26. Virtual Network内に配置できるPaaS
各種PaaSをVirtual Network内のリソースにPrivate IP Addressを
使ってアクセス可能にする技術
PaaSの種類によってSubnetに配置する方式としない方式があ
る
App Services(ASE以外)もVirtual Networkと統合して、Private IP
AddressでVM等と通信可能
https://docs.microsoft.com/ja-jp/azure/app-service/web-sites-integrate-with-vnet
Copyright© 2019, Y.Katakura All Rights Reserved.
26
- 29. Azure Cache for Redis
Azure App Service Environment(ASE)
RedisもASEも仮想ネットワーク上に配置できる
29
Copyright© 2019, Y.Katakura All Rights Reserved.
https://azure.microsoft.com/ja-jp/services/cache/
https://docs.microsoft.com/ja-jp/azure/app-service/environment/intro
(Virtual Machine)
(Redis) (ASE)
仮想マシンから閉域網で
App Serviceにアクセス
仮想ネットワーク内か
らRedisにアクセス
- 30. Virtual Networkに配置可能なPaaS一覧
Azure Batch
Azure Application Gateway
Azure Firewall
Azure Cache for Redis
Azure SQL Database Managed
Instance
Azure HD Insight
Azure Databrics
Azure Active Directory Domain
Services
Azure Kubernetes Service
Azure Container Registry
Azure Container Service
API Management
App Service Environment
Azure Logic Apps (ISEのみ)
Azure 専用HSM
Azure Netapp Files
Copyright© 2019, Y.Katakura All Rights Reserved.
30
https://docs.microsoft.com/ja-jp/azure/virtual-network/virtual-network-for-azure-services
- 34. 真打ち登場?Azure Bastion(ばぁすちゃん)
Copyright© 2019, Y.Katakura All Rights Reserved.
34
2019/6/18にSSL経由のRDPおよびSSHが行えるAzure Bastionが
Previewとして爆誕しました。
https://azure.microsoft.com/ja-jp/updates/azure-bastion-now-available-for-preview/
仮想マシンのRDP, SSHポートは外部公開しなくて良くなります。
クライアントPCからはブラウザベースで仮想マシンにRDP,SSH
が行えるようになります。
試用記事はこちら
https://zakki.nya-n.net/?p=274
- 43. 回避策
Azure観点
NSGの送信ルールで適切なサービスに対応したサービスタグ宛の通信を許容しましょう
• Log Analyticsだったら「AzureMonitor」を空ける。
• 利用サービスと対応するサービスタグが不明の場合は「AzureCloud」の指定も可
• VMからダイレクトにStorage BLOBを使っているケースでは「Storage.japaneast」とリージョン指定
するのも良し
• Azure内の通信は接続先が例えPublic IP Addressであっても、Azureデータセンター(リージョン間含む)
から外部インターネットに通信が出てしまう事はありません
OS観点
NSGで接続先のIPアドレスを指定して個別に空けましょう
NSGの送信規則の1レコードにはCIDR指定ができる他複数のIPアドレスが列挙できます
「IPアドレスなんて知らないよう」という場合はAzure Firewallを導入することで、
Outboundの通信をFQDNで制御できるので、こちらを検討しましょう。
Copyright© 2019, Y.Katakura All Rights Reserved.
43
- 44. NSG Tips 3
Azure Application Gateway / Azure Load Balancerを経由させる場合
Copyright© 2019, Y.Katakura All Rights Reserved.
44
- 45. NSGでなにあける?
Azure Load Balancer (Internal)
• 接続元仮想マシンNICのIPアドレス(Private)が送信元となる
• 他に168.53.129.16から正常性プローブのアクセスがあるのでサービスタグ「AzureLoadBalancer」
は閉じない事
Copyright© 2019, Y.Katakura All Rights Reserved.
45
(Load Balancer)
(192.168.10.4)
(192.168.10.10)
(192.168.10.11)(192.168.0.4)
Source Address : 192.168.0.4
Probe
(168.63.129.16)
- 46. NSGでなにあける?
Azure Load Balancer (External)
Copyright© 2019, Y.Katakura All Rights Reserved.
46
(Load Balancer)
(192.168.10.10)
(192.168.10.11)
Source Address : 124.41.95.xxx
(PIP)
(13.78.68.128)
(外部PC)
(124.41.95.xxx)
Probe
(168.63.129.16)
• 接続元PCのWAN側IPアドレス(Public)が送信元となる
• 他に168.53.129.16から正常性プローブのアクセスがあるのでサービスタグ「AzureLoadBalancer」
は閉じない事
- 47. NSGでなにあける?
Azure Application Gateway(Internal)
Copyright© 2019, Y.Katakura All Rights Reserved.
47
(192.168.10.10)
(192.168.10.11)
(192.168.5.4)
Source Address : 192.168.5.0/24
(192.168.0.4)
Probe
(192.168.5.0/24)
• Application Gatewayの配置してあるSubnet内に配置されたInstanceが送信元となるため、Subnet
のアドレス範囲が送信元になる(上記例では実際には192.168.5.5~)
• 正常性プローブもSubnet内に配置されたInstanceからアクセスされる
- 48. NSGでなにあける?
Azure Application Gateway(External)
Copyright© 2019, Y.Katakura All Rights Reserved.
48
(192.168.10.10)
(192.168.10.11)
(192.168.5.4)
Source Address : 192.168.5.0/24
(PIP)
(13.78.68.128)
(外部PC)
(124.41.95.xxx)
Probe
(192.168.5.0/24)
• Internalと同様に、Application Gatewayの配置してあるSubnet内に配置されたInstanceが送信元と
なるため、Subnetのアドレス範囲が送信元になる(上記例では実際には192.168.5.5~)
• 正常性プローブもSubnet内に配置されたInstanceからアクセスされる
- 49. (参考)Firewallでなにあける?
Azure Application Gateway (to App Services)
Copyright© 2019, Y.Katakura All Rights Reserved.
49
(192.168.5.4)
Source Address : Don’t Care
(Web Apps)
(192.168.0.4)
• Public IP Addressを持たないApplication GatewayからのPaaSアクセス時には接続元IPアドレスは不定となる
(実際には各リージョン毎の仮想マシンに割り当てられたアドレスのうちどれかが割り当てられるが、専有ア
ドレスではない)
• App ServicesのサービスエンドポイントのGAが期待されている(現在はLive Preview)
- 50. (参考)Firewallでなにあける?
Azure Application Gateway (to App Services)(2)
Copyright© 2019, Y.Katakura All Rights Reserved.
50
(192.168.5.4)
Source Address : 13.78.68.128
(Web Apps)(PIP)
(13.78.68.128)
(外部PC)
(124.41.95.xxx)
• Application GatewayがPublic IP Addressを持っていると、接続元IPアドレスはそれになる。
• Application Gateway V2からはPublic IP Addressを固定化する事が可能になった
- 52. Express Route, VPN接続の場合のNSG
Copyright© 2019, Y.Katakura All Rights Reserved.
52
(Site to Site VPN)
(Express Route
Private Peering)
• GatewaySubnetにはNSGが適用できない(残念)
• オンプレミスからの接続をGatewaySubnetで一括して特定のポートに絞るといった事は
出来ないので、各SubnetのNSGで設定する必要がある
- 53. Public IP Addressを持たないVM
Copyright© 2019, Y.Katakura All Rights Reserved.
53
(PIP)
(13.78.68.128)
Source Address : 13.78.68.128
Source Address : Don’t Care
• Public IP Addressを持たないVMもインターネットに出ていける。この場合の接続元IPアドレスは不定となる
(実際には各リージョン毎の仮想マシンに割り当てられたアドレスのうちどれかが割り当てられるが、専有ア
ドレスではない)
• Public IP Addressを持たないVMだからといって、NSGの送信セキュリティ規則を疎かにしてはいけない
- 55. NSGのプロトコル指定に新たに「ICMP」「ESP」が増えました!
API Versionは2019-04-01からとなっており、本日時点ではAzure CLIと
REST API直のみ対応している模様
(Power ShellとAzure Portalはもう少し待とう!)
https://github.com/Azure/azure-rest-api-specs/blob/master/specification/network/resource-
manager/Microsoft.Network/stable/2019-04-01/networkSecurityGroup.json
Azure CLIからは以下の感じでルール追加が可能です
$ az network nsg rule create --resource-group NetworkEnv01 ¥
--nsg-name azure-common-nsg --access Allow ¥
--destination-address-prefixes "*" --destination-port-ranges "*" ¥
--direction Inbound --name Allow_ICMP --priority 1005 ¥
--protocol ICMP --source-address-prefixes 124.41.95.XXX ¥
--source-port-ranges "*"
NSGのプロコル指定が増えました
Copyright© 2019, Y.Katakura All Rights Reserved.
55
Special Thanks to @syuheiuda