AD FS 2.0 のクライアント アクセス制御ポリシー
Active Directory フェデレーション サービス (AD FS) 2.0 のクライアント アクセス ポリシーでは、リソースへのアクセスを制限または許可することができます。 このドキュメントでは、AD FS 2.0 でクライアント アクセス ポリシーを有効にする方法と、最も一般的なシナリオを構成する方法について説明します。
AD FS 2.0 でのクライアント アクセス ポリシーの有効化
クライアント アクセス ポリシーを有効にするには、次の手順に従います。
手順 1: AD FS サーバーに AD FS 2.0 パッケージの更新プログラムのロールアップ 2 をインストールする
Active Directory フェデレーション サービス (AD FS) 2.0 パッケージの更新プログラムのロールアップ 2 をダウンロードし、すべてのフェデレーション サーバーとフェデレーション サーバー プロキシにインストールします。
手順 2: Active Directory 要求プロバイダー信頼に 5 つの要求規則を追加する
すべての AD FS サーバーとプロキシに更新プログラムのロールアップ 2 がインストールされたら、次の手順を実行して、新しい要求の種類をポリシー エンジンで使用できるようにする一連の要求規則を追加します。
これを行うには、次の手順に従って、新しい要求コンテキストの要求の種類ごとに 5 つの受け入れ変換規則を追加します。
Active Directory 要求プロバイダー信頼で、それぞれの新しい要求コンテキストの要求の種類をパススルーする新しい受け入れ変換規則を作成します。
5 つのコンテキストの要求の種類それぞれについて、Active Directory 要求プロバイダー信頼に要求規則を追加する方法
[スタート] ボタンをクリックし、[プログラム]、[管理ツール] の順にポイントして [AD FS 2.0 の管理] をクリックします。
コンソール ツリーの [AD FS 2.0]、[信頼関係] で、[要求プロバイダー信頼] をクリックし、[Active Directory] を右クリックして、[要求規則の編集] をクリックします。
[要求規則の編集] ダイアログ ボックスで [受け入れ変換規則] タブを選択し、[規則の追加] をクリックして規則ウィザードを開始します。
[規則テンプレートの選択] ページの [要求規則テンプレート] で、一覧から [入力方向の要求を通すか、フィルター処理する] を選択し、[次へ] をクリックします。
[規則の構成] ページの [要求規則名] に、この規則の表示名を入力します。[入力方向の要求の種類] で、次の要求の種類の URL を入力し、[すべての要求の値をパススルーする] を選択します。
https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-forwarded-client-ip
規則を確認するには、一覧で規則を選択し、[規則の編集] をクリックして、[規則言語の表示] をクリックします。 要求規則言語が次のように表示されます。
c:[Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-forwarded-client-ip"] => issue(claim = c);
[完了] をクリックします。
規則を保存するため、[要求規則の編集] ダイアログ ボックスで [OK] をクリックします。
手順 2 から 6 を繰り返して、5 つのすべての規則が作成されるまで、下に示す残り 4 つの要求の種類ごとに追加の要求規則を作成します。
https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-client-application
https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-client-user-agent
https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-proxy
https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-endpoint-absolute-path
手順 3: Microsoft Office 365 ID プラットフォーム証明書利用者信頼を更新する
次のシナリオ例のいずれかを選択して、組織のニーズに最も合った Microsoft Office 365 ID プラットフォームの証明書利用者信頼に対する要求規則を構成します。
AD FS 2.0 のクライアント アクセス ポリシー シナリオ
次のセクションでは、AD FS 2.0 に存在するシナリオについて説明します。
シナリオ 1: Office 365 への外部アクセスをすべてブロックする
このクライアント アクセス ポリシー シナリオは、すべての内部クライアントからのアクセスを許可し、すべての外部クライアントを、その外部クライアントの IP アドレスに基づいてブロックします。 既定の発行承認規則に基づいた規則セットは、すべてのユーザーにアクセスを許可します。 Office 365 証明書利用者信頼に発行承認規則を追加するには、次の手順に従います。
Office 365 へのすべての外部アクセスをブロックする規則を作成する方法
- [スタート] ボタンをクリックし、[プログラム]、[管理ツール] の順にポイントして [AD FS 2.0 の管理] をクリックします。
- コンソール ツリーの [AD FS 2.0]、[信頼関係] の下にある、[証明書利用者信頼] をクリックし、[Microsoft Office 365 ID プラットフォーム] 信頼を右クリックして、[要求規則の編集] をクリックします。
- [要求規則の編集] ダイアログ ボックスで、[発行承認規則] タブを選択し、[規則の追加] をクリックして、要求規則ウィザードを開始します。
- [規則テンプレートの選択] ページの [要求規則テンプレート] の下にある、[カスタム規則を使用して要求を送信] を選択して、[次へ] をクリックします。
- [規則の構成] ページの [要求規則名] に、この規則の表示名を入力します。 [カスタム規則] の下に、次の要求規則言語構文を入力するか貼り付けます。
exists([Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-proxy"]) && NOT exists([Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-forwarded-client-ip", Value=~"customer-provided public ip address regex"]) => issue(Type = "https://schemas.microsoft.com/authorization/claims/deny", Value = "true");
- [完了] をクリックします。 [発行承認規則] の一覧の [すべてのユーザーにアクセスを許可する] 規則のすぐ下に新しい規則が表示されていることを確認します。
- 規則を保存するため、[要求規則の編集] ダイアログ ボックスで [OK] をクリックします。
注意
上の [パブリック IP アドレス正規表現] の値を有効な IP 式に置き換える必要があります。詳細については、「IP アドレス範囲式の構築」を参照してください。
シナリオ 2: Exchange ActiveSync を除く Office 365 へのすべての外部アクセスをブロックする
次の例では、Outlook を含む内部クライアントからの、Exchange Online を含むすべての Office 365 アプリケーションへのアクセスを許可します。 これは、スマートフォンなどの Exchange ActiveSync クライアントを除く、企業ネットワークの外部に存在するクライアントからのアクセスを、そのクライアント IP アドレスに従ってブロックします。 この規則セットは、[すべてのユーザーにアクセスを許可する] という名前の既定の発行承認規則に基づいています。 要求規則ウィザードを使用して Office 365 証明書利用者信頼に発行承認規則を追加するには、次の手順を実行します。
Office 365 へのすべての外部アクセスをブロックする規則を作成する方法
- [スタート] ボタンをクリックし、[プログラム]、[管理ツール] の順にポイントして [AD FS 2.0 の管理] をクリックします。
- コンソール ツリーの [AD FS 2.0]、[信頼関係] の下にある、[証明書利用者信頼] をクリックし、[Microsoft Office 365 ID プラットフォーム] 信頼を右クリックして、[要求規則の編集] をクリックします。
- [要求規則の編集] ダイアログ ボックスで、[発行承認規則] タブを選択し、[規則の追加] をクリックして、要求規則ウィザードを開始します。
- [規則テンプレートの選択] ページの [要求規則テンプレート] の下にある、[カスタム規則を使用して要求を送信] を選択して、[次へ] をクリックします。
- [規則の構成] ページの [要求規則名] に、この規則の表示名を入力します。 [カスタム規則] の下に、次の要求規則言語構文を入力するか貼り付けます。
exists([Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-proxy"]) && NOT exists([Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-client-application", Value=="Microsoft.Exchange.Autodiscover"]) && NOT exists([Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-client-application", Value=="Microsoft.Exchange.ActiveSync"]) && NOT exists([Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-forwarded-client-ip", Value=~"customer-provided public ip address regex"]) => issue(Type = "https://schemas.microsoft.com/authorization/claims/deny", Value = "true");
- [完了] をクリックします。 [発行承認規則] の一覧の [すべてのユーザーにアクセスを許可する] 規則のすぐ下に新しい規則が表示されていることを確認します。
- 規則を保存するため、[要求規則の編集] ダイアログ ボックスで [OK] をクリックします。
注意
上の [パブリック IP アドレス正規表現] の値を有効な IP 式に置き換える必要があります。詳細については、「IP アドレス範囲式の構築」を参照してください。
シナリオ 3: ブラウザー ベースのアプリケーションを除く Office 365 へのすべての外部アクセスをブロックする
この規則セットは、[すべてのユーザーにアクセスを許可する] という名前の既定の発行承認規則に基づいています。 要求規則ウィザードを使用して Microsoft Office 365 ID プラットフォーム証明書利用者信頼に発行承認規則を追加するには、次の手順を実行します。
Note
このシナリオは、パッシブ (Web ベース) 要求を使用するクライアント アクセス ポリシー ヘッダーに制限があるため、サード パーティのプロキシではサポートされていません。
ブラウザー ベースのアプリケーションを除く Office 365 へのすべての外部アクセスをブロックする規則を作成する方法
- [スタート] ボタンをクリックし、[プログラム]、[管理ツール] の順にポイントして [AD FS 2.0 の管理] をクリックします。
- コンソール ツリーの [AD FS 2.0]、[信頼関係] の下にある、[証明書利用者信頼] をクリックし、[Microsoft Office 365 ID プラットフォーム] 信頼を右クリックして、[要求規則の編集] をクリックします。
- [要求規則の編集] ダイアログ ボックスで、[発行承認規則] タブを選択し、[規則の追加] をクリックして、要求規則ウィザードを開始します。
- [規則テンプレートの選択] ページの [要求規則テンプレート] の下にある、[カスタム規則を使用して要求を送信] を選択して、[次へ] をクリックします。
- [規則の構成] ページの [要求規則名] に、この規則の表示名を入力します。 [カスタム規則] の下に、次の要求規則言語構文を入力するか貼り付けます。
exists([Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-proxy"]) && NOT exists([Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-forwarded-client-ip", Value=~"customer-provided public ip address regex"]) && NOT exists([Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-endpoint-absolute-path", Value == "/adfs/ls/"]) => issue(Type = "https://schemas.microsoft.com/authorization/claims/deny", Value = "true");
- [完了] をクリックします。 [発行承認規則] の一覧の [すべてのユーザーにアクセスを許可する] 規則のすぐ下に新しい規則が表示されていることを確認します。
- 規則を保存するため、[要求規則の編集] ダイアログ ボックスで [OK] をクリックします。
シナリオ 4: 指定された Active Directory グループの Office 365 へのすべての外部アクセスをブロックする
次の例では、IP アドレスに基づいて内部クライアントからのアクセスを有効にします。 これは、指定された Active Directory グループ内の個人を除き、外部クライアント IP アドレスを持つ企業ネットワークの外部に存在するクライアントからのアクセスをブロックします。この規則セットは、[すべてのユーザーにアクセスを許可する] という名前の既定の発行承認規則に基づいています。 要求規則ウィザードを使用して Microsoft Office 365 ID プラットフォーム証明書利用者信頼に発行承認規則を追加するには、次の手順を実行します。
指定された Active Directory グループの Office 365 へのすべての外部アクセスをブロックするルールを作成する方法
- [スタート] ボタンをクリックし、[プログラム]、[管理ツール] の順にポイントして [AD FS 2.0 の管理] をクリックします。
- コンソール ツリーの [AD FS 2.0]、[信頼関係] の下にある、[証明書利用者信頼] をクリックし、[Microsoft Office 365 ID プラットフォーム] 信頼を右クリックして、[要求規則の編集] をクリックします。
- [要求規則の編集] ダイアログ ボックスで、[発行承認規則] タブを選択し、[規則の追加] をクリックして、要求規則ウィザードを開始します。
- [規則テンプレートの選択] ページの [要求規則テンプレート] の下にある、[カスタム規則を使用して要求を送信] を選択して、[次へ] をクリックします。
- [規則の構成] ページの [要求規則名] に、この規則の表示名を入力します。 [カスタム規則] の下に、次の要求規則言語構文を入力するか貼り付けます。
exists([Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-proxy"]) && exists([Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid", Value =~ "Group SID value of allowed AD group"]) && NOT exists([Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-forwarded-client-ip", Value=~"customer-provided public ip address regex"]) => issue(Type = "https://schemas.microsoft.com/authorization/claims/deny", Value = "true");
- [完了] をクリックします。 [発行承認規則] の一覧の [すべてのユーザーにアクセスを許可する] 規則のすぐ下に新しい規則が表示されていることを確認します。
- 規則を保存するため、[要求規則の編集] ダイアログ ボックスで [OK] をクリックします。
上記のシナリオで使用される要求規則言語構文についての説明
説明 | 要求規則言語構文 |
---|---|
すべてのユーザーにアクセスを許可する既定の AD FS 規則。 このルールは、Microsoft Office 365 ID プラットフォーム証明書利用者信頼の発行承認規則の一覧に既に存在している必要があります。 | => issue(Type = "<https://schemas.microsoft.com/authorization/claims/permit>", Value = "true") ; |
この句を新しいカスタム規則に追加すると、要求がフェデレーション サーバー プロキシから取得される (つまり、x-ms-proxy ヘッダーがある) ことが指定されます。 | |
すべてのルールにこれを含めるのが推奨されます。 | exists([Type == "<https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-proxy>"] ) |
定義された許容範囲内の IP を持つクライアントからの要求であることを確認するために使用されます。 | NOT exists([Type == "<https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-forwarded-client-ip>", Value=~"customer-provided public ip address regex"]) |
この句は、アクセスするアプリケーションが Microsoft.Exchange.ActiveSync でない場合は要求を拒否するように指定するために使用されます。 | NOT exists([Type == "<https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-client-application>", Value=="Microsoft.Exchange.ActiveSync"]) |
このルールを使用すると、呼び出しが Web ブラウザーを通じて行われたかどうかを判断でき、拒否されません。 | NOT exists([Type == "<https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-endpoint-absolute-path>", Value == "/adfs/ls/"]) |
この規則は、(SID 値に基づいて) 特定の Active Directory グループ内のユーザーのみを拒否することを示します。 このステートメントに NOT を追加すると、場所に関係なく、ユーザーのグループを許可するという意味になります。 | exists([Type == "<https://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid>", Value =~ "{Group SID value of allowed AD group}"]) |
これは、先行するすべての条件が満たされたときに拒否を発行するために必要な句です。 | => issue(Type = "<https://schemas.microsoft.com/authorization/claims/deny>", Value = "true"); |
IP アドレス範囲式の構築
x-ms-forwarded-client-ip 要求は、現在 Exchange Online によってのみ設定される HTTP ヘッダーから設定されます。Exchange Online は、認証要求を AD FS に渡す際にこのヘッダーを設定します。 要求の値には、次のいずれかです。
注意
Exchange Online では、現在は IPV4 アドレスのみがサポートされており、IPV6 アドレスはサポートされていません。
1 つの IP アドレス: Exchange Online に直接接続するクライアントの IP アドレス
注意
企業ネットワーク上のクライアントの IP アドレスは、その組織の送信プロキシまたはゲートウェイの外部インターフェイス IP アドレスとして表示されます。
VPN または Microsoft DirectAccess (DA) によって企業ネットワークに接続されているクライアントは、VPN または DA の構成によって、企業内部のクライアントとして表示される場合と外部クライアントとして表示される場合があります。
1 つ以上の IP アドレス: Exchange Online は、接続しているクライアントの IP アドレスを特定できない場合、x-forwarded-for ヘッダーの値に基づいて値を設定します。これは、HTTP ベースの要求に含めることができる非標準ヘッダーであり、市場の多くのクライアント、ロード バランサー、プロキシでサポートされます。
Note
クライアント IP アドレスとその要求を渡した各プロキシのアドレスを示す複数の IP アドレスは、コンマで区切られます。
Exchange Online インフラストラクチャに関連する IP アドレスは一覧に表示されません。
[正規表現]
IP アドレスの範囲を一致する必要がある場合は、比較を実行するために正規表現を構築する必要があります。 次の一連の手順では、次のアドレス範囲に一致するようにこのような式を構築する方法の例を示します (パブリック IP 範囲に一致するようにこれらの例を変更する必要があることに注意してください):
- 192.168.1.1 – 192.168.1.25
- 10.0.0.1 – 10.0.0.14
まず、1 つの IP アドレスと一致する基本的なパターンは次のようになります。\b###.###.###.###\b
これを拡張して、次のように OR 式を使用すると、2 つの異なる IP アドレスと一致させることができます。\b###.###.###.###\b|\b###.###.###.###\b
したがって、2 つのアドレスのみ (192.168.1.1 または 10.0.0.1 など) と一致する例は次のようになります。\b192.168.1.1\b|\b10.0.0.1\b
これが、任意のアドレスを入力するのに使える手法です。 192.168.1.1 – 192.168.1.25 のようにアドレスの範囲を許可する必要がある場合は、次のように、文字ごとに一致を行う必要があります。\b192.168.1.([1-9]|1[0-9]|2[0-5])\b
注意
IP アドレスは、数値ではなく文字列として扱われます。
この規則は、次のように分けられます。\b192.168.1.
これは、192.168.1. で始まる任意の値と一致します。
次は、最後の小数点の後のアドレスの部分に必要な範囲と一致します。
- ([1-9] は、1 - 9 で終わるアドレスと一致します
- |1[0-9] は、10 - 19 で終わるアドレスと一致します
- |2[0-5]) は、20 - 25 で終わるアドレスと一致します
注意
IP アドレスの他の部分から照合が始まらないようにするため、かっこを正しく配置する必要があります。
192 ブロックが一致したら、10 ブロックに対しても同様の式を記述できます。\b10.0.0.([1-9]|1[0-4])\b
これらをまとめて次の式にすると、"192.168.1.1 - 25" と "10.0.0.1 - 14" の範囲のすべてのアドレスと一致します。\b192.168.1.([1-9]|1[0-9]|2[0-5])\b|\b10.0.0.([1-9]|1[0-4])\b
式のテスト
正規表現式は非常に複雑になる場合があるので、正規表現検証ツールを使用することを強くお勧めします。 「オンライン正規表現式ビルダー」をインターネットで検索する場合は、サンプル データに対して式を試用できる優れたオンライン ユーティリティがいくつか見つかります。
式をテストする場合、一致する必要があるものについて理解することが重要です。 Exchange Online のシステムは、多くの IP アドレスをコンマで区切って送信する場合があります。 上記の式はこれに使用できます。 ただし、正規表現をテストする場合は、このことを考慮に入れることが重要です。 たとえば、次のサンプル入力を使用して、上記の例を確認できます。
192.168.1.1, 192.168.1.2, 192.169.1.1. 192.168.12.1, 192.168.1.10, 192.168.1.25, 192.168.1.26, 192.168.1.30, 1192.168.1.20
10.0.0.1, 10.0.0.5, 10.0.0.10, 10.0.1.0, 10.0.1.1, 110.0.0.1, 10.0.0.14, 10.0.0.15, 10.0.0.10, 10,0.0.1
デプロイの検証
セキュリティ監査ログ
新しい要求コンテキストの要求が送信されていて、AD FS 要求処理パイプラインで使用できることを確認するには、AD FS サーバーで監査ログを有効にします。 次に、認証要求を送信し、標準のセキュリティ監査ログ エントリの要求値を確認します。
AD FS サーバー上のセキュリティ ログへの監査イベントのログ記録を有効にするには AD FS 2.0 の監査の構成の手順に従います。
イベント ログ
既定では、失敗した要求は、アプリケーションとサービス ログ \ AD FS 2.0 \ Admin の下にあるアプリケーション イベント ログに記録されます。AD FS のイベント ログの詳細については、「AD FS 2.0 イベント ログの設定」 を参照してください。
詳細 AD FS トレース ログの構成
AD FS トレース イベントは、AD FS 2.0 デバッグ ログに記録されます。 トレースを有効にするには、AD FS 2.0 のデバッグ トレースの構成に関するページを参照してください。
トレースを有効にした後、次のコマンド ライン構文を使用して、詳細なログ記録レベルを有効にします。wevtutil.exe sl “AD FS 2.0 Tracing/Debug” /l:5
関連項目
新しい要求の種類の詳細については、AD FS の要求の種類に関するページを参照してください。