Glosario de Terminos de Big Data

Arquitectura base en Hadoop

  • HDFS: Sistema de ficheros que distribuye los datos en múltiples nodos. Este sistema implementa redundancia y tolerancia frente a fallos. Además no depende de Hardware específico.
    Los componentes de HDFS son:
    • Un Name Node que gestiona la estructura del sistema de ficheros. Puede estar redundado en Secundary Name Node.
    • Varios Data Nodes que almacenan bloques de los ficheros. Por defecto los bloques se encuentran replicados en 3 Data Nodes.
  • MapReduce: Tecnología de acceso y procesado distribuido de los datos. Accede a los datos mediante el procesado de los datos en cada nodo (Map) y la unificación de estos datos procesados de los diferentes nodos (Reduce).
    Los componentes de MapReduce son:
    • Job Tracker que gestiona el procesado de las tareas.
    • TaskTracker realizan las tareas.

    HadoopComponents

  • Yarn: Es un motor gestión de recursos y servicios que se incorpora Hadoop 2.0. Mejora la eficiencia de MapReduce y además permite poner otros motores de procesado distribuido de datos más eficientes como Tez.
    YARN-hadoop2.0
    Los componentes de Yarn son:
    • Resource Manager
    • Varios Node Manager

Arquitectura de Uso en Hadoop

  • Pig: Ejecuta pseudo comandos similares a bloques de consulta de SQL (Pig Latin) para realizar el proceso de MapReduce.
  • Hive: Ejecuta comandos de Sql (HiveQL) que generan el proceso de MapReduce/Tez.
  • Files: Permite gestionar ficheros de HDFS.
  • Ambari: Es una aplicación Web o Api Rest que nos permiete provisionar, gestionar, monitorizar y securizar los clusters de Hadoop.
  • Sqoop: Transfiere los datos de HDFS desde/hacia bases de datos.
  • Flume: Transfiere los datos de Streaming hacia HDFS.
  • Kylin: OLAP sobre Hadoop.

Distribuciones de Hadoop

  • HDInsight: es la distribución de Hadoop pensada para Azure (Servicio PAS). El HDFS se monta sobre el Windows Azure Blob Storage o Azure Data Lake. Esta basado en la distribución de Hortonworks.
  • HortonWorks SandBox: es una distribución que permite desplegar todo el Hadoop en una sola maquina. Es ideal para pruebas😉.
  • HortonWorks Data Platform: es una distribución en IAS. Incorpora: YARN, HDFS, MR,Pig,Hive,TEZ, HBase, Storm, Spark, Sqoop, Oozie, Flume…
  • Cloudera Enterpirse Data Hub: es una distribución en IAS. Incorpora servicio propio Impala.

Arquitectura base en Spark

  • Worker Nodes: nodos encargados de realizar las operaciones.
  • SparkContext: coordina los Worker Nodes.
  • ArquitecturaSpark

  • RDD: colecciones de datos distribuidos en memoria o disco basados en HDFS o colecciones.
  • Operaciones: Es el equivalente a MapReduce. El procesado Map se llama Tranformación y nos retorna un RDD. El procesado Reduce se llama Acción y nos retorna el resultado al SparkContext o a un fichero.
Publicado en Azure, Big Data | Deja un comentario

DNI electrónico y Autenticación en la Web

¿Que es el DNI Electronico o DNIe?

dniEl DNI incorpora en un chip la identidad digital de su titular. Esto permite con el DNIe realizar operaciones a través de Internet sin necesidad de desplazarse físicamente a las oficinas. En concreto permite dos tipos de operaciones:

  • Autenticación de la identidad: El equivalente en el mundo físico a presentar el DNI.
  • Firma electrónica de documentos: El equivalente en el mundo físico a firmar un documento.

Vamos a describir en esta entrada los pasos para implantar en nuestra aplicación la operación de autenticación en una aplicación web.

Autenticación de la identidad

