Silverlight をインストールするには、ここをクリックします*
Japan変更|すべてのMicrosoft のサイト
MSDN
|MSDN ライブラリ|デベロッパー センター|ダウンロード情報|開発ツール製品|コミュニティ|ご意見・ご要望|サイトマップ
Windows Developer Center  
MSDN Home > Windows デベロッパーセンター > 技術資料 > Windows 技術資料一覧 > Windows Server 2003 承認マネージャのダイナミック グループ

Windows Server 2003 承認マネージャのダイナミック グループ


Mohan Rao Cavale
Microsoft Corporation

January 2003
日本語版最終更新日 2005 年 5 月 25 日

対象 :
   Windows® Server 2003
   Windows Server 2003, Enterprise Edition
   Authorization Manager MMC UI

概要 : 役割ベースの承認グループの導入と Windows Server 2003, Enterprise Edition 承認マネージャのダイナミック グループ機能の利用について説明します。

目次

Azman ダイナミック グループ
背景
承認マネージャでの役割ベースのアクセス制御
アプリケーション グループ
AzMan を使用してダイナミック グループを作成する方法
プログラムでダイナミック グループを作成する方法
まとめ

Azman ダイナミック グループ

分散アプリケーション開発の採用が増加したことにより、 アプリケーション セキュリティに対する認識が高まってきました。 ソフトウェア コンテキストでは、セキュリティに関して次の 2 つの質問が生じます。 つまり、"ユーザーが誰 ?" で "そのユーザーに何ができるか ?" ということです。

最初の質問は、認証について、つまりユーザーの ID を証明するプロセスについて言及しています。 原則 (ユーザーやコンピュータなどの、認証できる任意のエンティティ) を確認した後の次の手順は、アクセス許可に基づいて、ネットワーク リソースの特定のセットへのアクセスを承認することです。

Windows Server 2003, Enterprise Edition は、役割ベースの承認ポリシーを導入します。 管理者は役割ベースの承認により、 企業の組織的な構造に基づいてセキュリティ ポリシーを容易に実装できます。 新しい役割ベースのモデルが提供する重要な機能は、 ユーザーのグループを作成する機能です。 グループは Active Directory に存在するグループと同様ですが、 アプリケーションの特定のセット、単一のアプリケーション、またはアプリケーション内のスコープに対して管理されます。 役割ベースのグループを作成して管理するには、 ドメインの管理権限は必要ありません。 また、グループ メンバーシップを、 アプリケーションを実行する前に明示的に設定する必要はなく、 アプリケーションを実行しながら動的に決定できます。

背景

Windows NT® システムまたは Windows 2000 システムでは、 アクセス制御のメカニズムを使用して承認が行われます。 そのメカニズムは、システム オブジェクトのアクセス許可を定義するアクセス制御リスト (ACL) だけでなく、 Active Directory に格納されたエントリも使用します。 各オブジェクトは、そのオブジェクトの権利の特定のセットを含むトラスティ (ユーザー アカウント、グループ アカウント、またはログイン セッション) に関連付けられたリストを保持します。 管理者が指定されたアプリケーション役割をサポートするには、 管理者がシステムのすべてのオブジェクトを列挙して、 アプリケーション ユーザーにそのオブジェクトへの適切なアクセスを許可する必要があります。

管理を合理化する取り組みとして、セキュリティ モデルに Windows NT グループを導入しました。 Windows NT グループは、権利とアクセス許可を一度に複数のユーザー アカウントに割り当てる便利な手段です。 あるユーザー グループに所属するユーザー全員に、 そのグループのすべてのアクセス許可やアクセス権を与えます。 ユーザーが、Windows NT ドメインまたは Windows 2000 ドメインにログオンすると、 オペレーティング システムがそのユーザーの一意のアクセス トークンを作成します。 このトークンは、ユーザーおよびユーザーと関連付けられたすべてのグループを識別します。 ユーザーが、共有リソースへのアクセス、 またはプログラムを実行するユーザーのアカウントへのアクセスを要求するごとに、 Windows NT がトークンをアクセス許可と照合して、 アクセスを許可するかどうか判断する答申を返します。

システムのオブジェクト数が増加するにつれて、 オブジェクトごとに特定のユーザーや特定のグループに指定されたクエリ アクセスが面倒になります。 このことは継承により簡単になるように思えますが、 継承を回避する各オブジェクトの機能により、 各オブジェクトを調査して承認ポリシーを完全に理解することが必要になります。 単に、オブジェクトが多すぎて調査ができず、 特定のグループや特定のユーザーに対するアクセス制御の状態が確認されないことはよくあります。

