ロールの効果的な設計
多くのシナリオでは、ロールベースのセキュリティは非常に効果的なメカニズムですが、効果が低い状況があります。 特定のアプリケーションにロールベースのセキュリティを適用する場所と方法を決定する際には、いくつかの要因を考慮する必要があります。
ユーザーとデータの特性とロールの適合性
ロールは、ユーザーのグループを特徴付けるために非常にうまく機能し、その基に、ユーザーが実行できるアクションをフィルター処理します。 多くの場合、これは、組織内のユーザーの場所を反映するロール ("マネージャー"、"テラー"、"管理リスト"、"閲覧者"、"Project One Employees"、"Project Two Employees" など) を作成することによって実際に行われます。このような場合、アクセスされるデータがユーザーに対してかなり汎用的である場合、ロールを効率的に使用して、次のようなビジネス ルールを適用できます。
「マネージャーは、任意の金額を転送できます。 テラーは最大 $10,000 まで転送できます。
"管理istrators can change anything. 他のすべてのユーザーは読み取り専用です。
"Project One の従業員は、特定のデータベースにアクセスできます。 他の誰もできません。
ユーザーは、ロールがビジネスの組織構造をどのようにモデル化するかに応じて、当然ながら複数のロールに分類される場合があります。
ただし、セキュリティ アクセスの決定が特定のデータの特性に依存する場合、ロールはあまりうまく機能しません。 たとえば、ロールを使用して、次のような複雑なユーザー データリレーションシップを反映することは困難です。
"特定のマネージャーは、自分のレポートに対してのみ人事データにアクセスできます。"
"Joe Consumer はアカウントの残高を調げることができます。"
このような場合、セキュリティチェックは、多くの場合、データベース自体で行う必要があります。この場合、アクセスされるデータの本質的な特性を考慮する方が簡単です。 つまり、偽装を使用してクライアント ID をデータベースに渡し、データベースに要求を検証させる必要があります。 これはパフォーマンスに影響を与える可能性があり、アプリケーションの設計に影響を与える可能性があります。たとえば、特定のユーザー ID で接続を開いたときに接続プールが機能しない場合があります。 関連する問題の詳細については、「多層アプリケーションのセキュリティとクライアントの偽装と委任」を参照してください。
ロールベースの承認ポリシーの複雑さとスケーラビリティ
どのようなセキュリティ ポリシーを設定しても、アプリケーションを展開するシステム管理者による実装と同じくらい効果的です。 管理者がセキュリティ ポリシーに従ってユーザーを正しいロールに割り当てる際に間違いを犯した場合、ポリシーは意図したとおりに機能しません。 問題は、次の状況で発生する可能性が最も高くなります。
- 多くのロールとユーザーが多数のロールにマッピングされる、非常に複雑なロールベースのポリシーを作成しました。
- ユーザーが属する必要があるユーザーに対してあいまいな条件を持つロールを作成します。
- アプリケーションがインストールされているサイトには多くのユーザーがいます。ユーザーは、作成したロールに関して組織内で頻繁に移動しています。
- アプリケーションがインストールされているサイトには多くの管理者が責任を負います。そのため、アプリケーションのセキュリティ要件に精通している管理者は、アプリケーションを使用する必要がある大規模なユーザー グループに慣れていない可能性があります。 これは、ユーザーが組織内を移動する場合に特に懸念されます。このような情報は十分に伝える必要があります。
さらに、アプリケーションに割り当てられたロールの数が増えるにつれて、COM+ がそれらのロールの呼び出し元メンバーシップの参照に費やす時間が長くなり、パフォーマンスが低下する可能性があります。
複雑さを管理し、これらの問題を軽減するには、次のガイドラインを使用できます。
- 自己説明的なロール名を選択します。 どのユーザーがどのロールに属すべきかをできるだけ明確にします。
- ロールベースのポリシーを可能な限りシンプルにします (簡単にはできません)。 有効なポリシーをメインしながら、できるだけ少ないロールを選択します。
- 管理者向けに作成するロールベースのポリシーを明確に文書化します。ロール メンバーシップが明らかであるかどうか (ユーザーには) 確認してください。 具体的には、各ロールで使用できる説明フィールドを使用して、ロールの意図を記述します。 一般的に、ロールに属する必要があるユーザーをいくつかの文で記述できない場合は、複雑すぎる可能性があります。
- アプリケーションの管理者は、個々のユーザーではなくユーザー グループをロールに設定することを強くお勧めします。 これは、はるかにスケーラブルなソリューションです。 これにより、組織内を移動するユーザーの再割り当てや削除が容易になり、管理者は一定量の監視やコミュニケーションの問題から切り離されます。
関連トピック