El objetivo es validarnos en nuestra aplicación con nuestro DNI.

  • 1.-Instalar en el servidor dos certificados de la DIRECCION GENERAL DE LA POLICIA.

    PropiedadesCertificado

  • 2.- Habilitar permisos en el IIS; para que se pueda sobre escribir permisos de autenciación por aplicación. Abrir el Configuration Editor de la raíz del servidor. Navegar a las secciones de system.webServer/security/authentication y realizar un unlock de las entradas de la misma. Hacer los mismo para la sección system.webServer/security/access
    SecurityUnlock

  • 3.- Crear la aplicación que debe ser HTTPS que debe disponer de su certificado propio.
  • 4.- Modificar el web.config de la aplicación añadiendo en la entrada system.webServer la solicitud de certificado de DNIe. El usuario y passoword que debemos completar debe tener acceso al contenedor de certificados.
            <system.webServer>
                <security>
                    <access sslFlags="Ssl, SslNegotiateCert, SslRequireCert" />
                    <authentication>
                        <iisClientCertificateMappingAuthentication enabled="true" oneToOneCertificateMappingsEnabled="false">
                            <manyToOneMappings>
                                <add name="dnie" description="dnie" userName="[Usuario]" password="[Password]">
                                    <rules>
                                        <add certificateField="Issuer" certificateSubField="OU" matchCriteria="DNIE" />
                                    </rules>
                                </add>
                            </manyToOneMappings>
                        </iisClientCertificateMappingAuthentication>
                        <anonymousAuthentication enabled="true" userName="" />
                        <windowsAuthentication enabled="false" />
                    </authentication>
                </security>
            </system.webServer>
    
  • 5.- Podemos poner en la aplicación la pagina testDNIe.aspx; para verificar el correcto funcionamiento.
  • <%@ Page Language="C#"%>
    <html>
    <head><title>Datos del certificado</title></head>
    <body>
    <%
    HttpClientCertificate cs = Request.ClientCertificate;
    Response.Write("Datos del certificado:<br>");
    Response.Write("Certificate = " + cs.Certificate + "<br>");
    Response.Write("Cookie = " + cs.Cookie + "<br>");
    Response.Write("Flags = " + cs.Flags + "<br>");
    Response.Write("IsPresent = " + cs.IsPresent + "<br>");
    Response.Write("Issuer = " + cs.Issuer + "<br>");
    Response.Write("IsValid = " + cs.IsValid + "<br>");
    Response.Write("KeySize = " + cs.KeySize + "<br>");
    Response.Write("SecretKeySize = " + cs.SecretKeySize + "<br>");
    Response.Write("SerialNumber = " + cs.SerialNumber + "<br>");
    Response.Write("ServerIssuer = " + cs.ServerIssuer + "<br>");
    Response.Write("ServerSubject = " + cs.ServerSubject + "<br>");
    Response.Write("Subject = " + cs.Subject + "<br>");
    Response.Write("ValidFrom = " + cs.ValidFrom + "<br>");
    Response.Write("ValidUntil = " + cs.ValidUntil + "<br>");
    Response.Write("What's this = " + cs.ToString() + "<br>");
    %>        
    </body>
    </html>
    

    TestDNIe
    En la prueba si tenemos problemas; podemos ver los errores detallados añadiendo al web.config

    <system.webServer>
       <httpErrors errorMode="Detailed" />
    </system.webServer>
    
  • 6.- Cuando el IIS requiere el certificado del usuario; a este se le presenta en el navegador la lista de todos sus de certificados disponibles. Es engorroso ya que el usuario debe seleccionar de la lista su certificado DNIe. Podemos mejorar la experiencia de uso para el usuario; para que en el navegador tan solo se le muestren los certificados aceptados por el IIS. De esta manera al usuario en el navegador seguramente tan solo se le mostrara el certificado del DNIe en la lista:-).
    Para conseguirlo en el servidor añadiremos/habilitaremos a 1 el valor de la clave SendTrustedIssuerList en HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL en el registro de Windows.
    SendTrustedIssuerListDNIe
