AD FS 2.0 Rollup1の設定について、あまり詳しく説明しているドキュメントが見つからなかったので自分で手順を作成してみました。
なお、AD FS2.0のインストールならびにOffice365の設定はすでに完了しているものとして作成をしております。
Webのガイドに記載されているGUIでの手順は、プルダウンで選ぶメニューのところに直接値を入力するという物で、確かに登録はできるのですが、手順上も最終的な見た目もあまり綺麗ではないので、今回は別の方法を取ることにしたいと思います。
少し設定項目が多く、GUIからの設定は面倒なのでPowerShellから実施したいと思います。AD FSがセットアップされたマシンでPowerShellスナップインを自動的に読み込むようにプロファイルを作成します(安納さんのblogで丁寧に説明してます:【IDM】AD FS 2.0 PowerShell コマンドレットを使用する~1 基礎編)。
if ((Test-Path (Split-Path $Profile)) -eq $False) { md (Split-Path $Profile) } Echo "Add-PSSnapin Microsoft.Adfs.PowerShell" >> $Profile Set-ExecutionPolicy RemoteSigned
再度PowerShellを起動すると、AD FS関係のコマンドレットが利用できるようになります。
まずは、手順では必須とされておりませんが、要求記述に名前を登録します。ここで登録した名前を、クレームルールのテンプレートなどで利用することができますので、可読性が向上するかもしれません。
Add-ADFSClaimDescription -Name "Exchange送信元IP" -IsAccepted $True -IsOffered $True -IsRequired $False -Notes "Exchange Onlineへの接続元グローバルIP" -ClaimType "http://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-forwarded-client-ip" Add-ADFSClaimDescription -Name "Exchangeクライアントプロトコル" -IsAccepted $True -IsOffered $True -IsRequired $False -Notes "Exchange Onlineへの接続プロトコル" -ClaimType "http://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-client-application" Add-ADFSClaimDescription -Name "ExchangeクライアントUserAgent" -IsAccepted $True -IsOffered $True -IsRequired $False -Notes "Exchange Onlineへの接続エージェント" -ClaimType "http://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-client-user-agent" Add-ADFSClaimDescription -Name "ADFS Proxy利用" -IsAccepted $True -IsOffered $True -IsRequired $False -Notes "ADFS Proxyの利用有無の判定" -ClaimType "http://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-proxy" Add-ADFSClaimDescription -Name "ADFS Proxy絶対パス" -IsAccepted $True -IsOffered $True -IsRequired $False -Notes "ADFS Proxyの絶対パス(Active/Passive)" -ClaimType "http://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-endpoint-absolute-path"
続いて、要求プロバイダー信頼から受け付け変換規則を作成します。とはいっても、単にパススルーするだけの簡単なルールです。
$NewRule = (Get-ADFSClaimsProviderTrust).AcceptanceTransformRules $NewRule = $NewRule + @" @RuleTemplete = "PassThroughClaims" @RuleName = "[ADFS2.0 RU1] すべての Exchange送信元IP 要求のパス スルー" c:[Type == "http://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-forwarded-client-ip"] => issue(claim = c); `r @RuleTemplete = "PassThroughClaims" @RuleName = "[ADFS2.0 RU1] すべての Exchangeクライアントプロトコル 要求のパス スルー" c:[Type == "http://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-client-application"] => issue(claim = c); `r @RuleTemplete = "PassThroughClaims" @RuleName = "[ADFS2.0 RU1] すべての ExchangeクライアントUserAgent 要求のパス スルー" c:[Type == "http://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-client-user-agent"] => issue(claim = c); `r @RuleTemplete = "PassThroughClaims" @RuleName = "[ADFS2.0 RU1] すべての ADFS Proxy利用 要求のパス スルー" c:[Type == "http://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-proxy"] => issue(claim = c); `r @RuleTemplete = "PassThroughClaims" @RuleName = "[ADFS2.0 RU1] すべての ADFS Proxy絶対パス 要求のパス スルー" c:[Type == "http://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-endpoint-absolute-path"] => issue(claim = c); `r "@ Set-ADFSClaimsProviderTrust -TargetName "Active Directory" -AcceptanceTransformRules $NewRule
これで、受け付け変換規則に、必要な属性のパススルーするルールが作成されました。(発行済み要求のところには、先ほど登録した名称が記載されています。)
最後に、発行承認規則を作成します。これは、ADFS 2.0 RU1で実装されたアクセス制御にて紹介させて頂いたとおり、各組織ごとにポリシーを決める必要がありますので、それに従って設定をします。今回は、例②の指定IP(123.123.123.123)もしくはActiveSync以外からのProxyアクセスを拒否するルールを作成してみます。
$NewRule2 = (Get-ADFSRelyingPartyTrust).IssuanceAuthorizationRules $NewRule2 = $NewRule2 + @" @RuleName = "block all external access to Office365, except Exchange ActiveSync" exists([Type == "http://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-proxy"]) && NOT exists([Type == "http://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-client-application", Value == "Microsoft.Exchange.ActiveSync"]) && NOT exists([Type == "http://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-forwarded-client-ip", Value =~ "123.123.123.123"]) => issue(Type = "http://schemas.microsoft.com/authorization/claims/deny", Value = "true"); "@ Set-ADFSRelyingPartyTrust -TargetName "Microsoft Office 365 Identity Platform" -IssuanceAuthorizationRules $NewRule2
これで、Office365へのチケットの発行を制御する発行承認規則ができます。
このルールをカスタマイズすることにより、AD FSにてExchange Onlineのリッチクライアントからのアクセスを制御できるようになります。