Azure Firewall にOffice365 通信を許可する方法

Last Update: feedback 共有

※ 現在(2023/05 時点)Azure Firewall では Office365 用の FQDN タグ及びサービス タグをサポートするようになり、本記事の方法ではなくても、Office 365 エンドポイント宛の通信を許可できるようになりました。

また、FQDN タグ及びサービス タグは Azure 側に管理されるものであり、お客様側に手動で更新する必要はありませんので、
そちらの方法で Office365 通信を許可する構成を推奨しております。
詳細な設定方法について以下の公開ドキュメントをご参照ください。

Azure Firewall を使用して Office 365 を保護する

以下は古い記事内容となります。

こんにちは、Azure テクニカル サポート チームの杜です。
今回多数のお客様にお寄せいただいた Azure Firewall にて Office365 通信を許可する方法についてをご紹介します。

Azure Firewall のアプリケーション ルールでは、FQDN タグ の機能があり、その機能を用いて Windows Update などの通信を便利に許可できますが、残念ながら、現時点 Office365 用の FQDN タグを提供していません。

そのため、お客様側で必要な IP アドレス及び URL をアプリケーション ルールに登録する必要があります。ただし、Office365 関連の IP アドレス及び URL が多く存在し、Azure ポータルで登録するのは時間かかります。その代わりに、以下の PowerShell コマンドでは、一括で登録することは可能です。

手順

※ 弊社でも動作を確認しましたが、念のため、お客様の検証環境でもご確認のうえ本番環境への適用をお願いいたします。

  1. 以下の公開ドキュメントから Office365 通信関連のIPとURL一覧の JSON ファイルをダウンロードします

    Office 365 URL および IP アドレス範囲

    ※「ダウンロード: 1 つの JSON 形式リスト内のすべての必須およびオプションの宛先。」のリンクをクリックします。

  2. 現時点 Azure Firewall のアプリケーション ルールでは、「subdomain.*.test.com」のような正規表現の登録はサポートしてないため、手動で JSON ファイルにある「autodiscover.*.onmicrosoft.com」を「*.onmicrosoft.com」に変更します。

  3. Azure PowerShell または ポータルより Cloud Shell を起動し、以下のコマンドレットを入力します。(<>の部分は環境に合わせて変更が必要となります)

  4. 構成を変更する対象のサブスクリプションを指定します。

    1
    Select-AzSubscription -SubscriptionId <サブスクリプション ID>

Azure Firewall への適用コマンド

Azure Firewall に直接にルールを設定する場合はこちらの手順を使用します。


  1. Azure Firewall の情報を取得します。

    1
    $Azfw = Get-AzFirewall -Name <Azure Firewall 名> -ResourceGroupName <変更対象のリソースグループ>
  2. json ファイルの情報を読み込みます。

    1
    $export = Get-Content .\worldwide.json | ConvertFrom-Json
  3. Azure Firewall で定義する接続元のアドレス空間を指定します。

    1
    2
    $source_address = <接続元のアドレス空間>
    #例:$source_address = "10.0.0.0/24"
  4. 宛先ポートを 80,443 に絞ります。

    1
    $urldata =  $export | where { $_.tcpPorts -eq "80" -or $_.tcpPorts -eq "443" -or $_.tcpPorts  -eq "80,443" }
  5. Azure Firewall 用のルールを作成します。(80,443 ポートかつ、FQDN が含まれるものが対象となります)

    ※実行完了まで時間かかります。

    1
    $rules_with_urls = $urldata | where { $_.tcpPorts -eq "80" -or $_.tcpPorts -eq "443" -or $_.tcpPorts  -eq "80,443" } | where { $_.urls } | foreach { New-AzFirewallApplicationRule -Name "Allow-$($_.ServiceAreaDisplayName.replace(' ', ''))-$($_.id)" -SourceAddress $source_address -Protocol http, https -TargetFqdn $_.urls }
  6. ルールのセットを定義します。

    1
    $AppRuleCollection = New-AzFirewallApplicationRuleCollection -Name <ルール名> -Priority <優先度> -Rule $rules_with_urls -ActionType "Allow"
  7. Azure Firewall の設定として定義します。

    1
    $Azfw.ApplicationRuleCollections.Add($AppRuleCollection)
  8. Azure Firewall へ設定を反映します。

    1
    Set-AzFirewall -AzureFirewall $Azfw

Azure Firewall ポリシーへの適用コマンド

Azure Firewall ポリシーの場合はこちらの手順を使用します


  1. Azure Firewall ポリシーの情報を取得します。

    1
    $fwpol = Get-AzFirewallPolicy -Name <Azure Firewall ポリシー名> -ResourceGroupName <リソースグループ名> 
  2. json ファイルの情報を読み込みます。

    1
    $export = Get-Content .\worldwide.json | ConvertFrom-Json
  3. Azure Firewall で定義する接続元のアドレス空間を指定します。

    1
    2
    $source_address = <接続元のアドレス空間>
    #例:source_address = "10.0.0.0/24"
  4. 宛先ポートを 80,443 に絞ります。

    1
    $urldata =  $export | where { $_.tcpPorts -eq "80" -or $_.tcpPorts -eq "443" -or $_.tcpPorts  -eq "80,443" }
  5. Azure Firewall 用ポリシーのアプリケーション ルールを作成します。(80,443 ポートかつ、FQDN が含まれるものが対象となります)

    ※実行完了まで時間かかります。

    ※ コマンド実行時に警告文が表示される可能性がございますが、問題なくコマンドを実行することが可能です。

1
$rules_with_urls = $urldata | where { $_.tcpPorts -eq "80" -or $_.tcpPorts -eq "443" -or $_.tcpPorts  -eq "80,443" } | where { $_.urls } | foreach { New-AzFirewallPolicyApplicationRule -Name "Allow-$($_.ServiceAreaDisplayName.replace(' ', ''))-$($_.id)" -SourceAddress $source_address -Protocol http, https -TargetFqdn $_.urls }
  1. アプリケーション ルールのコレクションを定義します。

    1
    $AppRuleCollection = New-AzFirewallPolicyFilterRuleCollection -Name "<コレクション名>" -Priority <優先度> -Rule $rules_with_urls -ActionType "Allow"
  2. コレクションのグループを新規で作成します。

    1
    $RCGroup = New-AzFirewallPolicyRuleCollectionGroup -Name "<任意のグループ名>" -Priority <優先度> -FirewallPolicyObject $fwpol
  3. Azure Firewall ポリシーへ設定を反映します。

    1
    Set-AzFirewallPolicyRuleCollectionGroup -Name $RCGroup.Name -Priority <優先度> -RuleCollection $AppRuleCollection -FirewallPolicyObject $fwpol

よくある質問

Office365 の FQDN タグをサポートする予定はありますか?

こちらのサポートに関しては、現在(2022/01 時点)開発部門が取り組んでいる最中との報告を受けました。
つきまして、具体的な開発完了時期やリリース時期が未定となっております。将来的な機能拡張として何卒ご期待をいただけますと幸いです。

公開ドキュメントにある URL が更新があったら Azure Firewall 側も自動的に更新できますか?

公開ドキュメントにある URL が更新されたら、FQDN タブのように自動的に Azure Firewall に反映できません。
Office 365 の通信要件は、不定期に更新される場合がありますので、定期的に公開ドキュメントを確認し、手動や PowerShell で更新することは推奨致します。

以上、ご参考になれば幸いです。

※本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。