ダイナミックアクセス制御~概要と設定(1)

前回、「ADFSとは?フェデレーションとは?を知る方法」を投稿させていただきました。
その中で、Active Directoryにサインインすることによって生成されるKerberosチケットには
Active Directoryで使用する情報しか入らないという話をさせていただきました。

実はこの話、Windows Server 2012から少し変わっています。
具体的にはダイナミックアクセス制御と呼ばれる機能によって、
Kerberosチケットの中に入れられる情報(=専門用語で「クレーム」といいます)をカスタマイズできるようになりました。
では、何のためにカスタマイズができるようになっているのか?
そのあたりのことについて、過去の連載で書かせていただきましたので、改めてご紹介したいと思います。

ダイナミックアクセス制御とは?

ダイナミックアクセス制御とは、ユーザーやコンピューターの属性に合わせてアクセス許可などを制御する機能である。少し思い浮かべていただきたいのだが、私たちがアクセス許可を設定するとき、どのように設定するだろうか?多くの会社では「部長だったらアクセスを許可する」とか、「営業部だったらアクセスを許可する」などと設定していると思う。そして、それを実現するために、Active Directoryのグループとして「部長のグループ」や「営業部のグループ」などを作っているわけである。

しかし、これは効率の良いやり方ではない。なぜなら、「グループ」というのはシステムの都合上、作らなければならないものであり、アクセス許可を割り当てるためだけならば、直接、部長や営業部の人にアクセス許可を割り当てればよいからである(図1)。

図3-1
図1●グループにアクセス許可を割り当てる方法では、部長のユーザーを部長グループに追加する手間が生じる

こうした効率の悪いやり方を改善したのが、ダイナミックアクセス制御である。
ダイナミックアクセス制御はとても簡単に言ってしまえば、ユーザーやコンピューターに割り当てられている、部長や営業部などという属性を参照し、それに合わせてアクセス許可が割り当てられるという仕組みになっている(図2)。

図3-2

図2●属性が部長であれば、アクセス許可を直接割り当てられる

仕組みとしての概要は以上だが、設定については少しややこしいので、順を追って解説することにする。

ダイナミックアクセス制御の全体像

ダイナミックアクセス制御を設定するときには、大きく分けて3つの設定が必要となる。

1.ダイナミックアクセス制御で利用するユーザーやコンピューターの属性に関する設定
2.アクセス許可を定義する集約型アクセスポリシーの設定
3.ファイルサーバーなど、ダイナミックアクセス制御を利用するサーバー側の設定

3つの設定のうち、集約型アクセスポリシーがアクセス許可を定義している項目で、全体として以下のような設定が入る。

image
図3●集約型アクセスポリシーの全体像

そして、図3の[クレームの種類]で定義されている属性をユーザーに割り当て、[リソースプロパティリスト]で定義されているリソースプロパティをファイルサーバーの共有フォルダーに割り当てると、集約型アクセスポリシーに基づくアクセス制御が実現する(図4)。

図3-3
図4●集約型アクセスポリシーを使ってアクセス許可が割り当てられる様子

それでは、3つの設定の中から、今回は1.のダイナミックアクセス制御で利用するユーザーやコンピューターの属性について、具体的な設定方法を解説する。

ダイナミックアクセス制御で使用する属性の定義

最初に、Active Directoryでのアクセス制御の仕組みについて簡単におさらいしておこう。

Active Directoryではドメインにログオンすると、ログオンしたユーザーの情報やユーザーが所属するグループの情報などが含まれる、トークンと呼ばれるデータが発行される。そして、ファイル共有にアクセスするときにはトークンを参照することで、ユーザーがファイル共有にアクセスできるかを判定する。(ちょっと乱暴な説明だが)簡単に説明すると、これがアクセス制御の仕組みである。

そして、ここからが本題。

今までトークンの中に含まれる内容はあらかじめ決められていたが、ダイナミックアクセス制御ではトークンの内容を拡張し、「部長」や「営業部」などの属性情報も追加で入れられるようになった。この属性情報を追加で入れるための設定がダイナミックアクセス制御を利用するために行う、最初の設定である。

具体的な設定は、[Active Directory管理センター]管理ツールから[ダイナミックアクセス制御]-[Claim Types]を開き、利用する属性を定義する(画面1)。

画面3-1
画面1●Claim Typesから新しく利用する属性を定義している様子

画面1の左側でADの属性名で選択すると、選択した属性がダイナミックアクセス制御で利用する属性として定義される。また、画面1の右側で[表示名]を指定するが、表示名とはダイナミックアクセス制御における属性の呼び名であり、ダイナミックアクセス制御の中では「要求」または「クレーム」と呼ぶことがある。混乱を避けるためにも、画面1左側で選択するADの属性名と右側で選択する表示名は同じ名前にしておいたほうが間違いないだろう。

Active Directoryの属性を調べるには?

Active Directoryユーザーの属性は、役職ならTitle、部署名ならDepartment、とあらかじめ名前が決められている。もしダイナミックアクセス制御で利用したい属性の名前がわからない場合、名前をどうやって調べればよいだろうか?という疑問がある。やり方は色々あるが、ここでは筆者おすすめの方法を紹介しよう。

[Active Directory管理センター]管理ツールから適当なユーザーをダブルクリックして開く。すると、各種属性の設定変更ができるので一度、属性の設定を行う。例えば、「事業所」という属性の名前を知りたい場合には事業所に適当な事業所名を入れておく(画面2)。

画面3-2
画面2●事業所に「埼玉支店」と入力した様子

設定したら一度[OK]を押して保存し、もう一度ユーザーをダブルクリックして開き、[属性エディター]タブをクリックする。すると、画面3で確認できるように、先ほど入れた事業所名が表示されている属性の名前が「事業所」属性の名前となる。

image
画面3●事業所属性の名前がphysicalDeliveryOfficeNameだということが確認できた

次にグループポリシーを使って、トークンの中に[Claim Types]で設定した属性(クレーム)の情報が入るように設定する。

グループポリシーの設定は、[グループポリシーの管理]管理ツールからDefault Domain Controllers Policyの編集画面を開き、[コンピューターの構成]-[ポリシー]-[管理用テンプレート]-[システム]-[KDC]から[KDC supports for claims, compound authentication and Kerberos armoring]の項目を開き、[有効]に設定する(画面4)。また、[有効]に設定するときに、同時にKerberos防御オプションで[サポート]に設定しておく。

image
画面4●ユーザー属性を扱うときはKDCフォルダーから、コンピューター属性を扱うときはKerberosフォルダーからそれぞれ設定する

参考までに、Kerberos防御オプションで[サポート]に設定しておけば、ダイナミックアクセス制御は利用できるが、Kerberos防御オプションで[常に信頼性情報を提供する]に設定すると、トークンの中に追加で属性(クレーム)が入る様子も確認できる。

具体的に確認するときには、コマンドプロンプトから「whoami /claims」コマンドを実行する(画面5)。

image
画面5●トークンの中に部署属性(Computer Departmentクレーム)の値としてSalesが入っていることが確認できる

■ ■ ■

今回は、ダイナミックアクセス制御を利用するための3つの設定のうち、属性の定義について解説した。本来であれば、すべてまとめて紹介したいところだが、設定項目が複雑なので、回を分けて丁寧に解説させていただきたいと考えている。というわけで、次回は集約型アクセスポリシーについて解説する。