🍎

Microsoft Defender for APIs を使ってみる

2023/04/26に公開

はじめに

またプレビュー機能の検証ネタですが、Microsoft Defender for APIs がパブリック プレビューとなりましたので、さっそく使ってみます。

仕様

保護対象は API Management 経由で 実行している API です。
https://learn.microsoft.com/en-us/azure/defender-for-cloud/defender-for-apis-introduction

詳細は公式ドキュメントを見てもらえればいいと思いますが、ざっくりできそうなことは以下になるかと思います。

  • API Management で管理している API の可視化
  • 長期間使用されていない API の棚卸
  • API 実行時の認証有無の確認
  • 外部からの API 実行確認
  • API における機密情報の取り扱い
  • API に対する脅威検知

事前準備

検証する前に API Management と API が必須なので、こちらを参考に作成しました。
https://learn.microsoft.com/ja-jp/training/modules/control-authentication-with-apim/3-exercise-create-subscriptions-in-apim

注意が必要な点がいくつかあります。

  • 一時的かもしれないですが、クオータ制限により App Service Plan 作成に失敗したため、setup.sh 内で指定しているリージョン japaneast を変更
  • Defender for API は従量課金プランは対象外のため、API Management の SKU を Developer に変更

Defender for APIs の設定

こちらのドキュメントを参考にしています。
https://learn.microsoft.com/en-us/azure/defender-for-cloud/defender-for-apis-deploy

まず Defender for Cloud の [環境設定] からサブスクリプションを選択し、Defender プランのメニューで APIs を ON にします。


次に推奨事項の [強化されたセキュリティ機能を有効にする] の下にある [Azure API Management API を Defender for API にオンボードする必要がある] から API を選択して [Fix] をクリックします。現時点ではこれしか方法がないみたいです。


しばらくすると、[ワークロード保護] > [API セキュリティ] の下に分析結果が表示されます。

Defender for APIs ページの読み方

ドキュメントを見ながら、各項目を確認してみました。

API Collections: API Management における API
API Endpoints : API Management における API の中の Operations


30 days Unused: 30 日使われてない API をカウント
Authentication: Subscription キーや JWT などの認証が使われていない API をカウント
External traffic oberserved: インターネットからアクセスしている API をカウント
Sensitive data endpoints: 機密情報を含むデータをやり取りしている API をカウント


公式ドキュメントにはこちらに記載があります。
https://learn.microsoft.com/en-us/azure/defender-for-cloud/defender-for-apis-introduction#reviewing-api-security-findings

機密情報に関しては明示はないですが、おそらく Data sensitivity を使っているのでは、と考えています。(確証ないです)

詳細ページ確認

API Collection をクリックすると、各 API の詳細が確認できます。こちらのスクリーンショットの例では、意図的に API Management の Subscription キーの認証を OFF にして Unauthenticated の表示をさせています。こちらの詳細で注意が必要なのが以下の点です。

  • Defender for APIs にオンボード後、API を実行しないと Awaiting Data の表示のままになる(=設定値を見ているわけではなく、実行ログをチェックしていると思われる)
  • 上記のため、設定変更した後に API を再度実行しないと表示は更新されない


さらに API Endpoint をクリックするとリソース正常性が確認できます。


なお、機密情報の検出は API 実行時にテスト用のクレジットカード番号をつけてリクエスト投げてみましたが、いまのところ検出できていません。

脅威検知

Defender for APIs では脅威検知もできるようです。対象のアラートはこちら。
https://learn.microsoft.com/en-us/azure/defender-for-cloud/alerts-reference#alerts-for-defender-for-apis

一番簡単そうな Tor 経由の API 実行ということで、Tor ブラウザから API を実行してみました。

以下のようなアラートが出力しました。なお、API 実行からアラート出力までに 1 時間くらいかかった気がします。

まとめ

一部検証しきれてないところがありますが、API Management の利用者にとってはかなり有用な機能ではないかと思いました。あとは価格体系が気になるところです。(API Call 単位なのか、リソース単位なのか)

Microsoft (有志)

Discussion