SQL Server 2008(またはR2)でWindows認証ログインを無効にできますか?


8

Windowsログインまたは混合モードを実行できますが、内部ログインのみを使用してすべてのWindowsログインをブロックするようにSQL Serverを構成できますか?

可能性のあるすべてのWindowsログインを追加し、それらを予防的(または対処的)手順として制限付き特権に設定する唯一のソリューションはありますか?

回答:


5

次の2つの理由により、完全に無効にすることはできません。

  • インストールには、ログインが用にプロビジョニングされているNT AUTHORITY\SYSTEMNT SERVICE\SQLSERVERAGENT(またはSQLエージェントサービスアカウントを含むグループ)、およびNT SERVICE\MSSQLSERVER(またはSQLデータベースエンジンサービスアカウントを含むグループ)。これらはsysadmin、SQL Serverが正しく機能するために使用可能である必要がある- レベルのログインです。

    簡単なテストでは、これらの3つのログインをすべて削除してもSQL Agentの再起動が妨げられただけであることが判明しました(データベースエンジンは正常に起動しました)が、他の2つのログインに依存する他の機能があると確信しています...それらはデフォルトで作成されました理由があるので、私はそれらをいじりません。(あなたがこれを自分でテストする場合、FYI:SSMSでのログインのDrop&Createスクリプトオプションは、サーバーロールメンバーシップをスクリプト化しません。)

  • シングルユーザーモードでは、ローカル管理者sysadminには、それらのユーザーを「含む」ログインが作成されているかどうかに関係なく、レベルの特権が自動的に付与されます。これは、車のキーをロックしたときのコートハンガーです。

他の回答で述べたように、明示的に作成されたWindowsログインのみが接続へのアクセス権を持ちます(私の元のコメントは正しくありませんでした)。ユーザーが作成したすべてのWindowsログインを削除することで、アクセスを防ぐことができます。

さらに一歩進んでWindowsログインが作成されないようにする必要がある場合は、ここから開始します(少なくとも2008年のポリシーベースの管理では、これを防ぐことができません)。

CREATE TRIGGER trg_PreventWindowsLogins
    ON ALL SERVER
    AFTER CREATE_LOGIN
AS
BEGIN

    SET NOCOUNT ON;

    IF (EVENTDATA().exist('/EVENT_INSTANCE[1]/LoginType[1]/text()[1] eq "Windows (NT) Login"') = 1)
    BEGIN
        RAISERROR(N'Not allowed to create Windows logins!', 16, 1);
        ROLLBACK;
    END

END

もちろん、十分な権限を持つ人なら誰でもこれを破ることができますが、それは別の問題です...


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.