25 mar 2016

Buenas Practicas para aplicar Service Packs o actualizaciones de serguridad en sql server o productos micrsoft



Este documento es una recopilacion de los papers o documentos de Microsoft.com. Ver mas

Para comenzar debemos ser conscientes de los riesgos a los cuales nos exponemos si no aplicamos una actualizacion al software, es decir cada pack o conjunto de actualizaciones(Service pack) van a ir a corregir ciertos problemas que son de conocimiento del proveedor, es ahí donde el soporte a los productos, por ejemplo en Microsoft (team support) entra en acción y va liberando estos parches para solucionar los problemas que se presentan. La primera pregunta que nos debemos hacer es ¿Aplico o no aplico esta actualización? responderemos a esto con la siguiente frase: "El riesgo de implementar el Service Pack y revisión de seguridad debe ser siempre menor que el riesgo de no implementarlo" Asimismo podemos afirmar que nosotros no deberíamos estar peor después de una aplicación del service pack. Por tanto no debemos tener dudas al respecto. De todas formas siempre es conveniente investigar, leer y documentarse, con esto podremos dormir tranquilos después de aplicar las actualizaciones en el entorno de producción.

Puntos que deberíamos considerar:


Punto 1.- Llevar un control de cambios
Tener un buen procedimiento de control de cambios es necesario para estar bien ubicado ante posibles incidencias. debemos tener un formulario que registre la solicitud, la fecha y hora,  la descripción, la justificación, la prioridad (Alta,media o baja), las dependencias o repercusiones en hardware o software, el tiempo de inactividad del servicio a actualizar e incluso podría contemplar la autorización del jefe inmediato.  A parte debemos tener un documento que describa el procedimiento de pruebas,  y otro plan de respaldo antes de aplicar la actualización. Un documento de log de eventos durante la actualización.

Mientras mas completo este definido este control de cambios, mayor seguridad ofrecera. Caso contrario usted no debe dudar contar o proveer un procedimiento completo.

Punto 2.- Documentarse y leer toda la documentación relacionada.

Antes de aplicar cualquier actualización debe leer e informarse respecto a los cambios que producen y repercuten en el software. Esta información mitiga los riesgos y ayuda a enfocarse en los puntos relevantes de la actualización. 

Leyendo la documentación se quiere evaluar:

a) Si la actualización es importante y resolverá un problema existente.
b) Si esta actualización como resultado causara otros problemas comprometiendo el sistema de producción.
c)las dependencias relacionadas con la actualización. por ejemplo ver ciertas funciones esten habilitadas o deshabilitadas que imposibiliten la aplicación de la actualización.
d) Preparar una serie de especificaciones que indiquen como resolver ciertos problemas durante la actualización.

Pra poder encontrar esta documentacion debe ingresar a: https://support.microsoft.com/es-es

Punto 3.- Testing

En lo posible debemos aplicar la actualizacion de software primero en un ambiente de pruebas o alternativo, evitando aplicar por primera vez en un entorno de produccion

Punto 4.- Elaborar un plan de desintalacion

Afortunadamente los service pack si tienen la posibilidad de desintalacion, en caso de aplicar una actualizacion que no contemple esta opcion, se debe elaborar uno.



Espero que esta guia colabora a preever los posibles inconvenientes y ayude a mantener su software actualizado y un poco mas seguro.

¡Saludos!

29 oct 2014

Backup(Copia de respaldos) en Sql Server 2014


Cuando hablamos de backups o copias de respaldo tenemos varias situaciones que deben ser analizadas, no quiero referirme a un orden especifico sin embargo me parece que las principales son las siguientes:
  •  El tipo de información de que vamos a resguardar, para esto tendremos en cuenta que tipo de negocio esta en nuestra base de datos, ejm. datos de empresas Telefonicas, Sistemas de Ventas, Sistemas ERP o simples bases de datos.
  • Analisis del tamaño de base de datos y su crecimiento futuro. En base al  punto anterior haremos calculos simples estimando y controlando cuanto tiempo debería demorar restaurar nuestro backup.
  • Lugares o ubicaciones para resguardar nuestros backups
  • Frecuencia de generacion de backups
  • Cronograma de programacion de backup: Completas, Diferencial y log de transacciones.
  • Compresion de datos y encriptacion.
