5

メイン ドメインに保持したいデータベースがありますが、ドメイン管理者がそのデータベースに書き込めないようにしています。読み取りアクセスは問題ではありません。これを行うには、書き込み権限を持つすべてのアカウントが SQL ログインのみを使用するようにする必要があるようです (ドメイン管理者は他のドメイン アカウントのパスワードをリセットできるため)。これには他のセキュリティへの影響があることを認識しています。もう 1 つの問題は、Windows サーバーの管理者がデータベースの mdf ファイルを取得して別のインスタンスにアタッチし、データベースの内容を変更してから、元のサーバーの mdf を置き換えるシナリオです。これが可能かどうか、またはSQLサーバーを介して再接続する必要があるかどうか最初に疑問に思いますか?

サーバーはまだドメイン上にあるため、ドメイン管理者は明らかにサーバー上の管理者になります。私が心配する必要があるデータベースへの書き込みアクセスを取得する他の方法はありますか (master データベース mdf の削除など)。

4

1 に答える 1

6

わお。大きな質問です....あなたがデータベース管理者だと思いますか? 続行する前に、簡単な免責事項: ログイン権限の変更には細心の注意を払ってください。特に、sysadmin 固定サーバー ロールの一部であるログイン。その役割からすべてのログインを削除できる可能性があります。サーバーが Windows 認証のみを使用している (または誰も sa パスワードを知らない) 場合、SQL インスタンスからロックアウトされる可能性があります。それは悪いことです。ひどい...

サーバーレベルのログイン ドメイン管理者と SQL サーバーのシステム管理者は同等ではありません。SSMS を使用している場合は、Security|Logins を掘り下げて展開します。「BUILTIN\Administrators」ログイン アカウントが存在する可能性があります。それをダブルクリックして、そのログインのプロパティを確認します。「サーバーの役割」を選択します。「sysadmin」サーバー ロールがチェックされている場合、すべてのドメイン管理者が SQL インスタンスに対する「sysadmin」権限を持っています。チェックを外すと、その特権が奪われます。ドメイン管理者 (またはローカル マシン管理者) が sysadmin 特権を持つには、sysadmin サーバー ロールに明示的に追加する必要があります。以前のバージョンの SQL (2000 およびおそらく 2005) では、BUILTIN\Administrators は既定で sysadmin の一部でした。これはセキュリティ上の問題であったため、MS は後のバージョンでこれを変更しました。ドメイン管理者がそれぞれ独自のログイン (つまり、YourDomain\JSmith) を持っている場合、それらの個々のログインを sysadmin ロールから削除する必要があります。これにより、sysadmin の一部であるすべてのログインが表示されます。 SELECT * FROM sys.syslogins WHERE sysadmin = 1

データベース ユーザー 次に、SQL Server ログインに関連付けられているローカル データベース ユーザーを特定する必要があります。Sysadmin ログインは、データベース所有者 (db_owner) として自動的に接続するため、データベース ユーザー (デフォルト以外) が表示されない場合があります。SSMS から、YourDbName|Security|Users を掘り下げて展開します。ユーザーをダブルクリックして、[プロパティ] ダイアログを開きます。「一般」ページには、そのユーザーのログインが表示されます。「メンバーシップ」には、ユーザーが属するデータベース レベルのロールが表示されます。ネットワーク管理者の SQL サーバー ログインにマップされるユーザーがいる場合は、すばらしいことです。ただし、仮説として、BUILTIN\Administrators sql ログインを sysadmin 固定サーバー ロールから削除すると、そのログインはデータベースに dbo として接続できなくなります。新しいデータベース ユーザーを作成し、それをログインに関連付ける必要があります。CREATE USER [DomainAdminUser] FOR LOGIN [BUILTIN\Administrators] 次に、ユーザーのアクセス許可の階層化を開始できます。読み取りアクセスのみを許可する必要がありますよね? db ユーザーを固定 db ロール db_datareader: に追加します EXEC sp_addrolemember N'db_datawriter', 'DomainAdminUser'。さらに権限が必要な場合は、必要に応じて追加します。

あなたが言及した他のことは、ドメイン管理者がデータベースを切り離し、sysadmin権限を持つ別のSQL Serverインスタンスに接続し、データベース内のデータを変更してから、元のSQL Serverインスタンスに再接続する可能性でした. これを防ぐためにあなたができることはあまりありません。ドメイン管理者は、SQL Server NT サービスをシャットダウンし、mdf/ldf ファイルを取得して、好きなように処理することができます。これは、ドメイン管理者の側で取るには少し極端な方法のようです。これが起こった場合、それは解雇の理由になると思います。彼らは本当にここまで行くのだろうか?

最後に、SQL Server のセキュリティとアクセス許可の階層はかなり複雑です。すべての答えをこの投稿に頼らないでください。これらのリンクのいくつかから始めて、できるだけ多くのことを学んでください。

アクセス許可の階層 (データベース エンジン)

サーバー レベルの役割

データベース レベルの役割

于 2014-03-25T18:29:32.057 に答える