🏷️

Azure Functions で Azure サービスタグを設定する

に公開

Azure サービスタグとは

Azureのサービスタグ(Service Tags)は、Azureのサービスやリソースに関連するIPアドレス範囲を簡単に管理するための機能です。
ネットワークセキュリティグループ(NSG)やAzure Firewallなどで、特定のAzureサービスへのアクセスを許可・制限する際に使われます。

https://learn.microsoft.com/ja-jp/azure/virtual-network/service-tags-overview?WT.mc_id=MVP_440901

サービスタグのポイント

サービスタグNSGAzure Firewallなどで設定すると、自動的に設定したサービスタグに関連する Azure サービスのIPアドレス一覧を許可したり、拒否したり設定できます。
しかも、IPアドレスの一覧は、自動的に Microsoft によって更新 されます!(これが便利よね)

  • IPアドレスの管理が不要

    • サービスタグを使うことで、Azureのサービスに関連するIPアドレス範囲を個別に指定する必要がなくなります。
  • 自動更新

    • サービスタグはMicrosoftによって自動的に更新されるため、IPアドレスの変更に対応する必要がありません。

ちなみに、Power Platformサービスタグも用意されているため、Power Platform からのみアクセス許可というような設定も可能です。

Azure Functions のネットワークオプション

Azure Functions従量課金プランだと、受信のIP制限が使用できます。
従量課金プランで受信の規則を設定してみます。

https://learn.microsoft.com/ja-jp/azure/azure-functions/functions-networking-options?tabs=azure-portal&WT.mc_id=MVP_440901

下準備 Azure サブスクリプションでリソースプロバイダー登録

Azure サブスクリプション > 設定 > リソースプロバイダー から Microsoft.Network を登録する。
これをしないと、一部のサービスタグしか表示されない。
この設定がわからなくて、小一時間ほどハマってました...

Azure Functions の設定

キャプチャーは従量課金プランの場合。
設定 > ネットワーク > 受信トラフィックの構成 の 公衆ネットワークアクセス をクリックします。

一致しないルールは拒否がデフォルトでもいいんじゃないかなぁと思いながら、拒否を選択します。
優先度が一番低い状態(優先度の数値が大きい)で拒否ルールが設定されます。
あとは、拒否よりも優先度を高く(優先度の数値が小さく)、IPアドレスサービスタグ仮想ネットワークを追加していきます。

項目 設定 備考
アプリのアクセス > 公衆ネットワークアクセス 選択した仮想ネットワークとIPアドレスから有効 受信の規則
サイトのアクセスとルール > 一致しないルールのアクション 拒否 ルールに当てはまらなければブロック

サービスタグでLogicAppsを設定するとこんな感じになります。
これで、LogicAppsIPアドレス範囲しか、このAzure Functionsにアクセスできない(コールできない)ように設定できました。

サービスタグの取得

サービスタグAzureで設定できる以外に、REST APIJSON ファイルで公開されています。
内容見てみると、サービスだけじゃなくて、リージョンでも記載があるので、リージョンが決まっているのであれば、リージョン指定してもいいかもしれないですね。

REST API
https://learn.microsoft.com/ja-jp/azure/virtual-network/service-tags-overview?WT.mc_id=MVP_440901#use-the-service-tag-discovery-api

JSON ファイル
https://learn.microsoft.com/ja-jp/azure/virtual-network/service-tags-overview#discover-service-tags-by-using-downloadable-json-files

##さいごに
Azure サービスタグを設定してみました。
最低限のアクセス制限として、サービスタグは有効だと思います。
設定すれば、Microsoft が自動更新してくれるのも、メンテナンスしなくて済むので楽でいいですね。

Discussion