ACL ベースのアクセス制御を適用しているグループを使用するアプリケーションのセキュリティも、 アクセス制御リストとアクセス制御リストを使用するセキュリティ原則のタイムリーな管理に依存します。 Windows NT グループは、ドメイン管理者が作成して管理します。 多くの企業は、重要な組織的なプロセスを必要とします。 そのプロセスとは、新しいグループの作成要求、 または既存のグループの修正要求に応答するためのプロセスです。 グループ変更の要求と要求を満たすドメイン管理者との時間のずれにより 、 アプリケーションやアプリケーションに必要なリソースへのアクセスを間違って拒否されるユーザーもいれば、 間違って許可されるユーザーもいます。

承認マネージャでの役割ベースのアクセス制御

Windows Server 2003, Enterprise Edition は、 承認マネージャというドメイン管理権を必要としない、 新しい役割ベースのアクセス制御インターフェイスを導入します。 この役割ベースのアクセスを使用するアプリケーションは、 アプリケーションが実行するタスクに関連した ("営業部長" などの) 論理的な役割を使用するように構築されます。 特定のユーザーを役割に割り当てることができます。 または、 ユーザーをグループに集約し、そのグループに役割を割り当てることができます。 承認管理者は、アプリケーションがサポートするタスクのコレクションとして役割を作成した後で、 ユーザーとグループに役割を割り当て、タスクを実行する権限を与えます。

アプリケーション グループ

ドメイン ユーザーとグループ アカウントを、 アプリケーションが公開する論理的な役割に割り当てると、 ユーザーがアプリケーションにアクセスできるようになります。 また、承認マネージャは、 承認ストアに保持されるアプリケーション グループを作成して、 グループ化の中間層をサポートします。 ユーザーをアプリケーション グループに割り当てることができ、 その後そのグループをアプリケーションの役割に割り当てることができます。

開発者と管理者がアプリケーションを構築して管理できるように、 承認マネージャは 2 種類のアプリケーション グループをサポートします。 2 種類のアプリケーション グループとは、 基本グループとダイナミック グループ (LDAP クエリのグループ)です。 いずれかの種類のグループを使用して、 ユーザーをアプリケーションが公開する論理的な役割に割り当てます。

アプリケーション基本グループ

アプリケーション基本グループは、 メンバのセキュリティ原則のコレクションであり、 従来の Windows NT グループと同様です。 ただし、従来の Windows NT グループと異なり、 アプリケーション基本グループには、セキュリティ原則の非メンバ (または除外) リストも含まれます。 これにより、オブジェクトへのアクセスに関する (従来は拒否 ACE で実行した) 例外が許可されます。 非メンバ リストに追加されたセキュリティ原則は、 メンバ リストで直接または間接的にメンバーシップが与えられている場合でも、 決してグループのメンバになりません。 つまり、Bob を除く全員にアクセス権が与えられている場合、 Bob は非メンバ リストに載っているのでアクセス権を保持しません。

LDAP クエリ グループ

Active Directory アカウントの特定の属性 (または属性のセット) で識別できるユーザーのコレクションに対して、 グループを作成することがよくあります。 たとえば、直接報告者を保持する Active Directory のすべてのメンバに対して、Manager グループを作成できます。 これは、既存の Active Directory 情報を使用して、 グループ メンバーシップを管理する (同期にしておく) ことを必要とします。 Active Directory を更新して、 以前は何も保持しなかったユーザーに直接報告者を追加した場合、Manager グループも更新されるまでは、 Manager グループは既に正確ではなくなります。

Active Directory プロパティを使用して、 複数の場所にある同じ情報を管理することから管理者を解放するために、 承認マネージャは LDAP クエリのグループを提供します (LDAP は、Lightweight Directory Access Protocol のことです)。 LDAP クエリ グループのメンバーシップは、 指定されたユーザー オブジェクトの LDAP クエリを使用して決定します。 その結果、管理者はこれらのグループのメンバーシップを管理することから解放されます。 メンバーシップは、クエリの結果で決まります。 アプリケーション管理者は、ユーザー アカウントのプロパティに関して LDAP クエリ グループを作成することで、 メンバーシップを制御します。 つまり、Manager グループは LDAP クエリで定義され、 直接報告者を保持するすべてのユーザーを判断します。

以下は、グループを生成するために使用できる LDAP クエリの一例です。

成人全員

(age>=18)

ドイツのユーザー全員

(country=Germany)

ドイツの成人全員

(&(age>=18)(country=Germany))

AzMan を使用してダイナミック グループを作成する方法

Authorization Manager MMC UI (AzMan.mmc) を使用して、 承認マネージャ アプリケーションを管理します。 管理者は AzMan.mmc を使用して、 ユーザーとグループをアプリケーション役割に割り当て、 アプリケーション グループを作成できます。

全社員が支払いを送信できますが、 マネージャだけが支払いを承認できるアプリケーションについて考えます。 企業は、Active Directory 情報のユーザーのタイトルに "manager" という語を含めることで、 マネージャを識別します。 次の LDAP クエリは、マネージャのセットを返します。

(title=Manager)

承認マネージャにより、 グループを特定のアプリケーションにスコープを設定できます。 以下の 2 つの図は、 管理者が Authorization Manager MMC UI を使用して、LDAP クエリ グループを作成できる方法を示しています。 この例では、新しいアプリケーション グループを作成して、JetExpense アプリケーションにスコープを設定しています。

図 1 新しいアプリケーション グループの作成

各アプリケーション グループは、(必須の) 名前と省略可能な説明を保持します。 グループの種類 (基本または LDAP クエリ) は、 グループを作成するときに選択する必要があります。

図 2 アプリケーション グループ プロパティ

管理者は [クエリ] タブで、グループのメンバを識別するために使用する LDAP クエリ ステートメントを入力できます。

図 3 アプリケーション グループ向けの LDAP クエリ

アプリケーション グループを作成した後は、 そのグループを役割に割り当てる必要があります。 サンプル アプリケーションは、Manager 役割を保持し、 支払いを承認する権威を持つ人を判断します。 Manager グループの一員であるユーザーが、Manager 役割の実際のメンバを判断します。 Azman.mmc ユーザー インターフェイスを使用して、 アプリケーション グループを任意の特定の役割に割り当てることができます。

図 4 グループを役割に割り当てる

管理者がアプリケーション グループを役割に割り当てることを選択すると、 アプリケーション グループのリストが表示されます。 そのリストは、メンバが役割の一員であると考えられる任意の適切なグループを選択する機能を提供します。

図 5 役割に対するアプリケーション グループの選択

プログラムでダイナミック グループを作成する方法

承認マネージャは、承認 API に対するプログラム インターフェイスを提供します。

次のコードは、承認ストアとそのストア内のアプリケーションを作成します。

'--- 管理マネージャ オブジェクトを初期化します
Dim pAzManStore
Set pAzManStore = CreateObject("AzRoles.AzAuthorizationStore")

'--- expense アプリケーションの新しいストアを作成します
' AZ_AZSTORE_FLAG_CREATE            = 0x1,
' AZ_AZSTORE_FLAG_MANAGE_STORE_ONLY = 0x2,
' AZ_AZSTORE_FLAG_BATCH_UPDATE      = 0x4,

pAzManStore.Initialize 1+2+4, "msxml://C:\AzPolicy.xml"
pAzManStore.Submit
'--- Expense アプリケーションを作成します
Dim App1
Set App1 = pAzManStore.CreateApplication("Expense")

アプリケーション オブジェクトを使用して、LDAP クエリ グループを作成できます。

'----- ストアではなく、アプリケーションにスコープを設定する ------
'----- アプリケーション グループを作成し、LDAP クエリを実行します ------
Set AppGroup = App1.CreateApplicationGroup("Purchasing Agents",VT_EMPTY)
AppGroup.Type = AZ_GROUPTYPE_LDAP_QUERY
AppGroup.Description = "Users with purchasing authority"
AppGroup.LdapQuery = _
  "(memberOf= CN=purchasers,OU=Distribution Lists,DC=enterprise,DC=com)"

'----- アプリケーション グループへの変更を保存してから、アプリケーションへの変更を保存します。------
AppGroup.Submit
App1.Submit

最終的に、新しいグループを適切な役割に割り当てます。

'--- Manager グループを Manager 役割に追加します--------------------------
RoleB.AddAppMember("Purchasing Agents")
RoleB.Submit

まとめ

Windows Server 2003, Enterprise Edition は、 役割ベースのアクセス制御を提供する 承認マネージャを導入します。 役割ベースのアプリケーションの管理者は、 ユーザーやユーザーのグループを、 アプリケーションが公開する論理的な役割に割り当てます。 承認マネージャが提供する LDAP クエリ グループは、Active Directory 属性に基づいて、 実行時に LDAP クエリ グループのグループ メンバーシップを決定します。 Active Directory 属性は、複製情報を管理するという役目から管理者を解放する一方で、 タイムリーで正確なグループ メンバーシップを提供します。


Microsoft