Publicado en IIS, Seguridad, web | Etiquetado | Deja un comentario

Jupyter y Notebooks en Azure Machine Learning

Que es Jupyter Notebooks?

jupyterLogoJupyter Notebooks es un editor web que permite editar un documento que contiene lineas de código que se ejecutan de forma interactiva. Podemos añadir instrucciones en R o Python que analicen o realicen predicciones sobre datos. El objetivo es mostrar los resultados obtenidos o gráficas en el documento.

Editamos el documento, añadiendo tipos de bloques (celdas en Jupyter):

  • MarkDown: para añadir texto. En el texto podemos añadir marcas que al ejecutar el bloque generaran una estilo deseado (negrita, listas…). También soporta Latex.
  • Code: para añadir las lineas de código.
  • Raw: para añadir texto. En este caso no se podrán añadir marcas de estilo.
  • Heading: para dar estructura al documento. Por ejemplo para exportar a PDF.
Ejemplo de Jupyter que analiza un array de enteros

Ejemplo de Jupyter que analiza un array de enteros

Que es Azure Machine Learning Notebooks?

Es el servicio PAAS dentro Azure Machine Learning que ofrece Jupyter Notebooks. En Azure tan solo podemos usar Python o R. Adjunto enlace con ejemplo introductorio para R: Introduction to Azure ML R notebooks. Mediante la librería AzureML nos vamos a poder conectar a nuestro entorno de trabajo en Azure ML Studio. Con lo que vamos a poder definir:

  • Cargar o descargar datasets
  • Acceder a datesets de experimentos
  • Publicar o consumir webservices
Publicado en Azure, Azure Machine Learning, Cortana Analytics | Deja un comentario

Compatibilidad entre versiones de NET

Dudas de compatibilidad entre versiones de NET

Nuestra aplicación NET se ejecuta en una versión de Framework. Se nos plantean múltiples dudas cuando queremos actualizar la versión del Framework de nuestra aplicación:

Dotnet-apiport

La herramienta dotnet-apiport viene a rescatarnos:-). El proyecto esta disponible en githup. Adjunto enlace para descargar las diferentes versiones.
Esta herramienta analiza los ensamblados y las dependencias que se usan en nuestra aplicación. Y determina las incompatibilidades contra una versión a actualizar. El resultado es una html que contiene la lista de ensamblados con sus incompatibilidades.

C:\Tools\ApiPort\ApiPort> apiport analyze -f C:\basura2\G\DSH\DSH_IIS\DSH_IIS  -t ".NET Framework, Version=4.5.2" -b -r HTML

Los parámetros a actualizar son:

  • Parámetro f: indicaremos el directorio (también se podría fichero) donde se encuentra nuestra aplicación.
  • Parámetro t: indicaremos la versión en formato (Target Name), Version=(Version) a la que queremos migrar. Podemos obtener la lista de targets y Versiones disponibles con el siguiente comando:
    apiport listTargets
    

Por ejemplo:

C:\Tools\ApiPort\ApiPort>apiport analyze -f C:\basura2\G\DSH\DSH_IIS\DSH_IIS  -t
 ".NET Framework, Version=4.5.2" -b -r HTML
Microsoft (R) API Portability Analyzer v1.2.1.alpha.00031
Copyright (C) Microsoft Corporation. All rights reserved.

This tool analyzes .NET assemblies to determine possible problems moving between
 .NET platforms (such as
Windows Store, desktop, Mono, .NET Core, etc) as well as between .NET Framework
versions (ie 4.x->4.y).

To learn more about how this tool works, including the data we are collecting,
go here - http://go.microsoft.com/fwlink/?LinkId=397652

Detecting assembly references                     [Done]
Sending data to service                           [Done]
Writing report                                    [Done]

Wrote output to file:
C:\Tools\ApiPort\ApiPort\ApiPortAnalysis(3).html

