Cognitive Services の各サービスを Web API として利用するためにはサブスクリプションキーが必要、とは言っても、自分が所有しているエンドポイント(Web API リクエスト先 URL) に誰からでもアクセスされるのは気になります。
一番単純な方法として、Cognitive Services のエンドポイントにファイアウォールを設定し、Azure Virtual Network で設定する IP アドレス、または Private Endpoint 接続 (Azure の他のサービスとの接続) のみからのアクセスに制限することが可能です。
今回はこのファイアウォール機能を有効にして、ひとまず指定する IP アドレスのみアクセス可能にする手順を紹介します。
※ Face API を例としていますが、他の Cognitive Services のサービスでも手順は同じです。
Azure Portal からネットワーク設定
利用している Cognitive Services のサービスを Azure Portal で表示します。
左バナーから [ネットワーク] を選択します。
Firewall and virtual networks タブの内容を編集していきます。
- 許可するアクセス先 : 選択したネットワークとプライベートエンドポイント を選択します。
- ファイアウォール : 現在アクセスしているデバイスのグローバルアドレスが表示されますので、クライアントIPアドレス に ☑ (チェック) をつけます。
[Save] をクリックして設定内容を保存します。
指定した IP アドレスからアクセス
それでは、Face API へのアクセス制限を設定した PC から (=設定した IP アドレスを使って)、Face API に HTTP リクエスト を送信してみます。
送信画像
↓
これまで通り顔が検出されています。
指定外の IP アドレスからアクセス
今度は IP アドレスを変更して(Wifi再起動など)、同様に HTTP リクエストを送信します。
Access Denied (403) が戻ることが分かります。Virtual Network/Firewall のため、と理由が書かれていますね。(現在の自分の IP アドレスまで記載してくれていますね)