Defender for Cloud の API セキュリティ態勢管理
はじめに
近年、生成 AI のカスタムアプリを開発するにあたり、API を活用する事例が増加しています。しかし、API は Web アプリと比べて セキュリティ対策が疎かになりやすいという課題があります。
Microsoft Defender for Cloud では、API のセキュリティ態勢管理を強化するための機能やプランが提供されており、以下の 3 つで調査・対策が可能です。
- 基本的な CSPM (基本的な推奨事項の確認)
- Defender CSPM(API セキュリティ態勢管理)
- Defender for APIs(API セキュリティ態勢管理 + API 固有の脅威検出)
なお、これらの利用には Azure API Management Service の利用が前提となります。これにより、API のセキュリティを一元管理し、Defender for Cloud と連携した包括的な保護が実現できます。
今回は上記のうち、API セキュリティ態勢管理にフォーカスして動作確認などしていきます。
Defender プランによる機能差異
公式のドキュメントには明確に記載はされておりませんが、各プランの差異は以下の認識です。
機能 | 基本的な CSPM | Defender CSPM | Defender for APIs |
---|---|---|---|
基本的な推奨事項項目 | 〇 | 〇 | 〇 |
高度な推奨事項項目 ※1 | - | 〇 | 〇 |
API インベントリ | - | 〇 | 〇 |
API セキュリティ検出 ※2 | - | 〇 | 〇 |
API データ分類 | - | 〇 | 〇 |
リスク別推奨事項ビュー | - | 〇 | - |
攻撃パス分析 | - | 〇 | - |
クラウド セキュリティ エクスプローラー | - | 〇 | - |
API 脅威検出 | - | - | 〇 |
※1 未使用の API エンドポイントと認証されていない API エンドポイントに関する推奨事項
※2 外部公開、未使用、未認証のチェック結果を API インベントリで確認
参考リンク
推奨事項の確認
はじめに推奨事項を確認していきます。API 向け推奨事項の一覧は以下にまとまっています。
Microsoft Defender for API を有効にする必要がある
リソースの種類: サブスクリプション
プラン: 基本的な CSPM
サブスクリプションレベルで Defender for APIs が有効となっていない場合に検出します。
Azure API Management API を Defender for API にオンボードする必要がある
リソースの種類: API Management Service
プラン: Defender for APIs
Defender for APIs を有効化したサブスクリプションにある API Mangement Service で Defender for APIs のオンボード設定が実施されていない場合に検出します。Defender for APIs を有効化後に出力される推奨事項です。
使用されていない API エンドポイントは、無効にし、Azure API Management サービスから削除する必要がある
リソースの種類: microsoft.apimanagement/service/apis/operations
プラン: Defender CSPM / Defender for APIs
30 日間トラフィックを受信していない API の操作 (operations) がある場合に検出します。
操作は以下の API における GET や PUT を指しています。
Azure API Management の API エンドポイントを認証する必要がある
リソースの種類: microsoft.apimanagement/service/apis/operations
プラン: Defender CSPM / Defender for APIs
各 API の 操作を実行するにあたり、 Management サブスクリプション キー、JWT、client 証明書、Microsoft Entra トークンの認証認証の有無をチェックし、いずれの認証も有効化されていない場合に検出します。
例えば、以下はサブスクリプション キーの認証設定が OFF になっており、その他の認証方法を使用していない場合に検出します。
API Management サブスクリプションのスコープをすべての API に限定することはできない
リソースの種類: Microsoft.ApiManagement/service/subscriptions
プラン: 基本的な CSPM
サブスクリプション キーをすべての API をスコープとして作成した場合に検出します。サービスレベルや個々の API でキーを作成することを推奨しています。
以下のようにサブスクリプション キーを作成すると検出します。
API Management から API バックエンドへの呼び出しでは、証明書の拇印または名前の検証をバイパスすることはできない
リソースの種類: Microsoft.ApiManagement/service/backends
プラン: 基本的な CSPM
API バックエンドを登録した際、証明書のチェックを OFF にした場合に検出します。
以下の設定が該当します。
API Management の直接管理エンドポイントを有効にしてはならない
リソースの種類: Microsoft.ApiManagement/service/tenant
プラン: 基本的な CSPM
直接管理 REST API は、選択したエンティティ (ユーザー、グループ、製品、サブスクリプションなど) に対して操作を実行することが可能で Azure Resource Manager のロールベースのアクセス制御、承認、調整のメカニズムを通さない API です。セキュリティとして脆弱であるため ON に設定すると検出します。
以下の設定が該当箇所ですが、v2 SKU では設定がなく、非サポートのようです。
なお、本機能はリタイアのアナウンスが出ています。
API Management APIs では暗号化されたプロトコルのみを使用する必要があります
リソースの種類: Microsoft.ApiManagement/service/apis
プラン: 基本的な CSPM
API 設定で HTTP / WS もしくは HTTP(S) / WS(S) を選択した場合に検出します。
HTTP API の場合は以下が該当の設定です。
API Management のシークレット名付きの値は Azure Key Vault に保存する必要がある
リソースの種類: Microsoft.ApiManagement/service/namedvalues
プラン: 基本的な CSPM
名前付きの値で API Management Service に直接シークレットを保存していた場合に検出します。
以下のような設定をした場合が該当します。
種類でシークレットではなく、キーコンテナーの選択が推奨になります。
API Management ではサービス構成エンドポイントへの公衆ネットワーク アクセスを無効にする必要がある
リソースの種類: API Management Service
プラン: 基本的な CSPM
直接管理 API や Git 構成管理エンドポイント、セルフホステッド ゲートウェイ構成エンドポイントなどのサービス構成エンドポイントが公開されている場合に検出します。
API Management の最小 API バージョンは 2019-12-01 以上に設定する必要がある
リソースの種類: API Management Service
プラン: 基本的な CSPM
サービス シークレットが閲覧用ユーザーに読み取られるリスクがあるため、API の最小バージョンを 2019-12-01 以上に設定する必要があります。設定されていない場合に検出します。
以下の項目で設定します。v2 SKU には管理 API のメニューがなく、ARM テンプレートや REST API を使用して設定する必要があると思われます。
なお、上記に関連するリタイア情報があります。
API Management から API バックエンドへの呼び出しは認証する必要がある
リソースの種類: Microsoft.ApiManagement/service/backends
プラン: 基本的な CSPM
バックエンドの設定時にいずれの認証方法も指定していない場合に検出します。
以下が該当箇所です。こちらは API Management Service からバック エンドにアクセスする際にバック エンド側が実施する認証になります。
ドキュメントにない項目
いくつかドキュメントにない項目も出力したので、そちらも併せて確認していきます。
API Management サービスでは仮想ネットワークを使用する必要がある
リソースの種類: API Management Service
プラン: 基本的な CSPM
VNET へのデプロイによるプライベート構成 (受信・送信) をしていない場合に検出します。
以下が従来の SKU (クラシック レベル) における該当箇所の設定です。
なお、v2 SKU では仕様が異なる (内部や外部という設定がない) ため、v2 SKU では正常に検知できないと思われます。
Azure API Management プラットフォームのバージョンを stv2 にする必要があります
リソースの種類: API Management Service
プラン: 基本的な CSPM
シングル テナントv1 の 2024/8/31 リタイアに伴う推奨事項です。stv1 で動作していた場合に検出します。
関連のリタイア情報は以下になります。
Defender CSPM を有効にする
ここから Defender CSPM を ON にしていきます。
Defender for Cloud の [環境設定] でサブスクリプションを選択し、Defender CSPM を ON にします。
[設定と監視] で [API セキュリティ態勢の管理 (プレビュー)] を ON にします。
[ワークロード保護] > [API セキュリティ] を開きます。
以下のように API のセキュリティ態勢が確認可能になっています。
上記の API セキュリティ検出のチェックに付随して、以下の推奨事項も確認可能になります。
リスク別推奨事項では以下のように [Exposure to the Internet] がリスク要因として加味されてリスクレベルが決定しています。
クラウド セキュリティ エクスプローラーでも同様に可視化・分析が可能です。
攻撃パスは残念ながら検出されていないのですが、インターネット側からアクセス可能となっており、重要な資産となっている App Service などにアクセスする構成の場合、検出できると思われます。
まとめ
本記事では Defender for Cloud の API セキュリティ態勢管理の機能を確認しました。基本的な CSPM による推奨事項のチェックだけでもベースとなるセキュリティ チェックが可能ですが、Defender CSPM を使用することで、パラメータだけでなく使用状況も含めチェックを実施することができ、また攻撃パス分析やリスク別推奨事項などで高度な分析を利用可能になります。
そのため、自社でカスタムの API を実装する場合は API Management Service との統合と併せて、Defender CSPM や Defender for APIs を活用することをお勧めします。
Discussion