アクセス制限とは
以下のAzure構成を構築する場合に、2つに分けて考える必要があります。
A. アプリ利用者(PC・スマホ) -> AppService/Functions -> StorageAccount/SQLDatabase
B. アプリ利用者(PC・スマホ) -> AppService/Functions -> StorageAccount/SQLDatabase
AppService/Functionsのアクセス制御設定
Aのアプリ利用者(PC・スマホ) -> AppService/Functionsのアクセス制御は、AppService/Functionsのネットワーク設定で行います。そして、A. のアクセス制御は更に2つに分けて考える必要があります。
A-1. アプリ利用者(PC・スマホ)に、アプリを利用させるかを制御できます。
A-2. アプリ開発者(PC)に、プログラミングしたアプリをデプロイさせるかを制御できます。
誰でもAzure上にアプリケーションをデプロイしたり変更できてしまうのもセキュリティ上よくありませんので、それを防ぐためのアクセス制限を設定するところです。
AppService/Functionsのパブリックな送信IPも変更される可能性がある(注意)
ユーザが特定の操作を行うと、パブリックな送信IPが変更されることがあります。
公式ドキュメントには、以下のように記載されています。
AzureFunctionsのIPアドレス > 送信IPアドレスの変更
https://docs.microsoft.com/ja-jp/azure/azure-functions/ip-addresses#outbound-ip-address-changes
=====抜粋ここから=====
次の操作を行うと、関数アプリの一連の使用可能な送信IPアドレスが変更される場合があります。
・着信IPアドレスが変更される可能性のあるアクションを実行する。
・AppServiceプランの価格レベルを変更する。すべての価格レベルについて、アプリで使用可能なすべての送信IPアドレスのリストが possibleOutboundIPAddressesプロパティに含まれています。「IPアドレスを見つける」を参照してください。
=====抜粋ここまで=====
Functionsの従量課金プラン・Premiumプランの場合
パブリックIPが不定期に変化してしまいます。なので、基本的にはIPアドレスによるアクセス制限はできないと思った方がいいです。しかし、少し大変ですが、できる方法が一応あります。公式ドキュメントにも書かれている内容です。
データセンター自体のパブリックIPを拒否する
ある範囲のすべてのIPアドレスを許可設定すると、どのIPアドレスに変更されても拒否してしまうということはありません。また、AzureのデータセンターのパブリックIPアドレスだけ許可しているのでAzureと全く関係ないIPアドレスからの通信は拒否できています。
StorageAccount/SQLDatabaseのアクセス制御設定
BのAppService/Functions -> StorageAccount/SQLDatabaseのアクセス制御は、StorageAccount/SQLDatabaseのネットワーク設定で行います。
1.まずAppServiceの送信IPを確認
2.ストレージアカウント側で送信IPを許可設定
IPでアクセス制限したいなら異なるリージョン構成にする必要がある
前提知識として、AppService/Functionsとストレージアカウントが同リージョンに構成されている場合はプライベートIPで通信が行われます。Azureプラットフォーム内部で都合の良いプライベートIPが割り振られて使われている関係もあって、プライベートIPは不定期に勝手に変更されます。これは避けられないことです。※これは仮想ネットワークを構築した場合のプライベートIPの話ではないのでご注意ください。なので、プライベートIPアドレスを使ってストレージアカウント側にアクセス制御を設定しても、しばらくすると意味のない設定になり今まで通りどこからでもストレージアカウントにアクセスされてしまいます。なので異なるリージョン構成にする必要があるというお話です。
以上です。