0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Azure サンドボックス環境のIPアドレスを調べてみた

Last updated at Posted at 2023-04-15

Azure AutomationのRunbook実行は、Azure実行基盤であるサンドボックス環境が使用されます。

今回は、サンドボックス環境のIPを調べたい方や、NSGやFWでガチガチに環境固めていて、必要最低限のIPのみ許可したい方向けに、サンドボックス環境のIP調査方法について説明します。

はじめに

なぜ、サンドボックス環境のIPを調べることになったか、簡単に経緯をお話しします。

あるプロジェクトで、ACR(Azure Container Registry)のリポジトリ登録されているイメージを、Azure Automationを使用して週次でバックアップ用ACRにコピーする、というバックアップ環境の整備を実施していた際に、スクリプトのGetコマンドが動作しないという問題が発生しました。

ACRの診断ログから、Runbookを実行した際に138.91.14.162というIPがACRに対して通信している形跡がありました。このアドレスは、リソースやVMで用いられているものではなかったので、MSに問い合わせてみたところ。。。

本IPは東日本のAzure実行基盤(サンドボックス環境)のWindowsサーバーインスタンスIPとのことでした。どうやら、Runbookを使用する場合、本サンドボックス環境が使用されるようです。

サンドボックス環境のIPアドレスは、定期的に変更する

上記MSに行った質問には、実は続きがあり。。
サンドボックス環境のIPは、東日本公開IPに含まれるものから不定期に変更して決まるとのことでした。

では、「東日本公開IP」を全部許可すればいいのか。。
という訳にもいかないのです!
この公開されているIPアドレス一覧は、定期的にこうしんされているようでした。。
(試しに、2週間前後の差分をチェックすると、2件アドレスレンジが追加されていました。。)

ということで、Automationを実行するサンドボックス環境のIPアドレスを知る必要が発生したという経緯があり、アドレスを取得するスクリプトの開発を行いました。

サンドボックス環境のIPアドレスを取得

今回は、サンドボックス環境のIPアドレスを取得する、PowerShellスクリプトを準備しました。

スクリプト実行時のサンドボックス環境のIPアドレスを取得してきて、現在NSGで許可されているIPアドレスと比較し、IPが不足していたら連絡する、という内容になっています。

try {
    $srcAcrId = Get-AutomationVariable -Name "acr_id_from"
    Write-Output "以下のACRのネットワーク情報を取得します:" $srcAcrId
    $reg = Get-AzContainerRegistry -ResourceId $srcAcrId
    $currentallowIp = $reg.NetworkRuleSet.IpRules.IPAddressOrRange
    Write-Output "現在許可されているIPアドレスは以下の通りです" $currentallowIp
}
catch {
    Write-Output "エラー:現在のACR情報の取得に失敗しました"
    $returncode = 1
    Write-Output $returncode
    Write-Error
}
 
 
try {
    $latestIp = (Invoke-RestMethod 'https://api.ipify.org?format=json').ip
    Write-Output "許可する必要がある最新のIPアドレスは以下の通りです" $latestIp
}
catch {
    Write-Output "最新のIP情報の取得に失敗しました。"
    $returncode = 1
    Write-Output $returncode
    Write-Error
}
 
$dif = $currentallowIp | Select-String -SimpleMatch -Pattern $latestIp -Quiet
 
if ($dif -eq $true) {
    Write-Output "現在許可されているIPアドレスは最新です"
}
else {
    Write-Output "サンドボックス環境のIPアドレスに変更があります。各ACRの許可設定から下記IPアドレスを追加してください。"
    Write-Output $latestIp
    $returncode = 1
    Write-Output "終了コード:" $returncode
    Write-Error
}

試しに、このスクリプトを1ヶ月実行してみたところ、1日だけ別のIPに変更し、翌日元のIPに戻ることが数回発生することが確認できました。

閉域環境で必要最低限のIPを許可する必要がある方などの参考になれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?