Azure Firewall の Web カテゴリを API で確認する

azure
Published: 2021-10-31

Azure Firewall と Web カテゴリの確認

Azure Firewall Premium はカテゴリベースの Web フィルタをサポートしています。ただしこれまでは「FQND がどのカテゴリに属しているかを確認したうえで、ベンダの判定に異議を申し立てる仕組み」がありませんでした。カテゴリベースのフィルタリング機能をサポートするベンダは、当然のようにこの機能を提供しています。

ですが先日、Azure Firewall でもこの機能がプレビューになりました。Azure Portal 上で FQDN を入力することで、カテゴリの確認と異議申し立てを実施できます。

Upgrade your network protection with Azure Firewall Premium

試しに blog.aimless.jp を調べてみたところ General として判定されたので、Personal sites で異議申し立てしてみました。

申請画面

申請すると、申請に対して ID が割り当てられて ポータル上で次のメッセージのとおり ID が表示されます。

You can check the status of your report by searching for this Token ID: 6ca7d825761cfe8192b253b7e0176fb1

FQDN の代わりにこの ID を調べることで、異議申し立ての進捗を確認できます。

申請画面

API でカテゴリをチェックする

複数の FQDN のカテゴリをポータルで一つずつ調べるのは手間です。2021年10月31日現在、PowerShell や Azure CLI ではカテゴリを調べられなさそうです。ですが。Azure Portal が providers/Microsoft.Network/azureWebCategories/GetWebCategoryForUrl?api-version=2021-02-01 を叩いているので、この API を利用すれば CLI によるカテゴリのチェックが可能です。サンプルコードは次の通り。

$subID = "<Your subscription Id>"
$fqdns = @(
    "www.yahoo.co.jp",
    "www.google.co.jp",
    "www.jra.go.jp",
    "mail.google.com",
    "outlook.office.com"
)

$fqdns | ForEach-Object {
    $body = @{
        "url" = $_
    } | ConvertTo-Json

    $res = Invoke-AzRest -Method POST -Path "/subscriptions/$subId/providers/Microsoft.Network/azureWebCategories/GetWebCategoryForUrl?api-version=2021-02-01" -Payload $body
    $result = $res.Content | ConvertFrom-Json
    Write-Output "$_ is $($result.categories[0].group) > $($result.categories[0].name)"
}

www.yahoo.co.jp is BusinessUse > SearchEnginesAndPortals
www.google.co.jp is BusinessUse > SearchEnginesAndPortals
www.jra.go.jp is Liability > Gambling
mail.google.com is BusinessUse > WebBasedEmail
outlook.office.com is BusinessUse > WebBasedEmail

まとめ

Azure Firewall に実装されたカテゴリを確認する機能を API 経由で利用する方法をまとめました。いずれ PowerShell や Azure CLI 経由でこの機能を使るようになると思うので、それまでのつなぎにご利用ください。