Tuesday, June 16, 2020

como clonar cuenta en Tsql

Necesitaba poder clonar la cuenta para deshabilitarla.

el motivo constantes intentos de acceso desde fuera de la red con intencion de usar la cuenta SA.

basado en este link 
https://www.mssqltips.com/sqlservertip/3589/how-to-clone-a-sql-server-login-part-1-of-3/


CREATE LOGIN [Bobby] WITH PASSWORD = 'User$To!Clon3@';
GO 

EXEC sp_addsrvrolemember @loginame = 'Bobby', @rolename = 'securityadmin';
GO 

EXEC sp_addsrvrolemember @loginame = 'Bobby', @rolename = 'dbcreator';
GO 

GRANT ALTER ANY SERVER ROLE TO [Bobby];
GRANT IMPERSONATE ON LOGIN::[sa] TO [Bobby];
GRANT CONTROL SERVER TO [Bobby];
GRANT ALTER ON ENDPOINT::[TSQL Default TCP] TO [Bobby];
GRANT ALTER ANY LOGIN TO [Bobby] WITH GRANT OPTION;
GRANT VIEW DEFINITION ON LOGIN::[sa] TO [Bobby];
GO

posterior a esto renombrar y deshabilitar la cuenta SA.

ALTER LOGIN [sa]
WITH NAME = [old_sa];
go
ALTER LOGIN [old_sa]
DISABLE;
go
--revisar si existe alguna conexion de SA.
SELECT sid, name
FROM sys.sql_logins
WHERE name = 'sa';
go

ademas lo complemente con que ciertos usuarios se puedan conectar nada mas.

https://www.sqlshack.com/prevent-sql-server-login-authentication-scope-using-logon-trigger/

Create TRIGGER Prevent_login
ON ALL SERVER WITH EXECUTE AS 'sa' -- or similar account
FOR LOGON
AS
BEGIN
  DECLARE @LoginName sysname
  DECLARE @LoginType sysname
  
  SET @LoginName = ORIGINAL_LOGIN()
 
  IF(@LoginName NOT IN ('sa', 'otheraccount')) 
  BEGIN
    ROLLBACK; --Disconnect the session
  END
END

si quieres mirar los logs, ejecuta esto.
exec xp_ReadErrorLog 0,1

Tuesday, May 12, 2020

desbloquear cuenta reiniciando la clave - unlock account Tsql

ALTER LOGIN ReadOnlyUser WITH PASSWORD=N'Passwd'  unlock
GO

Monday, April 27, 2020

T-Sql crear acceso solo lectura

use BBDD
go
create login ReadOnly with password='TuPasswd';
GO
create user ReadOnly for login ReadOnlyDPN;
GO
--Acceso ReadOnly
GRANT SELECT  TO ReadOnly WITH GRANT OPTION;
go

Tuesday, April 21, 2020

restaurar BBDD sql server desde SQLCMD


sqlcmd -U UserName -P Passwd -i /tuRuta/elArchivoConLosCommandos.txt

#contenido de elArchivoConLosCommandos.txt
RESTORE DATABASE [BBDD]
FROM DISK = N'/tuRuta/file.bak' WITH  REPLACE, STATS = 5
,MOVE 'NombredelArchivoLDF' TO '/var/opt/mssql/data/ComoQuieresQueQuedeElLDF.mdf'
,MOVE 'NombredelArchivo_log' TO '/var/opt/mssql/data/ComoQuieresQueQuedeEl_log.ldf'
go

#en mi caso es var/opt por que es un Linux

Montar Shared folder Ubuntu desde Consola

sudo apt-get install cifs-utils

sudo mount -t cifs -o username=UserName,vers=1.0 //IP/rutaCompartirodo /DondeloQuieresMontar/

Tuesday, April 7, 2020

Crear cuenta db owner sin acceso a otras bases de datos.

use BaseDeDatosA_CrearLogin;
go
create login LoginName with password='tuclave';
GO
create user usuario for login LoginName;
GO
use BaseDeDatosA_CrearLogin
go
exec sp_addrolemember 'db_owner', 'usuario'
go


para Azure SQL scomo servicio

--en master Azure
drop user usr_
go
drop login usr_
go
--en la BBDD destino
--en master Azure
create login usr_ with password='XXXXXXXX';
GO
--en la BBDD destino
CREATE USER usr_ FROM LOGIN usr_ ;
go
create user usr_ for login usr_ ;
GO
--en la BBDD destino
exec sp_addrolemember 'db_owner', 'usr_ '
go