Tipos de Cloud Computing: *aaS

Existen decenas, si no centenares, de excelentes artículos, presentaciones, documentos e incluso vídeos que explican maravillosamente los tres modelos de servicio cloud computing. Algunos buenos ejemplos son este post  de nubeblog, éste de Daniel Levi, el de Marc Fabregat, o este otro de CloudAve.

Sus diferencias se basan, principalmente, en que servicios de la pila IT -desde ciclos de CPU o almacenamiento en disco hasta las aplicaciones finales- se ofrecen.

Volviendo a la definición del NIST:

“Infrastructure as a Service (IaaS). The capability provided to the consumer is to provision processing, storage, networks, and other fundamental computing resources where the consumer is able to deploy and run arbitrary software…”

Traducción (simplificándolo mucho): el IaaS proporciona recursos hardware sobre los que poder instalar y ejecutar cualquier software base y aplicativos.

“Software as a Service (SaaS). The capability provided to the consumer is to use the provider’s applications running on a cloud infrastructure. The applications are accessible from various client devices through a thin client interface such as a web browser (e.g., web-based email)…”

En el SaaS, disponemos de la capacidad de uso de aplicaciones pagando por su consumo, sin necesidad de adquirirlas. Los casos típicos son el correo electrónico, la ofimática, o el CRM.

“Platform as a Service (PaaS). The capability provided to the consumer is to deploy onto the cloud infrastructure consumer-created or acquired applications created using programming languages and tools supported by the provider…”

En este tercer modelo, lo que obtenemos es la capacidad de computación más la infraestructura de software básica para poder desarrollar nuestros propios sistemas de información. Es el caso de GAE (Google Application Engine), o el servicio de Amazon Simple DB.

Dado que la diferenciación en el ámbito del IaaS es cada vez más difícil, que el SaaS está normalmente limitado a aplicaciones no nucleares (core) y que la mayor parte del parque de aplicaciones de las empresas son desarrollos a medida, personalizaciones muy particulares de software empaquetado, o aplicaciones situacionales, mi interés se centra en el PaaS.

Hay una gran e interesante oferta de productos y plataformas que permiten el desarrollo de aplicaciones a medida sin la complejidad que supone instalar y administrar la infraestructura plataforma base, acelerando considerablemente el proceso de construcción. Soluciones como Force.com, o Longjump, son claros ejemplos.

Tu contraseña no es segura

Siete u ocho letras. Esto es todo lo que necesita una contraseña para entrar en los cada vez más numerosos servicios que usamos habitualmente. Cuentas de correo, acceso al ordenador del trabajo, web del banco, redes sociales, servicios en la nube, mensajería, webs de servicios, comercio electrónico, suscripciones varias, etc.

Cada vez más contraseñas, y cada vez más inseguras. Pero no es tan difícil hacerlas seguras. Y todas diferentes.  Estos son mis trucos:

1. No apuntarlas en un papel.

Papel, fichero de texto, post-it pegado al monitor… Bueno, esto es obvio.

2. No usar palabras del diccionario.

El ataque más sencillo es el del diccionario. El número de combinaciones posibles de ocho letras es muy elevado, pero las que forman palabras que signifiquen algo -que estén en el diccionario- son muchísimas menos. Con lo que se puede averiguar una contraseña formada por una palabra con sentido por fuerza bruta. Si utilizo alguna palabra, la escribo con faltas de ortografía ¡Esto la hace mucho menos evidente! Por ejemplo: “avierto” en lugar de “abierto“.

3. Mejor que una palabra, un acrónimo.

Una mejor alternativa a una palabra, es utilizar un acrónimo, Por ejemplo, escogiendo la primera letra de cada palabra de una frase que nos resulte fácil de recordar. Si tomamos el refrán “El Que Tiene Padrino Se Bautiza”, obtendríamos la contraseña “eqtpsv” (cambiando a propósito la “B” de “Bautiza” por la “V”).

4. Combinar mayúsculas y minúsculas.

Esto multiplica las combinaciones y aumenta la dificultad de un ataque por fuerza bruta. En nuestro ejemplo, podríamos escribir la clave como “eqtpsV” (poniendo la última letra, la “v”, en mayúsculas”)

5. Cambiar letras por números.

Esta estrategia incremente aún más el número de combinaciones a probar. Suelo sustituir algunas letras por números que se les parezcan: el número 0 para representar la letra “o”, el 1  para la “l” o la “i”, el 2 para la “z”, el 3 para la “e”, el 5 para la “s”, o las sustituciones menos evidades de 6 para la “b”, 7  para la “t”, 8 para la “B” o el 9 para la “g”.