Como DBA despues de planificar la metodología o procesos de backups debemos preguntarnos por donde viajaran o donde residirán nuestras copias de respaldo, es decir en algunos lugares existen empresas que recogen discos o cintas de backups para llevarlos a otro datacenter, tambien existe la posibilidad de envíar estos backups a través de la red interna a un lugar remoto para resguardarnos de posibles desastres extremos en nuestro DataCenter. Sobre este tipo de rutinas existe una anécdota acerca de unos backups de una base de datos de un Banco X que enviaba una copia de sus backups en un maletín de seguridad a otro datacenter para que sea resguardado, en fin el caso fue que la persona encargada del transporte del backup perdió el maletín y con esté los backups del banco X, ademas hay que mencionar que los backups no estaban encriptados y por tanto cualquier persona con conocimientos basicos podria observar a detalle la informacion bancaria de las cuentas de sus clientes. Y bueno, nosotros no queremos que nos suceda algo similar cuando se transporte un backup ya sea en nuestra unidad USB preferida o en cualquier medio, por tanto haremos lo siguiente:

Cifrar o Encrtiptar nuestros Backups de Bases de datos en SQL Server

Antes de comenzar debemos tener conocimiento de los siguientes detalles:
  • Un backup cifrado puede ser generado a partir de la version 2014 de SQL Server.
  • Los backups cifrados no pueden ser generados desde las versiones Sql Server Web y Sql Server Express. Sin embargo si se puede restaurar un backup cifrado en todas las versiones SQL Server 2014.
  • Para restaurar  un backup el usuario que ejecute la tarea debe tener permisos VIEW DEFINITION 

  • Lo primero que debemos hacer es crear en el servidor una Master KEY, para lo cual usaremos el siguiente código de ejemplo:
USE master;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Passw0rd!!!';

  • Luego de tener la Master Key debemos crear el certificado en el servidor
Use Master
GO

CREATE CERTIFICATE CertificadoBK
WITH SUBJECT = 'Certificado para Backups';

  • El próximo paso es hacer un backup del Certificado para luego poderlo restaurar en el servidor destino o bien tenerlo como respaldo.
USE master
GO
BACKUP CERTIFICATE CertificadoBK 
TO FILE = 'c:\tmp\BKPCERT.cer'
WITH PRIVATE KEY (FILE = 'C:\TMP\BKP_Key.pvk' ,
ENCRYPTION BY PASSWORD = 'mY_P@$$w0rd' )
GO

  • Ya tenemos la instancia lista para poder usar la encriptación, ahora lo que haremos es realizar un backup encriptado usando TSQL, también se puede hacer por UI.
BACKUP DATABASE [AdventureWorks2012]
TO DISK = N'C:\tmp\adw_encrypt.bak'
 WITH
 ENCRYPTION
 (
 ALGORITHM = AES_256,



 SERVER CERTIFICATE = CertificadoBK
 ),
 STATS = 10
 GO


FIN 


Fuentes:
http://msdn.microsoft.com/es-us/library/dn449489.aspx
http://msdn.microsoft.com/es-us/library/bb934049.aspx
http://msdn.microsoft.com/es-es/library/dn425035.aspx
http://blog.maxiaccotto.com/post/Encriptacion-de-Backups-en-SQL-Server-2014-CTP2

10 ene 2013

Administrar el registro de Transaccciones en Sql Server





¿Qué es un registro de transacciones en Sql Server?
Es un archivo adjunto a las bases de datos SQL Server.. Es importante revisar periódicamente el tamaño de estos archivos, porque es posible que llegue a ocupar mucho espacio en disco. Por otra parte si llegara a producirse un error en el sistema, es posible utilizar este archivo para poner la base de datos en marcha. El registro de transacciones nunca se debe eliminar o Mover  a menos que se realice un buen plan de mantenimiento conociendo a fondo los posibles problemas que se puedan presentar.


¿Quién usa  el registro de transacciones?
Este archivo se encarga de registrar las transacciones que se realizan sobre una base de datos, por tanto es de vital importancia para la BD. Si se quiere revisar cuanto espacio de disco esta ocupando los registros de transacciones de sql server se debe ejecutar el siguiente comando:

DBCC SQLPERF(LOGSPACE);
GO

