ロール ベース セキュリティ

財務アプリケーションや業務アプリケーションでは、ポリシーを適用するためにロールが使用されることがよくあります。 たとえば、要求を出しているユーザーが指定のロールのメンバーかどうかに基づいて、処理するトランザクションのサイズにアプリケーションが制限を課すことがあります。 たとえば、事務員には指定のしきい値よりも小さいトランザクションを処理する権限が与えられ、スーパーバイザにはより高いしきい値が与えられ、その上司にはさらに高いしきい値が与えられる (または制限がまったくない)、という場合です。 アプリケーションで 1 つのアクションを完了するために複数の承認を必要とするときにも、ロール ベース セキュリティを使用できます。 たとえば、どの社員も購買の要求を生成できるものの、その要求を仕入先に送信できる購買発注に変換できるのは購買部門だけにする場合などが考えられます。

.NET のロール ベース セキュリティでは、関連付けられた ID で構築されるプリンシパルについての情報を現在のスレッドで使用できるようにして、認可をサポートします。 この場合の ID (および ID を利用して定義されるプリンシパル) は、Windows アカウントに基づく ID か、または Windows アカウントとは無関係のカスタム ID です。 .NET アプリケーションは、プリンシパルの ID、ロール メンバーシップ、またはその両方に基づいて、認可の決定を行うことができます。 ロールとは、セキュリティに関して同じ特権を持つプリンシパルの名前付きセット (窓口係や責任者など) です。 プリンシパルは、1 つ以上のロールのメンバーであることができます。 このため、アプリケーションはロール メンバーシップを使用して、要求されたアクションを実行する権限がプリンシパルにあるかどうかを決定できます。

使いやすさ、およびコード アクセス セキュリティとの一貫性を実現するため、.NET のロール ベース セキュリティには System.Security.Permissions.PrincipalPermission オブジェクトが用意されています。共通言語ランタイムは、このオブジェクトを使用すると、コード アクセス セキュリティ チェックに似た方法で認可を実行できます。 PrincipalPermission クラスは、プリンシパルが一致している必要のある ID またはロールを表し、宣言セキュリティ チェックと強制セキュリティ チェックの両方と互換性があります。 プリンシパルの ID 情報に直接アクセスし、必要なときに、コード内でロール チェックと ID チェックを実行することもできます。

.NET のロール ベース セキュリティのサポートには、幅広いアプリケーションのニーズを満たせるだけの柔軟性と拡張性があります。 COM+ 1.0 Services などの既存の認証インフラストラクチャと相互運用する方法と、カスタムの認証システムを作成する方法のどちらかを選択できます。 ロール ベース セキュリティは、主にサーバー上で処理される ASP.NET Web アプリケーションでの使用に適しています。 とはいえ、.NET のロール ベース セキュリティは、クライアントとサーバーのどちらでも使用できます。

このセクションを読む前に、「セキュリティの基本概念」に説明されている内容を理解しておいてください。

関連項目