Tomando el ejemplo anterior, escribiríamos la clave como “3qtpsV” (cambiamos la “e” por un “3”)

6. Cambiar letras por símbolos.

Con el mismo argumento que para el punto anterior: se puede usar un símbolo de dólar “$” para representar la letra “s”, un paréntesis abierto “(” para la “c”, un “+” para la “t”, “!”  para la “i”…

Cambiando alguna letra del ejemplo, tendríamos “3qtp$V” (cambiamos la “s” por un símbolo “$”)

7. Una clave para cada servicio.

El siguiente paso consiste en tener contraseñas diferentes para cada servicio, y sin necesidad de apuntarlas. Si usamos la misma clave en diferentes sitios -algo demasiado habitual- en cuanto una contraseña se ve comprometida, todos los servicios en los que se repite la misma clave estarían en peligro.

Mi truco consiste en tomar siempre la misma contraseña “raíz”, a la que añado un prefijo de un par de letras en función del sitio donde la voy a utilizar y, opcionalmente, un sufijo distinto para cada una de las cuentas que tenga en el mismo servicio.

La contraseña en twitter con mi usuario @alejandroandre sería, por tanto, “Tw3qtp$Va” (“Tw” al inicio, por twitter y “a”, al final por @alejandroandre), mientras que con el usuario @nubbus serían “Tw3qtp$Vn“. Siguiendo con este ejemplo, mi contraseña de Facebook podría ser “Fa3qTp$V“,la de Gmail “Gm3qTp$V” y así hasta casi el infinito…

Con esta técnica, aunque no es perfecta, se pueden definir claves suficientemente fuertes gracias a

    1. tener una longitud suficiente,
    2. utilizar mayúsculas, minúsculas, números y símbolos, y
    3. ser diferentes para cada servicio.

 

¿Qué trucos utilizas tú para crear tus contraseñas de forma segura?

¿Qué es realmente Cloud Computing?

Sobre Cloud Computing, o Computación en la Nube: hay, quizá, demasiadas definiciones, en las que cada cual “arrima el ascua a su sardina”. Y como término relativamente novedoso, está acabando por ser utilizado incorrectamente.

Como punto de partida creo que es bastante ajustada la del NIST (National Institute of Standards and Technology):

“Cloud computing is a model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction…”

Según la wikipedia -no siempre fuente fiable- es:

“…la capacidad de computación independiente de la localización, en la que servidores compartidos proporcionan recursos, software y datos a otros ordenadores que los soliciten… la evolución natural de la virtualización y de las arquitecturas orientadas a servicios…”

En ambas definiciones se hace mención a recursos compartidos, ubicuidad o acceso a la red, y a servicios bajo demanda. A riesgo de ser condenado por hereje, me planteo: ¿que aporta de nuevo el cloud computing? ¿en que se diferencia del clásico hosting, o de lo que en su día, por ejemplo, IBM llamó “On-Demand“, o T-Systems “Dynamic Services“?

Me atrevería a afirmar que la novedad viene dada por la conjunción de cinco factores:

  • Elevada elasticidad. Gran facilidad para escalar tanto de forma automática como a demanda, las capacidades de computación. En esto juega un importante papel la virtualización.
  • La propiedad de la infraestructura suele ser de un tercero, aunque es diferente en el caso de las nubes privadas, pagándose por uso y nivel de servicio, y bajando por tanto el CAPEX para convertirlo en OPEX.
  • Mínima administración, lo que aísla al “usuario” de la complejidad de la provisión, mantenimiento y soporte de infraestructura, plataforma y servicios complejos.
  • Acceso remoto, pues los servicios suelen suministrarse desde centros de procesamiento ajenos a la empresa, a veces distribuidos y redundantes.
  • Protocolos estándar, como los que proporciona Internet, pues en la mayor parte de los casos es suficiente un navegador para acceder a los servicios contratados.

Ejemplos básicos de cloud computing los tenemos en el correo web, como GMail o Hotmail; infraestructura virtualizada como Amazon WS; o aplicaciones empresariales en la nube, como el CRM SalesForce, o recientemente el de Microsoft.

Pero también lo son Dropbox, WordPress, Office 365, Google Apps o Evernote, y otros cientos de ejemplos más. Las redes de spammers son un ejemplo, negativo, de la potencialidad de la nube para suministrar servicios virtualmente ilimitados -aunque sea sin el consentimiento de quienes los suministran.

 

¿Es realmente esto lo que tú entendías por Cloud Computing?