Con esto Usted vera cuanto  espacio esta reservado y cuanto espacio esta siendo utilizado por el registro de transacciones
Database Name Log Size (MB) Log Space Used (%) Status     
------------- ------------- ------------------ -----------
master         3.99219      14.3469            0
tempdb         1.99219      1.64216            0
model          1.0          12.7953            0
msdb           3.99219      17.0132            0
AdventureWorks 19.554688    17.748701          0

¿Qué tiene que  ver el Modo Simple o Full de recovery con los registros de transacciones? 
Al manejar una base de datos Sql Server es importante conocer los modelos de recuperación de una base de datos, este método es definido en la base de datos como una propiedad. Hasta el momento exiten 3 metodos: Simple, Completa y por medio de registro de operaciones masivas. Los mas comunes son el Simple y el completo. Ahora nos enfocaremos en resumir las diferencias que presentan estos dos métodos.
Metodo de Recuperacion Simple.-  El riesgo de pérdida de información es mayor debido a que si se presentará un error en la base de datos solamente podríamos recuperar la informacion hasta la fecha y hora del ultimo backup. Ventaja  es que en el backup solamente toma los datos obviando las transacciones. Esto ocasiona menor consumo de Disco Duro en el servidor.
Metodo de Recuperacion Completa.- El riesgo de pérdida de información es mucho menor ya que este método toma en cuenta al registro de transacciones, entonces es posible recuperar y/o restaurar una base de datos hasta cierto punto en el tiempo,  incluso hasta instantes previos al error de un usuario o comando. La desventaja de este método es que el archivo de registro de transacciones puede crecer demasiado con el afán de reservar espacio en el disco duro, siempre con el fin de utilizarlo en el futuro. Debido a malas configuración en el control de crecimiento de este archivo puede reducir de tamaño y las maneras de como hacerlas las veremos a continuación.

¿Cómo bajar el tamaño reservado en disco para los archivos de registro de transacciones de Sql server?

Ojo: La reducción sólo se puede realizar mientras la base de datos está conectada y existe al menos un archivo de registro virtual libre. En algunos casos, no será posible reducir el registro hasta el siguiente truncamiento del registro.
En sql server 2008 r2 se tiene el siguiente comando  “DBCC ShrinkfFile” para mas informacion vea la ayuda de SQL.  Ahora nos enfocaremos en ejecutar el código, en el analizador de consultas ejecute lo siguiente:

USE AdventureWorks2012;
GO
-- cambiando la base de datos en recuperacion simple.
ALTER DATABASE AdventureWorks2012
SET RECOVERY SIMPLE;
GO
-- Ejecutamos el commando  definiendo el tamaño del archivo en megas en este caso es 1 MB.
DBCC SHRINKFILE (AdventureWorks2012_Log, 1);
GO
-- Devolvemos el estado al modo de recuperacion en la base de datos.
ALTER DATABASE AdventureWorks2012
SET RECOVERY FULL;
GO

Por ultimo verifica el uso de los archivos de registros de transacciones en todas las bases de datos de la siguiente manera en el analizador de consultas:
DBCC SQLPERF(LOGSPACE);
GO

Suerte!
Fuentes de informacion:
http://msdn.microsoft.com/es-es/library/ms189493%28v=sql.105%29.aspx

12 ago 2012

Posteando desde la tablet!

Buenonpor fin sacaron la versio  de blogger para samsung galaxy, antes lamentablemente estaba deshabilitada esta opcion.

27 may 2012

Convertir Fecha Juliana a Fecha Gregoriana(Normal o Comun) con SQL Server

Cuando se trata de manejar fechas en bases de datos es  importante saber con que tipo de datos vamos a  trabajar, ya sea con date time o small date's los campos deben ser previstos en la etapa del diseño de los sistemas. Sin embargo cuando adquirimos software de terceros nos podemos encontrar con algunas sorpresas como ocurre en el JDE este ERP maneja las fechas Julianas es decir YYYDDD donde los primeros tres digitos son para el AÑO y las ultimas tres para el dia del año.  La fecha gregoriana es la mas usada en los paises y sobre todo en la actualidad. Por eso es importante obtener la fecha con formato conocido..., bueno vamos directo al codigo.

// codigo fuente

