PowerShellでExchange Onlineをアクセス制御してみる!!

OneDrive for BusinessSharePoint Onlineだと以前の記事でIPアドレス制御できますが、Exchange OnlineでもPowerShellで「クライアントアクセス規則」を実装すればIPアドレス制御が可能です。

これではAzure AD Premiumの意味が無くなるのでは? という気も一瞬しましたが、Azure AD Premium だと社外からの接続時の際は多要素認証を要求することなどきめ細かい対応が可能なので用途に応じてということだと思います。

またこのクライアントアクセス規則では、スマートフォンで利用する Outlook for iOS や Outlook for Androidを制御することはできません・・・それは現状 RESTプロトコルを制御できないからのようです。(ActiveSyncは制御できるのでスマートフォンの標準メールは制御可能です)

それではやってみましょう!

 

1.PowerShellからExchange Onlineに接続します。

やり方はここをご参照下さい。

 

2.まず「Get-ClientAccessRule」で現在のアクセスルールを確認します。何も入れてないので空です。

PS D:> Get-ClientAccessRule                    
PS D:>  

 

3.では「クライアントアクセス規則」によるIPアドレス制御を実装してみます。

「New-ClientAccessRule」で新規のアクセスルールを作成します。

指定のIPアドレス帯以外からのExchange Onlineへの通信を遮断しますが、PowerShellも対象にすると万一の時のリカバリーができないのでRemotePowerShellを「 -ExceptAnyOfProtocols RemotePowerShell」で例外としました。

設定の例外とするIPアドレスはサブネット指定が可能で「-ExceptAnyOfClientIPAddressesOrRanges」で設定します。

PS D:> New-ClientAccessRule -Name "BlockAll" -Action DenyAccess -ExceptAnyOfProtocols RemotePowerShell -ExceptAnyOfClientIPAddressesOrRanges 106.161.0.0./16

Confirm                                   
Are you sure you want to perform this action?           
クライアント アクセス規則 BlockAll の作成 -            
規則が不適切に変更されたことが原因で、管理者もユーザーもテナントにアクセスできなくなることがあります。PowerShellへのアクセスを常にある程度は許可するように規則セットが定義されていることを確認してください。このアクセス権は、テナントの管理とクライアント アクセス規則の変更を行うために必要です。                 
[Y] Yes [A] Yes to All [N] No [L] No to All [?] ヘルプ (既定値は "Y"):
警告: ご注意ください: 最初のルールは、実装に最大 24 時間かかる場合があります。2 番目以降のルールは、実装に最大 1時間かかる場合があります。   

Name Priority Enabled DatacenterAdminsOnly           
---- -------- ------- --------------------         
BlockAll 1 True False                        

「DatacenterAdminsOnly」というパラメーターを調べると「Microsoft の内部使用目的に予約されています。」との記載がありました。今のところこのパラメーターに対する公開情報はこれ以上無いようです。

 

4.では対象外のIPアドレスからWebメール(Outlook on the web)に接続してみます。

想定通り接続できません。(設定の反映まで結構時間がかかりました ^^)

 

5.続いてPC上のOutlook 2016からアカウントを追加してみます。

想定通り接続できません。

 

6.スマートフォンの「Outlook for Android」からアカウントを追加してみます。

接続できました。

これは Outlook for iOSやAndroidはActiveSyncではなくRESTプロトコルを使用しているためです。現状、クライアントアクセス規則ではRESTプロトコルは制御できないからのようです。(ActiveSyncは制御できるのでスマートフォンの標準メールは制御可能です)

 

7.PowerShellは例外としたので想定通り接続できました。

 

8.またTeamsやYammerなど他のサービスにはふつうに接続できるようです。

 

詳しいオプションなどはここに記載があります。

PowerShellでの設定が必要なため少し敷居が上がりますが、社外からのメールを規制したい場合は有効な設定だと思います。現状 Outlook for iOSやAndroidには効かないのはちょっと中途半端な気がしますが・・・

最後に「Remove-ClientAccessRule」で設定を削除しておきます。私はどこからでも接続したいので😁

PS D:> Remove-ClientAccessRule "BlockAll"