miércoles, 1 de marzo de 2017

100. Resumen (Primera meta numero 100)

Por increíble que parezca hemos llegado a las primeras 100 entradas en el blog, pese a que en algunos momentos, por motivos laborales no he podido escribir a la velocidad que desearía y que existen muchos temas que tenemos abiertos.

Llegar a 100 números en menos de 2 años inicie el proyecto el 22 de junio de 2015 y hoy 01 de Marzo de 2017 llegue a la primer meta de esta aventura, aventura que ha tenido como principal motivo, compartir y aprender cada día, aprender lo que ocurre en este frenético mundo del computo, comentar puntos de vista, y escribir sobre ese tema en el que trabajo y tanto me apasiona.

Les dejo la lista de estos primeros 100 numeros

Numero Titulo Seccion
99 SQL Server Always Encripted Construyendo en el espacio
98 Microservicios Construyendo en el espacio
97 DevOps (3) - Infraestructura como codigo Construyendo en el espacio
96 Pruebas cudradas Desde el divan del gato
95 Visual Studio 2017 Noticias
94 Configurar el IIS para https Ayuda Rapida
93 DevOps (2) Construyendo en el espacio
92 Bases de datos noSQL Construyendo en el espacio
91 Nuevo amanecer - BITCOIN Desde el divan del gato
90 SQL Padres sin hijos Ayuda Rapida
89 Eliminando duplicados en una base de datos Ayuda Rapida
88 Aplicaciones Universales Dia 1 Aplicaciones Universales
87 Arreglo de caracteres a cadena C# Ayuda Rapida
86 Aplicaciones Universales Construyendo en el espacio
85 Insertar a SQL una fecha por un Query Ayuda Rapida
84 Desarrollando CFDI Noticias
83 DevOps(1) Construyendo en el espacio
82 Dia del programador Noticias
81 Telefonia movil Desde el divan del gato
80 Creando una dll desde un programa Ayuda Rapida
79 SQL Server Configuration Manager  Ayuda Rapida
78 Saltos de linea Ayuda Rapida
77 sql EXEC master..xp_cmdshell ¿Usarlo? Construyendo en el espacio
76 Zen de Python Ayuda Rapida
75 Home Office Desde el divan del gato
74 Buid 2016 Desde el divan del gato
73 Xamarin - Visual Studio Noticias
72 Cientifico de datos Desde el divan del gato
71 Control de excepciones Construyendo en el espacio
70 HoloLents - build 2016? Noticias
69 Andrew S. Grove 1936 - 2016  Nuestra historia
68 Windows 10 mobile - el sentido de pertenencia Desde el divan del gato
67 SQL Llenar con ceros un numero  Ayuda Rapida
66 GhostDoc Construyendo en el espacio
65 Microsoft adquiere Xamarin Noticias
64 Validar mi HTML Construyendo en el espacio
63 Microsoft holographic academy Noticias
62 This platform could not be created becouse a solution platform of the same name alrready exists  Ayuda Rapida
61 Motivacion Desde el divan del gato
60 Ondas Gravitacionales de Einstein Noticias
59 ¿Que contiene una actualización de Windows? Construyendo en el espacio
58 BCP (BulkCopy) Unicode en SQL Ayuda Rapida
57 Eliminar la parte de tiempo de una fecha  Ayuda Rapida
56 Formato Universal de Fecha en SQL  Construyendo en el espacio
55 HoloLents y superbowl Noticias
54 Alto vuelo Desde el divan del gato
53 Determinar si una constraint existe en SQL  Ayuda Rapida
52 Discos duros virtuales  Ayuda Rapida
51 Alan Turing Nuestra historia
50 Split Ayuda Rapida
49 Diferencia entre 2 fechas sql Ayuda Rapida
48 Reflexion sobre seguridad Desde el divan del gato
47 Getfiles Vs EnumerateFiles Ayuda Rapida
46 Sia inicial de un mes SQL Ayuda Rapida
45 C# 6.0 Null-Conditional Operators Construyendo en el espacio
44 Reinstalar todos los paquetes de nuget Ayuda Rapida
43 Deuda tecnica Construyendo en el espacio
42 Fin de soporte Windows8 Noticias
41 .NET 4.5 Compesion de directorios Construyendo en el espacio
40 C# 6.0 Dictionary Initializers Construyendo en el espacio
39 C# 6.0 Property Initializers Construyendo en el espacio
38 C# 6.0 Interpolated Strings Construyendo en el espacio
37 Concatenar Archivos Construyendo en el espacio
36 Patrones Proxy Construyendo en el espacio
35 Buen software Desde el divan del gato
34 Kenneth Thompson Nuestra historia
33 Distinct en una lista Ayuda Rapida
32 Buid 2016 Noticias
31 Ciclo de vida Internet explorer Noticias
30 Usabilidad Construyendo en el espacio
29 Diferencia entre 2 fechas Ayuda Rapida
28 Dennis Ritchie Nuestra historia
27 Parpadeo en DataGridView Ayuda Rapida
26 Ada Lovelance Nuestra historia
25 Nuestra historia Nuestra historia
24 FileSystemWatcher Ayuda Rapida
23 Calculo de SHA1 para un archivo Ayuda Rapida
22 WinForm - ListBox - Copiar todos los elementos Ayuda Rapida
21 Agua en marte Noticias
20 Metricas (Indice de Mantenibilidad) Construyendo en el espacio
19 Metricas (numero de lineas) Construyendo en el espacio
18 Metricas (profundidad de herencia) Construyendo en el espacio
17 ¿Qué nos hace programadores? Desde el divan del gato
16 Metricas (Cohesion y Acoplamiento) Construyendo en el espacio
15 Metricas (complejidad ciclomatica) Construyendo en el espacio
14 Calidad Desde el divan del gato
13 Plan de ejecucion Construyendo en el espacio
12 Patrones Facade Construyendo en el espacio
11 Visual Studio Threads Construyendo en el espacio
10 Instaladores  Ayuda Rapida
9 Patrones Decorador Construyendo en el espacio
8 Base de datos Desde el divan del gato
7 Programar en paralelo Construyendo en el espacio
6 Pensamiento Magico Desde el divan del gato
5 Herramientas - Mi propio NuGet  Construyendo en el espacio
4 Patrones Construyendo en el espacio
3 Desarrollando Noticias
2 Optimizar el performance  Construyendo en el espacio
1 Reflexión sobre el papel del Arquitecto  Desde el divan del gato