SELECT TOP 1000 [Fecha]
      ,CASE SUBSTRING(Fecha, 2, 2)
  WHEN '11' THEN DATEADD(day, CAST(SUBSTRING(Fecha, 4, 3) AS INT) -1, '2011-01-01')  
  WHEN '12' THEN DATEADD(day, CAST(SUBSTRING(Fecha, 4, 3) AS INT) -1, '2012-01-01')   
 END AS FECHA_NORMAL
  FROM tbl_prueba 
 
 
Ojo antes de ejecutar este codigo debemos conocer los años de la informacion que esta en nuestra tabla, en mi caso tenia informacion del 2011 y 2012. Espero les sirva Saludos, y Comenten!! :P

20 ene 2012

La Guerra Digital ha Comenzado


Cuando uno esta en la Universidad y especialmente cuando se habla de tecnologias de internet todos indican que INTERNET como la conocemos es el invento mas grande del mundo, porque el crecimiento de esta es LIBRE y se dice que no tiene DUEÑO. Si bien Tim B. Lee colaboró mucho con las paginas web y con con la historia de ARPANET siendo esta una RED PRIVADA, hay que reconocer que fueron pilares fundamentales(repito FUERON) para que yo este escribiendo mi opinion sobre las primeras guerras digitales. Ahora pienso que esos pilares fundamentales somo TODOS NOSOTROS. Acaso no nos damos cuenta que nosotros somos la web 2.0 y somos los que compartimos comentarios, musica, videos, noticias y sobre todo conocimiento. Ojo que el Internet es una herramienta a la EDUCACION la misma que es parte de los derechos humanos. Pero como define los DDHH a la educacion:

"Cada mujer, hombre, joven y niño o niña tienen el derecho a la educación, capacitación e información; así como a otros derechos humanos fundamentales para la realización plena de su derecho a la educación. El derecho de todas las personas a la educación se encuentra establecido en la Declaración Universal de los Derechos Humanos, Pactos Internacionales, la Convención de los Derechos del Niño y otros tratados y declaraciones internacionales; todas éstas forman parte de herramientas poderosas que deben ser puestas en marcha para el goce del derecho a la educación para todos!"
Fuente: DDHH


Con esto la ley SOPA y su hermana PIPA estan vulnerado los derechos de de la Humanidad.

Analisis de la Ley SOPA.

La propuesta busca detener la piratería digital que "lucra" con material protegido con derechos de autor en Estados Unidos y está enfocada principalmente a castigar a sitios web en el extranjero que promuevan dicho material. No creas que este ataque amenaza solo a sitios como MEGAUPLOAD y RAPIDSHARE, sino tambien amenaza a sitios pequeños o personales que tienen publicidad para mantenerse en el internet. Es por esto que los sistios WikiPedia y Google dieron el grito y encabezan la oposicion contra la Ley SOPA. Pero... ¿Quienes son los que proponen semejante ley? Principalmente son: los estudios de cine o compañías discográficas. y proponen que:

"cualquiera que contenga vínculos a películas, series de televisión, videojuegos, noticias, video de deportes, texto, fotos, etcétera, que se encuentren protegidos por derechos de autor sean castigados y estos sitios podran ser acusados por un soplon."

Bueno y entonces como funciona; Supongamos tu sitio o pagina que sea delatada primero sera bloqueada y luego pediran que buscadores como Google te saquen de sus resultados de Busqueda. En este paso ya eres Culpable hasta que se Demuestre lo contrario!

¿Y como podran hacer cumplir esto?

Para lograrlo plantea que la Fiscalía de EE.UU. pueda obtener una orden legal que obligaría a proveedores de acceso a internet a bloquear dicho sitio. Dichas empresas tendrían sólo cinco días para acatar la orden legal y ésta podría darse sin juicio de por medio, a partir de acusaciones.

No se olviden que en Estados Unidos se encuentran la mayoria de todos los sitios de internet y que los Dominio .COM .NET .INFO .BIZ .ORG son administrados por la Internet Corporation for Assigned Names and Numbers(ICANN).

ICANN es responsable de la coordinación de la administración de los elementos técnicos del DNS para garantizar una resolución unívoca de los nombres, de manera que los usuarios de Internet puedan encontrar todas las direcciones válidas. Para ello, se encarga de supervisar la distribución de los identificadores técnicos únicos usados en las operaciones de Internet, y delegar los nombres de dominios de primer nivel (como .com, .info, etc.).

