どうもミツシマです。
今回はExchange Onlineの標準機能であるグローバルIP制限を検証してみました。
Exchange Online のクライアント アクセス規則
とりあえず上記サイトを見て試したこと
今回はExchange Onlineの標準機能であるグローバルIP制限を検証してみました。
〜検証〜
参考としたのは以下のサイトです。Exchange Online のクライアント アクセス規則
とりあえず上記サイトを見て試したこと
- リモートPowershellアクセスは許可するルールを作成(←MS推奨)
- 特定のグローバルIPを許可するルールを作成(New-ClientAccessRuleコマンド)
- すべてを拒否するルールを作成
しかし、これは失敗例となります。
↓↓その失敗例のコマンド例がこちら↓↓
MSのサイトだと「同じ条件を含む複数の規則」は「最初の規則が適用され、それ以降の規則は無視されます」とあるので、特定のグローバルIPを許可するルールを作成して、後はすべて拒否するルールを作成すればいいのかなと考えていました。
(ネットワーク機器のACLみたいな考えが自分の中でしっくり来たので)
※注意点としてはルール作成から最大24時間くらい反映に時間がかかること。。。
確認するときは「Test-ClientAccessRule」というのを使用して確認が出来るようなので確認してみると
おおなんかいい感じかなと思っていましたが、3日経てどルールが適用されない。。
というよりどこからもExchange(OWA、Outlook等)が接続出来なくなった〜〜〜orz
どうにもわからなかったのでMSに問い合わせしたところ、グローバルIP制限したい時は「-Action Allow -AnyOfClientIPAddressesOrRanges (グローバルIP)」ではなく、「Action Deny -ExceptAnyOfClientIPAddressesOrRanges (グローバルIP)」とするとのこと(@_@;)
動作として、「許可」するのではなく「拒否」した上で例外的にグローバルIPを除外(許可)する考え方みたいです。
一旦作成されたルールを削除する場合は「Remove-ClientAccessRule」で削除出来ます。
除外(許可)されたグローバルIPを確認した場合には「Get-ClientAccessRule (ルール名) | Select-Object ExceptAnyOfClientIPAddressesOrRanges」で確認出来ます。
ちなみにMicrosoft TeamsはExchange Onlineのメールボックス機能を裏で使用しているようなので、その影響を確認すると、Teamsは特に制限されることなく使用出来るようです。
逆にいうとExchange OnlineをグローバルIP制限してもTeamsは制限を受けることがないようです。
※ただし、同じく標準機能としてグローバルIP制限を持っているSharePoint Onlineで制限をかけるとTeams上の「ファイルタブ」を開いてもファイルが表示されなくなります。こっちは影響受けるようです。
ですが、やはり標準機能で制限をかけるのは何かを不便な部分もあるので、クラウドのIDaaS(OneLoginやCloudGateUNOやHENGE等)を使用するのがいいのかもしれませんね。
今回の検証はこれで終了。
最初は1週間くらいモヤモヤしましたが、何とかやりたいことが出来てホッとしました。
P.S. プロキシ環境からExchange OnlineのPowershellを使用する際には、リモートセッション作成時にプロキシ情報を入れる必要があります。他の記事に載っていますので、参考まで。
↓↓その失敗例のコマンド例がこちら↓↓
#ExchangeOnlineへ接続するための認証情報登録
$UserCredential = Get-Credential
#接続(リモートセッションの作成)
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection
#クライアントアクセス規則の作成
New-ClientAccessRule -Name AllowRemotePS -Action Allow -AnyOfProtocols RemotePowerShell -Priority 1
New-ClientAccessRule -Name AllowGlobalIP -Action Allow -AnyOfClientIPAddressesOrRanges (グローバルIP) -Priority 2
New-ClientAccessRule -Name AllDeny -Action Deny -Priority 3
#クライアントアクセス規則の確認
Get-ClientAccessRule
#Exchange Onlineコマンドレットのインポート
Import-PSSession $Session
#クライアントアクセス規則の作成
New-ClientAccessRule -Name AllowRemotePS -Action Allow -AnyOfProtocols RemotePowerShell -Priority 1
New-ClientAccessRule -Name AllowGlobalIP -Action Allow -AnyOfClientIPAddressesOrRanges (グローバルIP) -Priority 2
New-ClientAccessRule -Name AllDeny -Action Deny -Priority 3
#クライアントアクセス規則の確認
Get-ClientAccessRule
#セッション終了
Remove-PSSession $Session
MSのサイトだと「同じ条件を含む複数の規則」は「最初の規則が適用され、それ以降の規則は無視されます」とあるので、特定のグローバルIPを許可するルールを作成して、後はすべて拒否するルールを作成すればいいのかなと考えていました。
(ネットワーク機器のACLみたいな考えが自分の中でしっくり来たので)
※注意点としてはルール作成から最大24時間くらい反映に時間がかかること。。。
確認するときは「Test-ClientAccessRule」というのを使用して確認が出来るようなので確認してみると
おおなんかいい感じかなと思っていましたが、3日経てどルールが適用されない。。
というよりどこからもExchange(OWA、Outlook等)が接続出来なくなった〜〜〜orz
どうにもわからなかったのでMSに問い合わせしたところ、グローバルIP制限したい時は「-Action Allow -AnyOfClientIPAddressesOrRanges (グローバルIP)」ではなく、「Action Deny -ExceptAnyOfClientIPAddressesOrRanges (グローバルIP)」とするとのこと(@_@;)
動作として、「許可」するのではなく「拒否」した上で例外的にグローバルIPを除外(許可)する考え方みたいです。
〜検証成功結果〜
↓↓そして検証成功したのが以下のコマンドとなります↓↓
#ExchangeOnlineへ接続するための認証情報登録
$UserCredential = Get-Credential
#接続(リモートセッションの作成)
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection
#クライアントアクセス規則の作成
#クライアントアクセス規則の確認
Get-ClientAccessRule
#Exchange Onlineコマンドレットのインポート
Import-PSSession $Session
#クライアントアクセス規則の作成
New-ClientAccessRule -Name AllowRemotePS -Action Allow -AnyOfProtocols RemotePowerShell -Priority 1
New-ClientAccessRule -Name ConnectionLimitGlobalIP -Action Deny -ExceptAnyOfClientIPAddressesOrRanges (グローバルIP)
#後から許可したいグローバルIPを追加したい場合
#後から許可したいグローバルIPを追加したい場合
#Set-ClientAccessRule "ConnectionLimitGlobalIP" -ExceptAnyOfClientIPAddressesOrRanges @{Add="(グローバルIP)"}
#クライアントアクセス規則の確認
Get-ClientAccessRule
#セッション終了
Remove-PSSession $Session
一旦作成されたルールを削除する場合は「Remove-ClientAccessRule」で削除出来ます。
除外(許可)されたグローバルIPを確認した場合には「Get-ClientAccessRule (ルール名) | Select-Object ExceptAnyOfClientIPAddressesOrRanges」で確認出来ます。
ちなみにMicrosoft TeamsはExchange Onlineのメールボックス機能を裏で使用しているようなので、その影響を確認すると、Teamsは特に制限されることなく使用出来るようです。
逆にいうとExchange OnlineをグローバルIP制限してもTeamsは制限を受けることがないようです。
※ただし、同じく標準機能としてグローバルIP制限を持っているSharePoint Onlineで制限をかけるとTeams上の「ファイルタブ」を開いてもファイルが表示されなくなります。こっちは影響受けるようです。
ですが、やはり標準機能で制限をかけるのは何かを不便な部分もあるので、クラウドのIDaaS(OneLoginやCloudGateUNOやHENGE等)を使用するのがいいのかもしれませんね。
今回の検証はこれで終了。
最初は1週間くらいモヤモヤしましたが、何とかやりたいことが出来てホッとしました。
P.S. プロキシ環境からExchange OnlineのPowershellを使用する際には、リモートセッション作成時にプロキシ情報を入れる必要があります。他の記事に載っていますので、参考まで。
スポンサードリンク
コメント