Esta herramienta, dispone también sobre plugin sobre Visual Studio 2015. En este caso la ventaja que nos ofrece esta solución es que nos sitúa en la linea de código con la incidencia de incompatibilidad.

Publicado en Desarrollo, net | Etiquetado | Deja un comentario

Glosario de Términos Autenticación

Protocolos de Autenticación

  • NTLM: Protocolo propietario de autenticación pensado para redes corporativas.
  • Kerberos: Protocolo propietario de autenticación pensado para redes corporativas. Es mejor que NTLM.
  • Web Services Federation Language (WS-Federation): Es un protocolo que permite Single Sign-on (SSO) de los usuarios para que accedan a aplicaciones diferentes con tan solo una identidad.
  • Security Assertion Markup Language (SAML 2.0): Es otro protocolo que permite Single Sign-on (SSO).
  • OAuth 2.0: Es otro protocolo Single Sign-on (SSO) que permite la autenticación contra un proveedor que implemente este protocolo (lo usan entidades como Microsoft, Facebook, Twitter, Google, …).
  • OpenId Connect: Extiende OAuth 2.0 para autorización.

Servicios Microsoft que Autentican

  • Active Directory (AD): El clásico directorio activo alojado en un servidor. Se autentica mediante Kerberos o NTML; no es recomendable utilizar esta servicio en un entorno de internet.
  • Microsoft Azure Active Directory (AAD): Un servicio SAAS de Azure que implementa un Active Directory. Soporta todos los protocolos SSO descritos en el punto anterior.
  • Active Directory Federation Services (ADFS): Servicio que permite autenticar a un Active Directory mediante federación. Soporta WS-Federation y SAML 2.0.
  • Azure AD Connect: Integra y sincroniza un AD a un AAD.
  • Security Token Service (STS): Es un servicio que genera tokens de autorización ya sea por identity providers (IdP) o federation providers (FP). En el segundo caso realiza el token apartir de una cadena de autorización (relying parties).

Librerías

  • ASP.NET Membership: Librería que permite identificar el usuario en NET. Se basa en la autenticación mediante formularios (FormsAuthentication).
    Espacio de nombres: System.Web.Security
    Requisitos mínimos: NET 2.0
  • ASP.NET Identity: Librería que permite identificar el usuario en NET. Permite añadir información extra del usuario, persistirla (Entity Framework), añadir roles, claims… Orientada si se usa en solitario a validación de usuarios contra un Sql Server. Compatible con Owin. Viene a sustituir ASP.NET Membership debido a que aporta mayor funcionalidad y extensivilidad.
    Espacio de nombres: Microsoft.AspNet.Identity.*.
    Requisitos mínimos: NET 4.0
  • Windows Identity Foundation (WIF): Librería de NET para autenticar y autorizar. Este framework autentica en ADFS y WS-Federation (que soporta AAD).
    Espacio de nombres: System.Identity.*
    Requisitos mínimos: NET 3.5
  • Owin: Es un librería de NET que implementa un middleware que se usa para autenticar y autorizar. Viene a sustituir WIF debido a que aporta mayor simplicidad y extensivilidad.
    Espacio de nombres: Microsoft.Owin.*
    Requisitos mínimos: NET 4.5
  • Azure Active Directory Graph API: API Rest para trabajar con los elementos del ADD (operaciones CRUD sobre usuarios,aplicaciones,grupos…).
  • ADAL: Es una librería de Javascript pensada para autenticarse en aplicaciones de página única, como por ejemplo en aplicaciones Angular.

Autenticación en proyectos ASP.NET Web Application

En el asistente de creación de una aplicación web en Visual Studio disponemos de las siguientes opciones:

  • No Authentication: Sin autenticación.
  • Individual User Accounts: Autenticación en una base de datos accedida via Entity Framework.
  • Work And School Accounts:
  • Windows Autentication: Usado en Intranets. Autenticación contra el usuario de la maquina donde se muestra la aplicación. Es tan simple como activar Windows Autentication en la configuración del IIS. IIS utiliza autenticación contra AD mediante Kerberos o NTML.

