1.9 O365判別用iRuleの作成とVSへの割り当て

本項ではMicrosoft社にて公開されている情報を元にO365の関連アドレスをExternal Data-GroupでマッチングさせるiRuleを作成し、Virtual Serverへと適用します。

インターネット上で公開されているものを本書では手動で取り込み、BIG-IP向けに加工・成型して取り込みを行っているため、公開もとの情報に関してはMicrosoft社へお問合せ願います。

注釈

O365のURLとIPアドレスの範囲(MicroSoft社ページ) (2023/12時点)


なお、iCallにより手動取り込みではなく、スケジュールベースでの自動取り込みにもBIG-IPは対応可能です。

iRuleやExternal Data-Groupの利用について詳細は「iRulesかんたんセットアップガイド」をご参照下さい。

  1. External Data-Group用ファイルの作成

    BIG-IPのHost側(Linux側)に、Data-Group用の外部ファイルを保存します。

    事前にエディタ等を用いて公開されているアドレスをBIG-IPで利用可能な形に整形しておきます。

注釈

公開情報はいくつか注意点に伴い登録情報の作成と運用方針の決定が必要となります。

  • 大文字だがアクセスは小文字などの差分修正
  • 「equivioprod*.cloudapp.net」などの文字列内に「*」がある場合の登録方針
  • 公開情報への反映前に発生する実アクセス先に対する方針

例) 2016/7/4時点はSkypeに関する公開情報では以下のアクセス先が登録されていないが実アクセスあり

a.config.skype.com

swx.cdn.skype.com

2016/7/23時点はSkypeに関する公開情報へ登録されている


この様な例があるためマッチング対象の選定は事前確認をお願い致します。

<アドレスサンプル>

../../_images/Picture16.png

ファイルを保存するディレクトリはどこでも問題ありませんが、本書では、/var/tmp ディレクトリファイル名o365_url_v2として保存しています。

../../_images/Picture23.png
  1. 作成した外部ファイルの読み込み

tmshで 以下のコマンドで、外部ファイルをオブジェクトとして読み込みます。

(tmos)# create sys file data-group ext_o365_url_object type string source-path file:/var/tmp/o365_url_v2
Copying file "file:/var/tmp/o365_url_v2" ...
  % Total    % Received % Xferd  Average Speed  Time Time  Time      Current
                                 Dload  Upload  Total Spent   Left   Speed
100  8701  100  8701   0    0  12.0M      0  --:--:-- --:--:-- --:--:--     0
  1. External Data-Groupを作成するため「Local Traffic」→「iRules」→「Data Group List」を選択し、右に表示されるCreateをクリックします。
../../_images/Picture33.png
  1. 任意の名前を入力し、Typeを「External File」、File Nameを「ext_o365_url_object」として「Finishedをクリックします。
../../_images/Picture41.png
  1. 「Local Traffic」→「iRules」→「iRules List」で表示された画面の右上にあるCreateをクリックします。
../../_images/Picture5.png
  1. 下記iRuleを参考にし、Finishedをクリックします。
../../_images/Picture6.png
when HTTP_PROXY_REQUEST {                                    #Proxyリクエスを受け取ったときイベント発生
   log local0. "[HTTP::method] [HTTP::host] [HTTP::uri]"             #ログ出力
   if { [class match [HTTP::host] contains ext_o365_url] } {         #HOSTヘッダとExternal Data-Groupをマッチング
      HTTP::proxy enable                                             #HTTP Proxyを有効化
      log local0. "* BIGIP *"                                        #* BIGIP *ログ出力
   } else {
      HTTP::proxy disable                                            #HTTP Proxyを無効化
      log local0. "* Web Proxy *"                                    #* Web Proxy *ログ出力
      pool webproxy_pool                                             #Poolを指定
   }
}

注釈

Office365関連のテナント制限に関する機能を利用時はvirtual Server [proxy_https_vs] 側でHTTP headerの追加が必要。

その際はVirtual ServerのTypeをStandardに変更するなどSSLを復号、再暗号化するための追加設定が必要となります。

また、別途SSL Forward Proxyライセンスも必要となります。

マッチング対象となるHTTPホストヘッダはMicrosoft社へご確認下さい。

<テナント制限向けサンプル>

switch [HTTP::host] {                                                     #下記に列挙されるHTTPホストヘッダを比較
   "login.microsoftonline.com" {
      HTTP::header insert "Restrict-Access-To-Tenants" "固有ドメイン" } #HTTPヘッダを挿入
      HTTP::header insert "Restrict-Access-Context" "AzureAD ID" }        #HTTPヘッダを挿入

   "login.microsoft.com" {
      HTTP::header insert "Restrict-Access-To-Tenants" "固有ドメイン" }         #HTTPヘッダを挿入
      HTTP::header insert "Restrict-Access-Context" "AzureAD ID" }        #HTTPヘッダを挿入

   "login.windows.net" {
      HTTP::header insert "Restrict-Access-To-Tenants" "固有ドメイン" }         #HTTPヘッダを挿入
      HTTP::header insert "Restrict-Access-Context" "AzureAD ID" }        #HTTPヘッダを挿入
}

※ ログ出力の部分は動作確認終了後に削除を忘れないよう注意するか、HighSpeedLogging等の負荷を考慮したログ設計を実装願います。

  1. 「Local Traffic」→「Virtual Servers」で表示された画面の右上にあるproxy_http_vsをクリックします。
../../_images/Picture7.png
  1. 「Resources」タブをクリックし、「iRules」の横のManageをクリックします。
../../_images/Picture8.png
  1. 作成したiRuleを割り当て、Finishedをクリックします。
../../_images/Picture9.png
  1. iRuleが割り当たったことを確認しBIG-IP側の作業を終了します。
../../_images/Picture10.png