Azureにおける通信制御の実現方法について

### 0. はじめに
**本記事ではAzureで通信制御を行う場合の実現方法のノウハウをご紹介します。**
Azureリソースへのインバウンド通信とアウトバウンド通信について、WAFやAzure Firewall等でアクセス制御を行いたいケースがあるかと思います。そのような場合に役立つ情報があればと思い、検証を通じて獲得したノウハウ(実現方法や注意点など)をご紹介します。
なお、実現方法など、網羅的でない点については、予めご留意下さい。

:::note info
こんな方にオススメ 
・Azureでアクセス制御を実現する場合、どのように方法があるか知りたい
・実装する上で気をつけるべきことが知りたい
:::

### 1. 前提
本記事の前提は以下の通りです。
・Azure Front DoorでPrivate Linkを使用して配信元(BLOB)を保護している(※1）
・WAFを導入している(※2）
・アクセス元のIPを制限する(但し、アクセス元のIPが変動するパターンもある)
・コストの優先順位がそこまで高くない

<参考URL>
※1

https://learn.microsoft.com/ja-jp/azure/frontdoor/private-link

※2

https://learn.microsoft.com/ja-jp/azure/web-application-firewall/afds/afds-overview

### 2.アクセス制御実現方法(インバウンド)
#### 2-1.静的コンテンツに対するIP制限
上記の構成(※1)のように、Front Door経由のアクセスに絞った上でBLOBにアクセスさせる場合において、さらに特定のIPからのアクセスに絞りたいケースがあるかと思います。

その場合、WAFのカスタムルールで実現します。
具体的な設定方法は以下をご確認下さい。

https://learn.microsoft.com/ja-jp/azure/web-application-firewall/afds/waf-front-door-configure-ip-restriction?tabs=browser


:::note warn
以下のように、BLOBへアクセスすることに対して、IP制限をかけることができます。但し、この機能はあくまでBLOBに直接アクセスする場合の制限です。Front Doorを経由する場合のアクセスを制限できません。
:::

https://learn.microsoft.com/ja-jp/azure/storage/common/storage-network-security?tabs=azure-portal

:::note warn
WAFのカスタムルールでIP制限を設定したはずが、なぜかアクセスできてしまう事象が発生しました。原因は、IPv6の拒否ルールが設定されていないことでした。
特にWi-Fiからアクセスした場合に意図せず、IPv6が使われるケースが多いと思いますので、忘れずにIPv6を拒否する設定を入れたいところです。
:::

#### 2-2.IPが変動する場合のアクセス制御 
連携するシステムがSaaSのサービスを利用している場合、IPが変動したり、公開されていないケースが多々あるかと思います。

その場合も、WAFのカスタムルールを設定することで、HTTPリクエストの情報に基づいて制限をかけます。
HTTPリクエストの情報を参照し、特定の文字列が含まれる場合は、拒否するルールを設定します。

https://learn.microsoft.com/ja-jp/azure/web-application-firewall/afds/waf-front-door-custom-rules

WAFのカスタムルールの設定方法は以下をご確認ください。

https://learn.microsoft.com/ja-jp/azure/web-application-firewall/afds/waf-front-door-create-portal

ご参考までに設定イメージを載せておきます。

![スクリーンショット 2025-03-11 200938.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3923708/83110fc7-686a-4e53-b450-725da2740da4.png)



設定の際は、HTTPリクエストの情報が明らかであれば、それを設定し、明らかでないのであれば、サービス提供元へ問い合わせるのがよいかと思います。

また、実際にアクセスし、Azure側でアクセスログから、HTTPリクエストの情報を追跡し、WAFのカスタムルールを調整する方法もあります。


話は少しそれますが、NSGやAzure Firewallでは、仮想ネットワークサービスタグなどを利用することで、IPを直接指定せず、制限をかけることができます。但し、Microsoft管理のサービスに限られます。

https://learn.microsoft.com/ja-jp/azure/virtual-network/service-tags-overview


### 3.アクセス制御実現方法(アウトバウンド)
#### 3-1.Azure Firewallによるアクセス制御
Azure Firewallでアウトバウンド通信をフィルタリングできます。
アクセス先の特定が困難な場合など、ブラックリスト形式（特定のアクセス先のみ拒否して、それ以外を広く許可する）としつつ、有害なサイトなどのアクセスを制御できる、Webカテゴリによるフィルタリングで補填する方式も取り得るかと思います。(このやり方で、セキュリティ要件を充足できるかどうかは、一度検討することをお勧めします。）

https://learn.microsoft.com/ja-jp/azure/firewall/web-categories

::: note warn
Webカテゴリの機能は、Azure FirewallのバージョンがStandard以上で利用可能です。Basicでは利用できません。
:::

参考までに、Azure Firewallのバージョンによる機能差異は以下をご確認下さい。
![スクリーンショット 2025-03-11 200938.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3923708/baa77ef5-48b5-48a6-ae6c-e4036a20bef1.png)



上記表の引用元は以下です。

https://learn.microsoft.com/ja-jp/azure/firewall/choose-firewall-sku

### 4. まとめ
今回は、簡単ではありますが、Azureで通信制御を行う場合の実現方法のノウハウをご紹介しました。

システム構成や処理方式、制約により、どの方法で通信制御するかが変わってくるかと思いますので、一つの例として、少しでも参考になれば幸いです。

:::note warn
留意事項
・2025年2月時点の情報となります。Azureサービスの仕様等、変更になる可能性がございますので、最新の情報をご確認ください。
・個人の見解であり、会社と一切関係がありません。
:::