クライアント承認にロールを使用する

ロールベースのセキュリティを使用して承認ポリシーを確立し、許可するクライアントと権限を決定します。 どのアクションを実行し、どのリソースにアクセスできるかを決定します。

ロールは、ユーザーがアプリケーション リソースにアクセスしようとするたびに呼び出されるアクセス制御メカニズムとして機能することで、これを容易にします。 ロールは、基本的にはユーザーの一覧です。つまり、同じセキュリティ特権を共有するユーザーのシンボリック カテゴリです。 アプリケーション リソースにロールを割り当てると、そのロールのメンバーであるすべてのユーザーに、そのリソースのアクセス許可が付与されます。

そのため、ロールとして宣言し、そのロールを特定のリソースに割り当てることで、非常に特定のセキュリティ特権を定義できます。 アプリケーションがデプロイされると、システム管理者はロールに実際のユーザーとユーザー グループを設定できます。 アプリケーションを実行すると、COM+ はロール チェックを実行してポリシーを適用します。

基本的に、ロールはコード、つまり COM+ アプリケーションのクライアントによって呼び出すことができるメソッドを保護するのに役立ちます。 ロール メンバーシップは、クライアントがアプリケーション内のコンポーネントによって公開されるメソッドを呼び出そうとするたびにチェックされます。 呼び出し元が呼び出されたメソッドまたはリソースに割り当てられたロール内にある場合、呼び出しは成功します。それ以外の場合は失敗します。

宣言型ロールベースのセキュリティ

宣言型のロールベースのセキュリティでは、コンポーネント サービス管理ツールまたは管理機能を使用してロールを管理的に宣言し、それらをアプリケーション リソースに管理的に割り当てます。 宣言型セキュリティを設定する場所と方法によって、アプリケーションのセキュリティ境界が描画される場所が決まります。 詳細については、「セキュリティ境界」を参照してください。

特定のロールをアプリケーション全体、特定のコンポーネント、コンポーネント内の特定のインターフェイス、またはインターフェイス上の特定のメソッドに割り当てることができます。 ロールの割り当ては、包含の自然なチェーンの下に継承されます。つまり、コンポーネントにロールを割り当てると、そのコンポーネントによって公開されるすべてのインターフェイスとメソッドに暗黙的に割り当てられます。

メソッド レベルのロールの割り当てを利用できるため、セキュリティを念頭に置いて設計されていないコンポーネントとインターフェイスを効果的に保護できます。 ただし、メソッド自体が宣言型ロールの割り当てでセキュリティ保護できない場合は、プログラムによるロールのチェックが必要になる場合があります。 一般に、メソッドを使用してビジネス機能を考慮する方法を決定するときは、セキュリティを念頭に置くことをお勧めします。それ以外の場合は、最後の 1 分間にセキュリティ関連のコードを追加できます。

ロールベースのセキュリティを設定する詳細な手順については、「ロールベースのセキュリティの構成」を参照してください。

プログラムによるセキュリティ

状況によっては、ロールベースのセキュリティを引き続き使用しながら、セキュリティ ロジックをコンポーネントに配置することが必要になる場合があります。 方法を通じてすべてのアクセスの決定を考慮に入れることができない、または考慮しないことを選択している可能性があります。 たとえば、メソッドの一部の呼び出し元のみにアクセスを許可し、他の呼び出し元を除外するプライベート アプリケーション リソース (特定のデータベース) があるとします。 または、1 つの TransferMoney メソッドがあり、転送できる量を制限して一部の呼び出し元を制限したい場合もあります。

このような状況では、コードでロールチェックを行うことができます。 単純な API が用意されており、セキュリティが有効になっているかどうか、および呼び出し元または特定のユーザーが特定のロールに含まれるかどうかをチェックできます。 この機能は、ロールベースのセキュリティが有効になっている場合にのみ使用できます。 つまり、十分な宣言型ロールベースのセキュリティを引き続き利用でき、必要に応じてプログラムによって細かいレベルに拡張できます。

さらに、ロールベースのセキュリティを使用すると、コンポーネントへの呼び出しチェーン内のすべてのアップストリーム呼び出し元に関する情報にプログラムでアクセスできます。 これは、詳細な監査証跡を保持する場合に特に便利です。

コードでロールチェックを実行する方法と、セキュリティ呼び出しコンテキスト情報にアクセスする方法の説明については、「プログラム コンポーネントのセキュリティ」を参照してください。

権限承認と認証

意味のある承認の前提は、クライアントが実際に自分の言う人であることを確信しているということです。 クライアント ID の検証は、認証サービスによって個別に処理されます。 認証がないと、基本的に呼び出し元が名誉システムに参加できるようになります。 COM+ アプリケーションに影響する認証の説明については、「クライアント認証」を参照してください。

ロールの効果的な設計

セキュリティ境界

セキュリティ呼び出しコンテキスト情報

セキュリティ コンテキスト プロパティ