Autenticación Work And School Accounts en proyectos ASP.NET Web Application

En el asistente de creación de una aplicación web en Visual Studio con autenticación contra AAD se solicita un usuario administrador del dominio. Este usuario se usará para crear la aplicación en dicho dominio. También podríamos crear la aplicación manualmente en el ADD mediante el portal de Azure.
Se describen los datos de la aplicación en el ADD:

  • Name: Nombre de la Aplicación.
  • Type: Web Application.
  • Application ID URI: Es el identificador de la aplicación. AAD lo añade en el token de autenticación.
  • Reply Url: Es donde se envía la respuesta con el token con la autenticación.
  • Client ID: GUID que identifica la aplicación en AAD. La aplicación lo envia cuando requiere la autenticación.
  • Single Tenant /Multi Tenant
    • Single Tenant: La aplicación solo se usara desde nuestra empresa.
    • Multi Tenant: La aplicación se usará también por usuarios ajenos de nuestra empresa. Esto permitirá a un usuario externo mediante su ADD y acceder a la aplicación. Se pedira el consentimiento al usuario indicando que permisos son necesarios para acceder a la aplicación. Cuando consiente automaticamente se registra en su directorio, la aplicación.
Publicado en Seguridad, Seguridad | Deja un comentario

¿Qué es Cortana Analytics Suite?

Cortana Analytics es una serie de servicios disponibles en Azure que nos permiten crear nuestros procesos de negocio. A partir de los datos de entrada; podemos combinar estos servicios en función de nuestras necesidades. El objetivo es realizar un análisis de los datos con el que vamos a poder generar acciones inteligentes de negocio.
ComponentsCortanaAnalytics
En función de los datos; si estos son en tiempo real o no, volumen de los mismos, necesidad de procesamiento de los mismos, tipo de los datos… utilizaremos una combinación adecuada de servicios.
Con estos datos, gracias a los servicios de análisis vamos a poder ver que ha ocurrido, el porque, que pasará y tomar acciones en función de lo que preveamos que va suceder.
Un ejemplo de solución de aplicación en Cortana Analytics, es el servicio que propone Microsoft para monitorizar dispositivos de IOT. Este servicio se llama Azure IOT Suite y esta construido usando diferentes servicios de Cortana Analytics.
EjemploUsoCortanaAnalytics

Servicios de Cortana Analytics

Publicado en Azure, Cortana Analytics, Internet of Things, Machine Learning | Deja un comentario

C# Interactivo

En Visual Studio 2015 disponemos de una novedad muy interesante. Consiste en una consola para trabajar directamente en un entorno interactivo; sin necesidad de crear un proyecto y compilarlo. Resulta muy útil para probar. C# InteractiveA la consola se accede desde el menu View->Other Windows->C# Interactive Window.

Comandos

Las instrucciones son las del lenguaje C# normal y también disponemos de intelligence a la hora de trabajar.
Para ver resultados, podemos escribir directamente el nombre de la variable o utilizamos las mismas instrucciones que en una aplicación de Consola.

var message = "Hello World!!!";
message //Muestra Hello World !!!!
Console.WriteLine(message); //Muestra Hello World !!!!

Se añaden algunos comandos utiles especificos en modo consola:

  • #r: Añade referencias a nuestra sesión de consola.
    //#r {Nombre del Assembly}
    #r "System.Web"
    //#r {Path de la dll}
    #r "c:\code\myDll.dll"
    
  • #reset: Libera la memoria del entorno de consola (elimina las variables actuales).
  • #cls: Limpia la pantalla de la consola.
  • #load: Podemos guardar los comandos en un fichero; con el objetivo de cargarlo y ejecutarlo.
  • #help: Ayuda.
Publicado en Visual Studio | Deja un comentario