ADFSトレーニングテキスト全文公開チャレンジ(7) – クレームルール

皆さんこんにちは。国井です。
ADFSトレーニングテキスト全文公開チャレンジの7回目ですが、クレームルールの概要について解説します。
クレームルールはアクセス制御の話でよく登場しますが、ここではクレームルールとは?という話からスタートします。

■ ■ ■

スライド42

クレーム ルールはクレームを定義するための規則で、主な規則として、受け付け変換規則、発行承認規則、発行変換規則があります。

■受け付け変換規則
受け付け変換規則は、[要求プロバイダー信頼] から設定可能な規則で、認証用データベースや CP から取得する属性情報を定義するために利用します。受け付け変換規則にはあらかじめ、10 個の規則が用意されていますが、ADFS が内部的な処理を行うために用意されている規則であり、誤って削除すると ADFS によるトークン発行ができなくなるので注意してください。

誤って受け付け変換規則を削除した場合
デフォルトで用意されている受け付け変換規則を再度作成する PowerShell スクリプトが提供されているため、スクリプトを実行し、復元してください。
http://jorgequestforknowledge.wordpress.com/2013/10/07/restoring-the-default-acceptance-transform-rules-for-the-ad-cp-trust-in-adfs-v3-0/

■発行承認規則 (アクセス制御ポリシー)
発行変換規則は、[証明書利用者信頼] から設定可能な規則で、トークンの内容をもとに認可の許可/拒否の基準を定義します。

■発行変換規則 (要求発行ポリシー)
発行変換規則は、[証明書利用者信頼] から設定可能な規則で、受け付け変換規則で作成したトークンに含まれるクレームをどのように扱うかを定義するために使われます。受け付け変換規則から送信されたクレームの内容は、単純に付け替えする (パススルー) だけでなく、一部の文字列を変換したり、クレームの値を異なるクレームの値として利用するなどの変換が可能です。
それぞれの規則の中では、「ルール」を作成することができます。ルールでは、特定のデータベースから属性情報を取得したり、取得した属性情報をもとにアクセスを許可する、などの規則を定義します。

ルールは、それぞれの規則の中で 1 つまたは複数作成することができ、ルールの集合を「ルール セット」と呼びます。ルールセット内の各ルールは、ルールの内容に関わらず最後まで処理します。例えば、Administratorsグループ以外のユーザーに対してクレームの追加を拒否するルールがあった場合、Administrators グループ以外のユーザーは、該当するルールに記載されているクレームを追加することはありませんが、トークンそのものの発行を拒否したわけではなく、残りのルールは継続して処理され、クレームが追加されます。


スライド43

受け付け変換規則では、クレームにセットする属性値をデータベースから取得するためのルールを作成します。そのため、次のような要求規則テンプレートが主に利用されます。

■[LDAP 属性を要求として送信] 要求規則テンプレート
認証に使用した Active Directory から、認証したユーザーの属性値を取得するためのルール用テンプレートです。このテンプレートでは、電子メールアドレス (mailaddress 属性) や名前 (name 属性) などを Active Directory から収集できます。収集する Active Directory の属性情報は一覧から選択するだけでなく、属性名を直接入力して収集することも可能です。また、Active Directory から UPN として取得した属性値はそのまま UPN としてクレームに追加できるばかりでなく、UPN 属性値を mailaddress の属性値としてクレームに追加するなどの操作も可能です。
もし、Active Directory データベースに該当する属性値が存在しない場合、空の属性値でクレームが追加されるわけではなく、クレームそのものが発行されません。

■[グループ メンバーシップを要求として送信] 要求規則テンプレート
認証に使用した Active Directory から、認証したユーザーが所属するグループの情報を取得するためのルール用テンプレートです。所属するグループの情報をそのままクレームに追加できるばかりでなく、グループの名前を異なる名前に変換してクレームにセットすることも可能です。


スライド44

発行承認規則では、クレームの内容からリソースへのアクセスを許可または拒否するためのルールを作成します。そのため、次のような要求規則テンプレートが主に利用されます。

■[入力方向の要求に基づいてユーザーを許可または拒否] 要求規則テンプレート
受け付け変換規則で作成されたクレームの内容から、特定の条件に基づいて許可または拒否を判定するために使うテンプレートです。属性と属性値の条件を指定し、条件に一致する場合のみアクセスを許可するように定義します。

■[入力方向の要求をパススルーまたはフィルター処理] 要求規則テンプレート
受け付け変換規則で作成されたクレームの内容から、特定の条件に基づいて許可または拒否を判定するために使うテンプレートです。[入力方向の要求に基づいてユーザーを許可または拒否] テンプレートと同じく、属性と属性値の条件に基づいてアクセスの許可 / 拒否を判定しますが、このテンプレートの場合には、特定の属性のプレフィックスが特定の文字列であるか、電子メールアドレスのサフィックスが特定の文字列であるか、などの細かな条件を設定できるメリットがあります。

■[すべてのユーザーを許可] 要求規則テンプレート
受け付け変換規則で作成されたクレームの内容に関わりなく、すべてのユーザーによるアクセスを許可するときに使うテンプレートです。リソースにアクセスさせるために特に条件を設ける必要がないときに利用します。


スライド45

発行変換規則は受け付け変換規則から送信されたクレームを、どのようなクレームとして扱うかを定義するためのルールを作成します。そのため、次のような要求規則テンプレートが主に利用されます。

■[入力方向の要求をパススルーまたはフィルター処理] 要求規則テンプレート
受け付け変換規則から送信されたクレームをそのまま利用するときに使うテンプレートです。また、このテンプレートではクレームに特定の文字列が含まれる時だけパススルーするように構成することも可能です。

■[入力方向の要求を変換] 要求規則テンプレート
受け付け変換規則から送信されたクレームを違う属性として扱う場合に使うテンプレートです。例えば、受け付け変換規則で UPN として設定されたクレームを発行変換規則では電子メールアドレスとしてクレームにセットするように指示することができます。また、このテンプレートでは、属性を変換するだけでなく、属性値を変換することも可能です。例えば、title クレームに「課長」と入っている場合、「課長」を「manager」に変換して、RP 側のクレームとしてセットすることができます。


スライド46

トークンの中に組み込むクレームとして利用する属性情報は、あらかじめ ADFS 管理ツール [サービス] – [要求記述] で定義されています。クレームとして利用する属性は [要求記述] から追加してカスタマイズすることが可能です。
要求記述で定義されている個々の属性には、URL が設定されていますが、定義されている場所を表しているだけで、実際にアクセスすることはありません。そのため、インターネットへのアクセス経路を確保する必要はありません。
新規に要求記述を追加するときは、URL を指定する必要がありますが、単純に定義している場所 (URL) を指定するだけなので、http://<組織のFQDN>/claims/<属性名>/ などとしておくと良いでしょう。

編集後記

トークンの中に含まれる情報である、クレームをどうやってカスタマイズするかを定義するクレームルール。
クレームルールと言われれば何をする設定なのか想像がつくけど、ADFSサーバーのUIでは「要求規則」って言うんですよね。わかりにくい。。
ただ、説明はわかりやすくしたつもりなので、参考になれば幸いです。