5

アプリとバックエンドSQLServerDBを構成するためのWindowsベースのインストーラーを提供する、数多くの商用製品があります。通常、WindowsまたはSQLServer認証を使用してDBに接続するかどうかを尋ねられます。それらのほとんどは、Windows Authを使用してから、db_ownerデータベースロールに割り当てられたネットワークサービスアカウントを使用してDBを構成することを推奨しています。SQL Serverへの認証時にweb.configにクレデンシャルを保存してネットワーク経由で送信する必要がないため、Windows認証の方が安全であることを理解していますが、ネットワークサービスアカウントがdb_owner?知っておくべき特定のリスクはありますか?


StingyJackに感謝します。

あなたが言っていることを聞きました、しかし彼らは最初にネットワークサービスユーザーとしてDBにログインしなければならないでしょう。それを行う簡単な方法はありますか?

私が本当に理解しようとしているのは、db_ownerロールが割り当てられているのがデフォルトのネットワークサービスアカウントであるという事実に関連する固有のリスクがあるかどうかです。

4

3 に答える 3

3

NETWORK SERVICE を db_owner として使用することは、多くの環境でおそらく問題ありません。

高度なセキュリティが必要な場合は、別の Windows アカウントを作成し、SQL Server で必要な最小限のアクセス権を付与してから、この新しいアカウントのコンテキストでアプリケーションを実行するように変更します。

具体的なリスクは次のとおりです。

  • NETWORK SERVICE のコンテキストで実行される 1 つの適切に作成されていないアプリケーションは、NETWORK SERVICE がアクセスできる他のすべてのデータへの不正アクセスを許可する可能性があります。すべてのアプリケーションに対して個別のアカウントを作成することで、このリスクを軽減します。
  • db_owner は、アプリケーションが実際に必要とするよりも多くのアクセス権を持っている可能性が高く、侵害された場合に悪用/搾取される可能性が高くなります。付与する常識的な権限を選択することで、これをかなり減らすことができます。ただし、やりすぎると、収益が減少し、サポートの頭痛の種が増えます.
于 2008-11-25T02:34:47.790 に答える
1

はい、アプリケーション(およびそのユーザー)は、dboがデータベースに対して実行できるすべてのものを実行できる可能性があります。DROP TABLE、SELECT *FROMPASSWORDSなど。

SQLインジェクションに対する予防策を設定し、適切なアプリケーション層のセキュリティを使用してアプリケーションを作成した場合、dboでWindows認証を使用することはおそらく問題ありません。

非常に機密性の高いデータを使用している場合、アプリケーションを(まだ)信頼していない場合、または可能な限り安全にしたい場合は、データベース層にセキュリティを実装する必要があります。

たとえば、ユーザーxはテーブルビューaとbおよびビューcにアクセスでき、ユーザーyはビューcにのみアクセスできます。アプリケーションは、正しいオブジェクトにアクセスするために適切なユーザーとして接続する必要があります。

于 2008-11-17T16:04:27.583 に答える
1

ネットワーク サービス (domain\machine$) として DB にログインすることは、Web ボックスのサービスでない限り、非常に困難です (わかりませんが、l33t haxor によって可能になる可能性があります)。

パスワードはなく、インタラクティブではなく、権限が非常に限られています (「ローカル システム」を除く)。

主な問題は、SQL インジェクション攻撃です。これらは、db サーバーへのすべての接続に適用されます。

db_owner を持つことの追加のリスクは、DROP TABLE であり、DROP DATABASE タイプの攻撃ですらあります。db_owner がないと、「SELECT * FROM usertable WHERE 1=1」攻撃などの危険性が残ります。

残念ながら、商用またはサードパーティのアプリでは、ストアド プロシージャを使用したり、最小限のアクセス許可などを使用したりすることはできません。

ただし、インストール後に権限を減らすことができる場合があります。

于 2008-11-17T20:20:46.037 に答える