Es decir que cualquier pagina con estos dominios podra ser bloqueado incluso paginas de otros paises que terminen con los famosos .com .net .org etc.

Por ultimo les dejo este video.



http://www.youtube.com/watch?v=5fvwoHKj6cs

22 jul 2011

WebForms ASP.NET

Cuando nos toca diseñar o crear formularios web tenemos varias opciones, dentro de estas opciones las principales son usar ASP.NET o PHP. Esta oportunidad analizaremos los formularios web con ASP.NET. La primera pregunta que se nos viene a la mente es: ¿cual es la diferencia entre las paginas web HTML y las paginas ASP.NET? Bueno para empezar las paginas HTML son estaticas y las paginas ASP.NET pueden ser dinamicas. Entrando un poco en el funcionamiento para publicar ambos sitios debemos contar con un servidor Web. Este servidor sera quien devuelva a traves de un request la informacion solicitada por el usuario. Las paginas HTML son solamente entregadas es decir descargadas al equipo cliente(Usuario Visitante) en formato plano con las etiquetas correspondientes guardadas en un solo ARCHIVO con la extension html o htm. En cambio en las paginas web se compilan las paginas una ves exista la solicitud y las guarda en memoria como si se tratara de un documento HTML, asimismo con ASP.NET se tiene tres partes principales:

  • WebForm
  • Partial Class
  • Code Behind
Ahora analizaremos uno por uno.

WebForm.- Es un documento con extension aspx que sera la cara al usuario visitante, es decir es la parte visual de nuestra aplicacion web. esta esta conformada por etiquetas asp.net para usar controles HTML y controles Web.
Partial Class.- Esta clase partial en realidad es la clase que sera usada en varios documentos, en las versiones anteriores del framework.net, una clase solamente deberia estar ligada a un solo documento. A partir del framework 2.0 existen la clases parciales "Partial Class" que pueden ser utilzadas en distintos documentos. Esta clase partial por lo general tiene el nombre de "_default" en el siguiente ejemplo se muestra el codigo de una clase partial que tiene el nombre "MiSitio"

public partial class MiSitio : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
}

Code Behind.- Ahora hablaremos o mas bien escribiremos acerca del code behind, este es un archivo separado del webform con extension .aspx.cs, este es el codigo que maneja los eventos o metodos, es el codigo que se ejecuta del lado del servidor para que nuestra pagina funcione como nosotros requerimos y puede ser desarrollada en varios lenguajes que soporte . NET es decir C# o Vb.Net.


Ya conozco cuales son las 3 partes de una pagina ASP.NET pero.... ¿Como interactuan entre ellos?

El webForm es la parte visual que contiene a los controles, estos controles son heredados a traves del Code behind y una Clase Partial. Es decir que el code begind(Codigo por atras) contiene el comportamiento que deban tener los controles. Para publicar nuestra pagina tendremos que recibir por herencia de "System.Web.UI.Page" que tiene los objetos y metodos para contener a los nombres de nuestros controles de servidor de una página. Para verificar como se relacionan estos 3 elementos ingresa a un WebForm y verifica la primera linea de codigo ASP.NET es decir del archivo con extension .aspx y veras lo siguiente.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="MiSitio" %>

Esta linea indica que El code Behind es de lenguaje C# y esta en el archivo "Default.aspx.cs" asimismo el nombre de nuestra partial class es "MiSitio" y esta en el parametro inherits.

.NET al Dia

El ejemplo en la vida diaria será
para tener un letrero luminoso tenemos lo siguiente:

El armazon (WebForm) que sera visto por nuestros usuarios y sera donde colocaremos nuestros controles(Letras, Focos, imagenes, Etc.):

Las conexiones electricas internas(Code Behind) que nos diran que focos encender y quiza tener un control intermitente para que encienda y apaguen las luces en cada intervalo de tiempo.

Y por ultimo pero muy importante necesitamos la energia electrica o alargador de corriente(Partial Class) que ayudara a unir nuestro armazon y focos para mostrar nuestro letrero y quiza muchos mas letreros a las personas.


Eso seria todo. Un saludo y comenten lo que quieran.

Ciao!