Azure PowerShell でデータセンターの IP アドレス帯を一括登録する


前回に引き続き NSG の Augmented rules 絡みです。

Azure PowerShell でデータセンター IP レンジをダウンロードしてきて、リージョン事に一括登録するのをサクっと書いてみました。
先の記事でも書いた通り IP レンジは更新される可能性があるので、Azure Automation とかで毎週実行するように仕込むのは必須で。

あとは、ぱっと確認した限り、Augmented rules は SourceAddressPrefix / DestinationAddressPrefix ともに 2000 個ずつが上限のようで、既に Azure のデータセンター IP レンジが 1970 なので、今以上に増えたら溢れそうでした…。おとなしく Service Tags を使ったほうがいいかもしれませんねー。

# 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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です