Felices lineas


99. SQL 2016 Dia 1 - SQL Server Always Encripted

Como arquitecto, uno siempre debe tener la visión de todos los elementos que interactúan en un sistema, como desarrollador uno debe saber emplear las mejores características que nos otorgan estos elementos para poder llegar a las mejores soluciones, NO ES VALIDO DECIR YO SOLO PROGRAMO Y NO SE OTRA COSA, este programador no me sirve, por que no sabe interactuar con su entorno.

Así, un desarrollador siempre debe estar aprendiendo, tenemos SQL 2016, recién salido del horno, este trae una serie de nuevas características, es importante que las conozcamos, para poder explotarlas, siempre es bueno tener las ultimas versiones, por que estas forman parte de un proceso evolutivo, en el que se tiene mejor rendimiento y seguridad, pero a la vez es necesario saberlas explotar.

Always Encripted es una herramienta muy útil que trae consigo SQL 2016 y .NET 4.6 (requisitos minimos), su uso es que nos permite tener datos permanentemente encriptados en la base de datos (sin posibilidad de modificarlos directamente a menos de que tengamos el certificado digital con el que se encriptaron), de tal forma que los datos solo están disponibles para aquellas personas que tengan el certificado digital en sus equipos.

Si los administradores de base de datos no tienen dichos certificados, no podrán ver la información, aunque tengan el nivel mas alto de privilegios.

Esto genera verdaderos dueños de la información, y verdaderos administradores de Base de datos.

¿Qué pasa si se roban la base de datos?

Si se roban la base de datos, la información estará encriptada, para recuperarla es necesario tener el acceso al certificado digital.

Y lo mejor de todo, es que SQL y .NET se encargan del proceso de cifrado, por parte del administrador de base de datos, solo es necesario configurar la tabla, por parte de desarrollo, solo es necesario instalar un certificado y configurar la cadena de conexión para que tenga este nuevo parámetro.

Pasemos al ejemplo

1. Creemos una base de datos


Consideremos que deseamos encriptar algún campo de la tabla usuario


digamos el campo clave

Con el botón derecho del mouse nos situamos sobre la base de datos, para obtener un menú contextual


Seleccionemos encriptar columnas

Este nos traerá una pantalla para seleccionar lo que deseamos hacer


Seleccionemos las columnas a encriptar


Seleccionemos nuestro certificado (para el caso de este ejemplo dejaremos que sql genere uno, dentro del almacén de Windows, pero podemos o debemos usar certificados propios para tener realmente la característica de seguridad)


Ejecutamos el proceso



Y tenemos ya el campo encriptado



Nuestra consola no esta configurada para hacer uso del certificado por lo que no estamos capacitados para insertar en la base de datos de forma directa.


Dentro de la carpeta de seguridad en always Encripted key es en donde se guarda la configuración de nuestros certificados, y es aquí en donde se puede configurar un certificado no auto generado.


Ahora carguemos un registro desde una aplicación .NET





Es muy importante que la versión de .NET sea 4.6 o superior





Veamos este fragmento de código, tiene una diferencia en la cadena de conexión, esta es Column Encryption Setting=enabled, esta es la que hace la magia.

Otra cosa importante a considerar es que los valores se deben pasar como parámetros para que .NET sepa cual sustituir.

Ejecutemos la aplicación y consultemos en base de datos.



Para el DBA los datos se mostraran encriptados puesto que el no es dueño de la aplicación.

Consultando los datos desde .NET


El código que se empleo para consultar fue:


Felices lineas