前回に引き続き NSG の Augmented rules 絡みです。
Azure PowerShell でデータセンター IP レンジをダウンロードしてきて、リージョン事に一括登録するのをサクっと書いてみました。
先の記事でも書いた通り IP レンジは更新される可能性があるので、Azure Automation とかで毎週実行するように仕込むのは必須で。
あとは、ぱっと確認した限り、Augmented rules は SourceAddressPrefix / DestinationAddressPrefix ともに 2000 個ずつが上限のようで、既に Azure のデータセンター IP レンジが 1970 なので、今以上に増えたら溢れそうでした…。おとなしく Service Tags を使ったほうがいいかもしれませんねー。
NSG に設定できる上限が 4000 までに引き上げられたらしいので、ひとまずは大丈夫そうな感じ。
# IP Range をダウンロード $DownloadUri = 'https://www.microsoft.com/en-in/download/confirmation.aspx?id=41653' $DownloadPage = Invoke-WebRequest -Uri $DownloadUri $XmlFileUri = ($DownloadPage.RawContent.Split('"') -like 'https://*PublicIps*')[0] $Response = Invoke-WebRequest -Uri $XmlFileUri [[xml]]$XmlResponse = [System.Text.Encoding]::UTF8.GetString($Response.Content) $Regions = $XmlResponse.AzurePublicIpAddresses.Region # 既存の NSG を取得 $NSG = Get-AzureRmNetworkSecurityGroup -Name 'NSG 名' -ResourceGroupName 'リソース グループ名' # もしくは空の NSG を作成 # $NSG = New-AzureRmNetworkSecurityGroup -Name 'NSG 名' -ResourceGroupName 'リソース グループ名' -Location 'リージョン名' # 各リージョンの Inbound ルールを追加 $Priority = 4000 $Regions | foreach{ $NSG = Add-AzureRmNetworkSecurityRuleConfig ` -Name From_$($_.Name) ` -NetworkSecurityGroup $NSG ` -Protocol * ` -SourcePortRange * ` -DestinationPortRange * ` -SourceAddressPrefix $_.IpRange.Subnet ` -DestinationAddressPrefix * ` -Access Allow ` -Priority $Priority ` -Direction Inbound $Priority++ } # 各リージョンの Outbound ルールを追加 $Priority = 4000 $Regions | foreach{ $NSG = Add-AzureRmNetworkSecurityRuleConfig ` -Name To_$($_.Name) ` -NetworkSecurityGroup $NSG ` -Protocol * ` -SourcePortRange * ` -DestinationPortRange * ` -SourceAddressPrefix * ` -DestinationAddressPrefix $_.IpRange.Subnet ` -Access Allow ` -Priority $Priority ` -Direction Outbound $Priority++ } # 設定を反映 Set-AzureRmNetworkSecurityGroup -NetworkSecurityGroup $NSG