内部 Web アプリケーションからデータベース層へのエンド ツー エンド認証のベスト プラクティスを探しています。
私が見た中で最も一般的なシナリオは、アプリケーションが必要とする権限に設定された単一の SQL アカウントを使用することです。このアカウントは、すべてのアプリケーション呼び出しで使用されます。次に、ユーザーがクエリ ツールを介してデータベースにアクセスする必要がある場合、またはそのような別のグループがクエリ アクセスで作成され、ユーザーにそのグループへのアクセスが付与されます。
私が見たもう 1 つのシナリオは、完全な Windows 認証エンド ツー エンドを使用することです。したがって、ユーザー自身がすべての権限が設定されたグループに追加されるため、ユーザーはアプリケーションのパラメーターの外部で更新および変更できます。これには通常、テーブルを直接更新しないように、適切なストアド プロシージャに人を保護することが含まれます。
最初のシナリオは保守が比較的簡単に見えますが、アプリケーションにセキュリティ ホールがあり、データベース全体が危険にさらされている場合に懸念が生じます。
2 番目のシナリオはより安全に見えますが、データベースのストアド プロシージャに多くのビジネス ロジックが必要になるという反対の懸念があります。これにより、Nhibernate や LINQ などの非常に優れたテクノロジの使用が制限されているようです。しかし、人々が非常に多くの異なる方法でデータを使用できるこの時代では、たとえばマッシュアップなどは、これが最善のアプローチであるとは予測していません。