SA Kullanıcısını Disable Edin!
Merhaba;
Bildiğiniz gibi SQL Server'ı mixed mode ile kurduğunuzda sa kullanıcısı default erişilebilir olarak gelir. SA kullanıcısı server üstünde sysadmin yetkisine sahip bir kullanıcıdır.
Best practice'lerde de göreceğiniz gibi sa kullanıcısının instance üzerinde default olarak gelmesi ciddi bir güvenlik açığı oluşurmaktadır.
Bu açığı bir nebze kapatmak için SQL Server'da hazır bir SP mevcuttur. Bu sp, sa kullanıcısının şifresini oldukça kompleks bir hale getirdikten sonra disable eder. Sadece sp'yi execute etmeniz yeterli olacaktır. Execute edebilmeniz için sysadmin yetkisine sahip başka bir account kullanarak yapmanız gerekmektedir.
Daha sonrasında eğer gerekli görürseniz sa yetkisine sahip farklı bir SQL Server kullanıcısı oluşturabilirsiniz.
EXEC sp_SetAutoSAPasswordAndDisable
SP'nin içeriği aşağıdaki gibidir.
-- Begin a transaction
BEGIN TRANSACTION
declare @stmt nvarchar(4000)
declare @sa nvarchar(128)
SELECT @sa = name
FROM sys.server_principals WHERE sid = 0x01
-- Disable Password Policy on the SA Login
SELECT @stmt = 'ALTER LOGIN ' + quotename(@sa) + ' WITH CHECK_POLICY = OFF '
EXEC(@stmt)
IF @@ERROR <> 0
BEGIN
ROLLBACK TRANSACTION
RETURN (1)
END
-- Create a New Guid as the random password
declare @randompwd UNIQUEIDENTIFIER
SET @randompwd = newid()
SELECT @stmt = 'ALTER LOGIN ' + quotename(@sa) + ' WITH PASSWORD = ' + quotename(@randompwd, '''')
EXEC(@stmt)
IF @@ERROR <> 0
BEGIN
ROLLBACK TRANSACTION
RETURN (1)
END
-- Now set the policy back
SELECT @stmt = 'ALTER LOGIN ' + quotename(@sa) + ' WITH CHECK_POLICY = ON '
EXEC(@stmt)
IF @@ERROR <> 0
BEGIN
ROLLBACK TRANSACTION
RETURN (1)
END
-- Now set the policy back
SELECT @stmt = 'ALTER LOGIN ' + quotename(@sa) + ' DISABLE '
EXEC(@stmt)
IF @@ERROR <> 0
BEGIN
ROLLBACK TRANSACTION
RETURN (1)
END
-- Commit the transaction
COMMIT TRANSACTION