viernes, 7 de marzo de 2008

VSS y NT Authority system login failure

SQL Server 2005 instala automáticamente el servicio SQL Server VSS Writer sin permiso, ni consentimiento; ni siquiera da la opción de configurarlo!

Este servicio lo emplean softwares de backup para, entre otras cosas, obtener información de archivos (de datos) abiertos (usandos por el motor SQl Server) (para más información recomiendo que leáis este artículo)

Windows 2003 incluye un servicio similar: VSSVC.exe (Volume Sow Copy Service)

Mediante una traza podemos ver qué hacen estos dos servicios:

SQL Server Writer:

select name, recovery_model_desc, state_desc, CONVERT(integer, is_in_standby) from master.sys.databases

Y para cada base de datos la siguiente consulta

select rtrim(physical_name),rtrim(type_desc),rtrim(state_desc), is_name_reserved from sys.master_files where DB_ID(N'database_name_here') = database_id


VSSVC.exe:

Exactamente lo mimso pero con otra sintáxis:

select name,convert (int,status) from master.dbo.sysdatabases

Y sobre cada bbdd:

select rtrim(filename),status & 64 from sysaltfiles where DB_ID(N'database_name_here') = dbid

Problema: Login failed for user 'NT AUTHORITY\SYSTEM'

Los dos servico VSS arrancan con 'local system account' . Una de las recomendaciones más básicas (recogio en el 'Best Practises' de Microsoft incluso) es la de eliminar los accesos de la cuenta 'builtin\administrators' (en SQL 2000 y 2005). en SQL2005 aparece una nueva cuenta, NT AUTHORITY\SYSTEM, ¿ similar a 'builtin'? Si ambas cuentas se eliminan, comienzan los 'login failures'

Como no tenemos control sobre lo que hacen los 2 servicios VSS (Volume Shadow Copy Service y/o SQL Server VSS Writer) o lo que pueden hacer a petición de un programa de backup, no me parece buena idea arrancar estos servicios con una cuenta que sea sysadmin de SQL Server (aunque esto eliminaría el problema de los login failures)


Como tampoco controlamos el software y los procedimientos de backup no parece buena elección desactivar los servicios, ya que podríamos estar cargándonos el sistema de backup de archivos abiertos.


Solucion intermedia:

En SQL 2000 añadir el login NT AUTHORITY\SYSTEM con permisos read-only sobre la master

En SQL 2005 limitar los permisos de NT AUTHORITY\SYSTEM a read-only sobre la master


Temas relacionados

Full text search también utiliza nt authority\system, y no sé si esta solucion afectaría a su funcionamiento pero eso es otra historia.

(entrada creada en colaboración con Javier González)

No hay comentarios: