June 2009 - Artículos

Cómo controlar la administración de la cuenta sa (System Administrator) de SQL Server 2000

Muchas veces suele escribirse y propagarse a través de internet o por otros lados verdades a media caña bien documentadas que apuntan a ser la ley para el mundo o para muchos. Particularmente soy bastante desconfiado con casi todo el mundo, siempre trato de probar lo dicho o leído, creo poco si me cuentan que en la experiencia esto es así o en algún escenario tal o cual feature es de utilidad o se comporta anormalmente. Siempre deseo experimentarlo y comprobarlo por mi mismo, y no me contento con que me lo cuenten o con que en la documentación esté dictaminado de tal manera, todo lo documentado son cosas que debo verificar. Bien se me viene a recordar algo que leí en alguna parte:

"In theory there is no difference between theory and practice. But, in practice, there is." (Jan L.A. van de Snepscheut)

Hoy día es uno de esos tantos días que decido compartir una verdad a media caña o mentira existente en SQL Server 2000 y bien documentada, uso el término “bien” para “justificar” lo que siempre he escuchado a ciertos ponentes predicar en algunas charlas y eventos hace ya tantísimos años. Debo entender que para todos aquel que conociere algo de SQL Server es conciente de que todas las versiones y ediciones de SQL Server han dado parto a la famosa cuenta sa (system Administrator), sí, aquella cuenta heredada de sybase y que Microsoft ha empadrinado como su hijo intocable.

Bien, siempre se ha dicho que hasta SQL Server 2000 no podíamos deshacernos de esta cuenta, Microsoft siempre recomendó y sigue recomendando no usar esta cuenta y protegerlo con alguna contraseña muy compleja, pues no queda otra opción ya que según documentación y más gente esta cuenta no puede eliminarse o modificarse. Mismo Microsoft en su documentación de SQL Server 2000 (actualizado al SP3) nos dice que el privilegio sysadmin de la cuenta sa no puede cambiarse, esto para muchos ha sido un mandamiento, a las pruebas me remito: http://msdn.microsoft.com/en-us/library/aa905197(SQL.80).aspx 

System administrator (sa) is a special login provided for backward compatibility. By default, it is assigned to the sysadmin fixed server role and cannot be changed. Although sa is a built-in administrator login, do not use it routinely. Instead, make system administrators members of the sysadmin fixed server role, and have them log on using their own logins. Use sa only when there is no other way to log in to an instance of Microsoft® SQL Server™ (for example, when other system administrators are unavailable or have forgotten their passwords).

En resumen, se ha dicho hasta SQL Server 2000 que la cuenta sa no puede cambiarse de nombre ni eliminarse y mucho menos crearse una cuenta con este mismo nombre dándole el titulo de cuenta intocable y no modificable, aspecto que es totalmente falso, y esto es justamente lo que deseo compartir y demostrar en este post, …pero antes quiero aclarar que no lo hago con fines  anti Microsoft ni con el ánimo de fastidiar a alguien, el único fin es aportar con fines profesionales evitando interpretaciones parciales, considerando importante y crítico todo aspecto relacionado a seguridad lo cual debe saberse para reducir la superficie de ataque en los pocos o muchos servidores en SQL Server 2000 que puedan aún seguir vivos a lo largo y ancho del planeta…  y si hay algún pingüino por aquí buscando algún motivo para fastidiar, es mejor que se abstenga con sus comentarios.

Toda la demostración debe comprobarlo usted sobre un servidor de base de datos en SQL Server 2000 con Service Pack 3a. Una de las buenas prácticas de seguridad que todo DBA desea aplicar en SQL Server 2000 es eliminar la cuenta sa, o tal vez mantenerla pero quitándole el privilegio de sysadmin con fines de auditoria para saber quienes y desde donde existen usuarios que anhelan entrar al servidor con dicha cuenta, pero siempre la meta final será controlar la administración de esta cuenta, lo cual puede realizarse si nos echamos a analizar un poquito cómo se maneja la seguridad de esta cuenta. Lo primero que debemos saber es que se esconde en la base de datos master, pero dentro del archivo como tal, es decir cual es el código existente que valida restricciones para esta cuenta  y en base a que parámetros. Que les parece si detenemos el servicio del motor de base de datos y nos echamos a darle un vistazo al archivo mdf de la base de datos master, y encontraremos entre tanto código lo siguiente:

-- CANNOT CHANGE SA ROLES -- 
if @loginame = 'sa' 
begin 
   
raiserror(15405, -1 ,-1, @loginame) 
   
return (1) 
end

Con esto, usted puede darse cuenta que la cosa es sencilla. Basta que cambie el nombre a la cuenta sa para que pueda quitarle el privilegio de sysadmin. Si seguimos más abajo, veremos que validación de eliminación de cuenta se realiza mediante el sid, si el sid es igual a 0x01 no te dejará eliminarla. Así que para conseguir eliminar la cuenta sa, hay que cambiarle el valor del sid y adicionalmente el nombre de la cuenta.

Para conseguir estos cambios en SQL Server 2000 podemos jugar con las tablas del sistema, pero antes debemos preparar el terreno:

sp_configure 'allow updates', 1 
go 
reconfigure with override 
go 

Cuando vayamos a modificar esta cuenta SQL Server 2000 no nos dejará:

sp_dropsrvrolemember sa,'sysadmin'

Server: Msg 15405, Level 11, State 1, Procedure sp_dropsrvrolemember, Line 40 
Cannot use the reserved user or role name 'sa'.

Lo mismo sucederá cuando intentemos eliminarla:

sp_droplogin sa

Server: Msg 15405, Level 11, State 1, Procedure sp_droplogin, Line 39
Cannot use the reserved user or role name 'sa'.

Pero como nosotros ya nos autohabilitamos para modificar las tablas del sistema podemos pasar a la acción, pero antes revisemos nuestro target:

select * from sysxlogins where name='sa'

Veremos que la cuenta sa tiene como sid igual a 0x01:

srvid   sid    xstatus  xdate1                                xdate2                        name   password       dbid  language  isrpcinmap ishqoutmap selfoutmap
------  ------  -------    ------------------------          ----------------------- -        -------  ---------------    ----- ---------      ---------- ------------------ -------------
NULL  0x01   18      2000-08-06 01:27:52.687   2009-04-27 23:55:41.670  sa      0x01006E449...     1      NULL         0                  0                  0

(1 row(s) affected)

Ahora, si deseamos quitarle el privilegio de sysadmin debemos primero cambiarle de nombre a sa2 (puede ser cualquier otro nombre)

update sysxlogins set name='sa2' where name='sa'

Luego ejecutamos lo siguiente:

sp_dropsrvrolemember sa2,'sysadmin' 
go

Con resultado que nos indica éxito total, lo hemos conseguido:

'sa2' dropped from role 'sysadmin'.

Tal vez lo que usted desee ahora es eliminar esta cuenta, para esto, tiene modificar un valor más que viene a ser el sid de la cuenta:

 update sysxlogins set sid=0x02 where name='sa2' 

Finalmente eliminamos la cuenta:

sp_droplogin 'sa2'

Sucede que ya eliminamos la cuenta sa, pero que pasa si necesitamos crear nuevamente la cuenta. Se nos ocurre lo siguiente:

sp_addlogin 'sa'

El mensaje obviamente es de un error, el nombre de cuenta sa es reservada, no podremos utilizarla.

Server: Msg 15405, Level 11, State 1, Procedure sp_addlogin, Line 49
Cannot use the reserved user or role name 'sa'.

…pero podemos realizar lo siguiente para crearla:

sp_addlogin 'sa2' 
go 
sp_addsrvrolemember sa2,'sysadmin' 
go

Ahora le cambiamos de nombre a “sa”

update sysxlogins set name='sa' where name='sa2'

Si nos fijamos en el sid de esta cuenta veremos que es algo asi: 0x621D6A5D371EDA45A6502CBEFD45AD05… pero nosotros necesitamos que ésta sea igual a 0x01 pues es así como el sistema la válida para otros fines, claro suponiendo que quieres recuperar la misma cuenta que dropeaste, pero si éste no fuera el caso, no hay necesidad de que le cambies el sid.

update sysxlogins set sid=0x01 where name='sa'

Con todo lo anterior hemos conseguido controlar la administración de esta cuenta, la decisión la tiene usted, usted decide como administrar esta cuenta de acuerdo al entorno y las políticas de seguridad para su compañia. En SQL Server 2005 y 2008 ya no tenemos que realizar estas jugadas porque en estas nuevas versiones la administración de esta cuenta es común a cualquier otra cuenta de usuario.

Saludos,

PercyReyes,

Nota: (27/06/2009): Se cambió el título del post para evitar confusiones e interpretaciones erróneas en los lectores, debido a que no es exactamente una vulnerabilidad en SQL Server 2000. El fin es demostrar como controlar la administracion de la cuenta sa a pesar que la documentacion de Microsoft dice que no se puede, un recurso útil para todo DBA que desea deshacerse de dicha cuenta...

Publicado por Percy Reyes | 9 comment(s)

Microsoft planea discontinuar PerformancePoint Planning Server

Al parecer PerformancePoint Planning Server será un producto más que pasará a la historia: http://redmondmag.com/articles/2009/06/24/performancepoint-server-planning-gets-new-lease-on-life.aspx. Producto con poca acogida y aplicabilidad, pocos clientes, poca usabilidad, al igual que Notification Services, Microsoft decidió reciclarlo.

Todo el código fuente de PerformancePoint Planning estará disponible bajo licencias de Microsoft sin costo dentro de un paquete llamado Financial Planning Accelerator (FPA): http://blogs.msdn.com/bi/archive/2009/06/18/financial-planning-accelerator-announced.aspx, el cual le ayudará a extender y potenciar la funcionalidad de sus aplicaciones PPS.

