コード グループ属性を使用した管理
更新 : 2007 年 11 月
エンタープライズ管理者が、複数のワークステーションに適用されるセキュリティ ポリシーを管理するとします。通常のエンタープライズ ドメインでは、ネットワーク管理者がすべてのサーバーおよびクライアントに対する管理権限を持っています。しかし、個々のユーザーが特定のワークステーションに対する管理権限を持っている場合も珍しくありません。その結果、ネットワーク管理者がエンタープライズ ポリシー レベルにおける管理権限を持ち、ワークステーションの管理者がコンピュータ ポリシー レベルにおける管理権限を持つという状況が生まれます。この場合、エンタープライズ ポリシーが優先的に評価され、コンピュータ ポリシーではエンタープライズ レベルの管理者が決定したセキュリティ設定を緩めることはできないため、ネットワーク管理者の方がポリシーに与える影響力は大きいと考えられます。しかし、マシン レベルの管理者もセキュリティを厳しくすることはできるため、本来は実行を許可されるはずの信頼されたアプリケーションを実行できないようにしてしまう可能性もあります。このような理由から、高いポリシー レベルでは、それより低いポリシー レベルにおける設定を評価しないように設定できるようになっています。
そのためには、セキュリティ ポリシー ツールを使用して、コード グループに LevelFinal 属性または Exclusive 属性を適用します。
LevelFinal 属性
LevelFinal 属性をコード グループに適用すると、現在のレベルよりも低いレベルにおける設定は評価されなくなります。たとえば、エンタープライズ レベルでローカル イントラネット コード グループに LevelFinal 属性を適用した場合、マシン レベルの管理者が設定を変更しても、マシン レベルのすべてのコード グループは評価対象から外されます。LevelFinal 属性をコード グループに適用すると、そのコード グループに関連付けられているアセンブリに与えられるアクセス許可が、下位のポリシー レベルの管理者が行った変更によって減ってしまうという事態を回避できます。既定またはカスタムのコード グループに LevelFinal 属性を設定する方法については、.NET Framework 構成ツール (Mscorcfg.msc) またはコード アクセス セキュリティ ポリシー ツール (Caspol.exe) のトピックを参照してください。
Exclusive 属性
Exclusive 属性をコード グループに適用すると、そのコード グループに属するアセンブリに与えるアクセス許可を共通言語ランタイムが計算するときに、そのグループと同じポリシー レベルに属する他のコード グループは評価対象から外されます。ただし、現在のレベルよりも上位と下位のレベルは評価対象となります。この属性を適用すると、現在のポリシー レベルにおいて、特定のコード グループに一致するアセンブリに与えるアクセス許可について、そのグループが単独で設定を適用できるようになります。この属性は、特定のアセンブリに対して、同じポリシー レベルの他のコード グループからはアクセス許可を付与できないようにして、特定のアクセス許可セットを与える場合に役立ちます。
アセンブリがこの属性を適用された複数のコード グループに属する場合、そのアセンブリは実行できません。したがって、カスタム セキュリティ ポリシーを管理する場合は、Exclusive 属性は多用しないようにしてください。組み込みまたはカスタムのコード グループに Exclusive 属性を設定する方法については、「.NET Framework 構成ツール (Mscorcfg.msc)」または「コード アクセス セキュリティ ポリシー ツール (Caspol.exe)」を参照してください。