3

現在のイントラネット環境は少し古くなっています。現在のスタックには、SQL 2000 データベースに対してクエリを実行する ASP.NET 1.1/2.0 アプリケーションがあります。

役割のセキュリティのために、ユーザーが追加されるサーバーにはユーザー グループがあります (そのため、テスト マシンと運用マシンのグループに追加する必要があります)。これらのユーザー グループは、SQL 2000 自体のユーザー ロールに同期されます。アクセス違反を防止するために、必要に応じてストアド プロシージャへの実行権限がロールに付与されます。

Web アプリケーション レベルでは、基本認証 (Active Directory に対して認証) を使用し、ID の偽装を有効にします。データベースへの接続文字列は統合セキュリティを使用します。これにより、ユーザーがログインしたときに Web アプリケーションがデータベースに接続する環境が作成され、呼び出されるストアド プロシージャにデータベース セキュリティが適用されます。また、典型的な User.IsInRole() メソッドを使用して、アプリケーション自体内で承認を実行することもできます。

これにはいくつかの問題があります。1 つ目は、サーバー管理者のみがマシン上のユーザー グループにアクセスできるため、ロール セキュリティの更新やユーザーの追加は、アプリケーション管理者の手に負えません。さらに、ロールを取得する唯一の方法は、SQL 2005 でロックダウンされている「xp_logininfo」という SQL プロシージャを呼び出すことでした。完全な詳細はわかりませんが、DBA によると、この一般的なモデルは機能しないとのことです。新しいバージョンのスキーマの性質を考えると、SQL 2005 に適しています。

これで、環境を更新する準備が整いました。AJAX をさらに活用するために .NET 3.5 アプリを作成しており、SQL Server 2005 がデータベースの主要な環境です。セキュリティ モデルも更新して、アプリケーション管理者にとってもう少し柔軟にし、Active Directory をさらに活用できるようにすることを検討しています。

また、特定のユーザーが複数のアプリケーションにアクセスできる可能性が高いという懸念もあります。そのため、必要に応じてユーザーを簡単に削除できるように、何らかの集中型ソリューションを用意することが最適です。

この種の環境で役割のセキュリティを維持するためのベスト プラクティスは何ですか?

4

3 に答える 3

2

ASP.NET 2.0 のメンバーシップ、役割、およびプロファイル

于 2009-04-03T16:14:51.560 に答える
0

リポジトリ自体がLDAPになるように設計をリファクタリングしてみてください。したがって、基本的に、ユーザーとロールのオブジェクトはADオブジェクトをマップします。そうすれば、さまざまなシステム管理者を経由することなく、完全に制御できます。もちろん、これはコードの状態によっては簡単ではありません。ただし、最初に行う最善の方法は、ビジネスオブジェクトのADへのマッピングを実現するための小さな概念実証を作成することです。

于 2009-04-13T16:13:23.637 に答える
0

以前に行われた決定に関連する考慮事項はそれほど変わっていないと思います。

スキーマのコメントについては、データベース要素を整理するのに役立つだけなので、プロシージャ/テーブルごとに構成する代わりに、スキーマ内のすべてにアクセス許可を割り当てることができます。

信頼されたサブシステム モデルを使用する代わりに、ID フローを SQL Server に渡すかどうかに関する決定は、特定のシナリオにかなり固有のものです。とは言っても、私はそのようなアイデンティティをフローするのは好きではありません。通常、アプリケーションにはまだロジックが適用されているためです。これは、sp がおそらく部分的なルールを適用していることを意味します。そのため、このアプローチでは、ストアド プロシージャにより多くのロジックを含めることも求められます。

マシン内のユーザー グループにアクセスできる管理者のみについては、ADAM (アクティブ ディレクトリ アプリケーション モード) を検討してください。SQL Server との統合がサポートされているかどうかわからないため、そのアーキテクチャで機能するかどうかはわかりません。ただし、チェックする価値があります。

あなたの情報に基づいてロールを取得できないことに関しては、ユーザーグループと関連するデータベースロールの間に密接な関係があると思います。ユーザーが Active Directory で持っているグループ (ロール) を取得できます。

結論: ADAM がシナリオにどのように適合するかを評価し、現在の ID フロー アプローチの使用に関する考慮事項が残っているかどうかを評価します。また、アプリケーションの ID フローの変更によるプロジェクトへの影響を考慮することも忘れないでください。

于 2009-04-03T16:59:10.687 に答える