Microsoft en http://www.microsoft.com/bi/partners/default.aspx dice:

“Microsoft is pleased to make available the Financial Planning Accelerator (FPA). The FPA is source code and project files derived from the PerformancePoint Server 2007 Planning module. Based on requests from customers and partners, we are making this code available on a no-cost, individual license.
This is unsupported source code that customers and partners can use to support or change PerformancePoint Server Planning functionality. Derived object code files can be distributed to end users with Microsoft SharePoint Server Enterprise Client Access Licenses. To obtain access to the FPA a license agreement between Microsoft and the customer or partner is required. After that agreement is in place, download instructions will be made available.
Please e-mail
fpasupp@microsoft.com to request the agreement.”

Enjoy!

Saludos,

PercyReyes,

Publicado por Percy Reyes | con no comments

... SQL Server is Calling all SQL Junkies! -> www.sql4junkies.com

Desde hace unos minutos que www.sql4junkies.com viene funcionando, este será el dominio de mi blog y espero sea del gusto de la mayoría de lectores. Sinceramente ha pasado bastante tiempo donde he estado pensando cual seria el domain name que debería comprar, y sobre todo, identificara el contenido y conocimientos que se comparte por este medio, creánme que no ha sido sencillo la selección, hasta que tuve uno de esos pocos chispasos en la vida, donde brilla un idea y dices ya lo tengo! , y así fue como nace sql4junkies.com. Con esto se marca el inicio de mi regreso al mundo blogger donde trataré de continuamente compartir mis experiencias con SQL Server en sus diferentes variedades y sabores.

Al ritmo de “... SQL Server is Calling all SQL Junkies! ” damos vida a www.sql4junkies.com para todos los junkies SQL!!! :D.

Saludos,

PercyReyes,

Publicado por Percy Reyes | 3 comment(s)

Esto es power: SQL Server 2008 on Server Core 2008 R2

Comparto un artículo donde el autor muestra como instalar exitosamente SQL Server 2008 sobre  Server Core 2008 R2: http://www.nullsession.com/2009/06/02/sql-server-2008-on-server-core-2008-r2/ . El autor indica que usted debe tomar sus precauciones respecto al tema, pues Microsoft en su documentación respectiva indica que tal implementación no está soportada. Este tipo de instalaciones es bien power, seguro que despierta la curiosidad que querer realizar tal instalación usted mismo, adelante!.

En la parte derecha del artículo existe un video donde se ilustra paso a paso dicha instalación.  Bien explicado y entendible en su totalidad.

PercyReyes,

Publicado por Percy Reyes | 4 comment(s)

Suena el río: SQL Server 2008 R2 CTP disponible en Julio 2009!!!

Todo hace pensar más que SQL Server 2008 R2 CTP estará disponible en Julio 2009 (si no me equivoco será el CTP2) y contaremos con integración total y sin problemas con SharePoint 2010, Office 2010 (cuyo CTP también será liberado en Julio) y Visual Studio 2010. Más información en este enlace: http://www.ozelwebtasarim.com/index.php/web-haberleri/13826-raisin-the-game-sql-server-2008-release-2 

En mi opinión, SQL Server 2008 R2 será lo que SQL Server 2008 debió ser, incluirá implementación y características que debieron liberarse inicialmente, pero por temas de tiempos Microsoft no pudo lograrlo. Desde ya, este release promete grandes capacidades en BI, se escucha fuertes cambios también en Virtualización, esto me está causando ansias!!!.

PercyReyes,

Publicado por Percy Reyes | con no comments

¿Quieres ser el primero en evaluar SQL Server 2008 R2 CTP?

Si tu respuesta es sí, entonces Microsoft te invita a registrarte en http://www.microsoft.com/sqlserver/2008/en/us/r2.aspx y serás uno de los primeros en evaluar el siguiente CTP de SQL Server 2008 R2

image

Atento a la próxima notificación, SQL Server 2008 R2 ya está muy cerca…

PercyReyes,

Publicado por Percy Reyes | 5 comment(s)

Evento: SQL Server Perú Community Return – 06/Junio/2009

Nombre del Evento: SQL Server Perú Community Return           
Fecha del Evento: 06 de Junio del 2009           
Lugar:  Universidad Inca Garcilaso de la Vega           
            Facultad de Ingeniería de Sistemas, Cómputo y Telecomunicaciones           
            Av. Bolívar 1848 - Pueblo Libre  (Lima, Perú)

Referencias: Está a unas 3 cuadras de la Universitaria, a 2 cuadras del Diario El Comercio.

image

Las personas interesadas en asistir deben enviar sus datos al correo comunidadsqlserverperu@hotmail.com para registrarse. Temporalmente se está usando el correo en hotmail, más adelante tengo entendido que habrá un correo propio para estos fines.

El nuevo equipo core de esta comunidad agradece su asistencia. De esta manera, tu comunidad SQL Server Perú regresa para seguir apoyándote.

PercyReyes,

Publicado por Percy Reyes | 8 comment(s)