martes, 21 de agosto de 2012

ASP.NET - Encriptando y Desencriptando el web.Config


ASP.NET - Encriptando y Desencriptando el web.Config
con Sebastian Zangaro
Aumentar la seguridad del archivo web.Config cifrando secciones del mismo utilizando el proveedor de configuración protegida RSA y la herramienta Aspnet_regiis, y así dificultar el acceso a la información almacenada en el mismo.
Procedimiento
Una vez que tenemos identificada la sección o secciones que vamos a cifrar, y que tenemos el proveedor de configuración, podemos proceder con el primer paso. Es recomendable encriptar la sección de connection string o cualquiera que contenga datos sensibles como passwords.
Recomendaciones
Antes de realizar alguna operación, y periódicamente es recomendable realizar un backup del archivo encriptado.

Como obtener el ID del Site:

                Antes de cualquier operación es recomendable obtener el ID del Site al que le queremos cifrar el archivo web.config, machine.config, etc. Este ID se puede obtener de varias maneras como por ejemplo desde el archivo log.
En lo personal el método más fácil y rápido es el siguiente:

a-Abrir el IIS Manager:

Puede encontrarse dentro de “Administrative Tools”

b-Abrir la Configuración Avanzada:

Expandir “Sites”, ubicar el Site del cual se va a obtener el ID, en este caso “Newsletter – 1337”, click derecho, buscar la opción dentro de “Manage Web Site” y hacer click en “Advanced Settings…”.

Copiar ID:

Dentro de “(General)”, se podrá observar el ID.

Encriptar archivo web.config:

Ejecutar Command Prompt:

Ejecutamos con privilegios elevados (Como administrador) el Command Prompt de Visual Studio. Si no aparece dicha opción, manteniendo apretada la tecla “Shift”, hay que darle clic derecho al Command Prompt”.

Escribir la siguiente línea de comando:

aspnet_regiis -pe "appSettings" -app "/" -site "SITE_ID" -prov "RsaProtectedConfigurationProvider"
NOTA: Remplazar SITE_ID por el ID obtenido en el punto 1.3.
Explicación sobre los parámetros:
·         -pe/-pd es el comando para encriptar o desencriptar respectivamente.
·         Lo que le sigue a la acción que se va a hacer es la sección, en este caso es “appSettings”. Vale aclarar que es otros casos tal ves es necesario ingresar la ruta completa, como por ejemplo “system.web/pages”.
·         El parámetro -app es para identificar la Aplicación de la cual se va a encriptar el web.Config. Lo siguiente a este parámetro debe ser una barra seguida del nombre de la aplicación.
·         El parámetro -site es para decirle a que Site corresponde. Hay que ponerle el id, que se puede obtener desde distintas maneras como por ejemplo desde el log. Para más información click aquí.
·         El parámetro -prov corresponde al Provider o proveedor de configuración utilizado para cifrar. En el caso de desencriptar no hace falta especificarlo. Este provider se puede cambiar, o se puede crear uno custom.

Excepciones en cuanto a secciones:

Para las secciones a encriptar existen algunas excepciones como por ejemplo:
·         <processModel>
·         <runtime>
·         <mscorlib>
·         <startup>
·         <system.runtime.remoting>
·         <configProtectedData>
·         <satelliteassemblies>
·         <cryptographySettings>
·         <cryptoNameMapping>
·         <cryptoClasses>
Para encriptar estas secciones hay que usar la herramienta aspnet_setreg.exe (Microsoft Knowledge Base articulo 329290).

Que hacer con una solución local:

Los pasos son muy parecidos a los especificados en el punto 2, con la diferencia que en lugar de utilizar -pe/-pd, los comandos a utilizar deben ser -pef/-pdf respectivamente.

¿Pero entonces hay que modificar la programación para adaptarla a este cambio?

La respuesta es no, ASP.Net internamente se encarga de desencriptar automáticamente el contenido del web.config. Se puede realizar una prueba con la siguiente línea:
Response.Write(ConfigurationManager.ConnectionStrings["cn1"].ConnectionString);

Errores generales con los que me encontré:

·         RSA key container could not be opened.
Esto ocurre cuando el usuario no tiene los permisos necesarios para acceder al key container. Para solucionar este error, hay que ejecutar alguna de las siguientes instrucciones:
o   aspnet_regiis -pc "NetFrameworkConfigurationKey" -exp
o   aspnet_regiis -pa "NetFrameworkConfigurationKey" "ASPNET"
o   aspnet_regiis -pa "NetFrameworkConfigurationKey" "NETWORK SERVICE"
o   aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT AUTHORITY\NETWORK SERVICE"
Donde “NetFrameworkConfigurationKey” es la RSA key que se puede obtener en el machine.config, ubicado como por ejemplo en la ruta “%WinDir%\Microsoft.Net\Framework\v2.0\Config”, bajo la sección configProtectedData; y el ultimo parámetro es la cuenta donde se está ejecutando el servicio asp.net, es decir la cuenta a la cual se le desea asignarle permisos.
Cabe aclarar que dependiendo el caso puede ser necesario especificar el domain.

Para obtener la identidad bajo la cual se ejecuta la aplicación, se puede utilizar la siguiente línea:
Response.Write(WindowsIdentity.GetCurrent().Name);

Referencias


Tech Session Certifications -Closing Memo




Accenture Certifications Overview

         

Poll
Please take 5 minutes for complete this poll and share your feedback of this tech session, all the comments will help us for improve future tech sessions.


Materials
Here you can found the presentation used during this tech session, and also some additional materials like code samples.


Recording session
If you want see the session again, or share it with a your folks, you can do it:






Tech session Overview
 Tech Session was established with a clear mission to provide a quick overview about different technologies aspects implemented (or not) in our project to small and medium sized groups.
  At Tech Session, our purpose is share technical information to the rest of the Avanade members; the presenter cannot be an expert about the things that he/she is presenting, the audience can response questions and share experiences.

More Information
Gaston Casals


More Information
Please contact:
Diego Alegre / Martin Jalaf

viernes, 17 de agosto de 2012

tech Session - Certifications



Accenture Certifications Overview

Accenture provides to his employees the possibility of get different certification levels, according to his skills, experience and dedication.
During this tech session we will review the requirements, process and benefits of the following certifications:
  • ASDA Certifications
  • Master Technology Architect Program
  • Microsoft Certified Professional Program
  • PPSM Certification

The ASDA program, is a strategy partnership of Accenture along with the MIT, and gives four certifications level, according to the profile and career level.
The MTA is an Accenture program for recognize the most valuable professionals and ensure that the projects and proposal have the right level of technology architecture expertise.
The MCP Program is an initiative of the Microsoft Capability designed for assist those interested in obtaining a Microsoft certification.
The PPSM is a new program to support the development and recognition of skills of our specialists.

About Avanade
Avanade provides business technology services that connect insight, innovation and expertise in Microsoft® technologies to help customers realize results. For more information, visit
www.avanade.com.

Tech session Overview
Tech Session was established with a clear mission to provide a quick overview about different technologies aspects implemented (or not) in our project to small and medium sized groups.

At Tech Session, our purpose is share technical information to the rest of the Avanade members; the presenter cannot be an expert about the things that he/she is presenting, the audience can response questions and share experiences.

Audience
Avanade Team
Presenters
Gaston Casals

Tech Session Start & End Dates

Start: 17 August 2012
Duration: 1 hour (11 to 12 am)



More Information
Please contact:
Gaston Casals/ Diego Alegre / Martin Jalaf

miércoles, 1 de agosto de 2012

Addo Agnitio Award - Honorable mention Q3 FY12


Congratulations for once again being an Honorable Mention recipient of the Addo Agnitio Award. As you know, this program aims to recognize individuals who are sharing their knowledge and collaborating through our ‘formal’ channels here at Accenture. 

Your Q3 FY12 score puts you in the top 99.5 percentile and we want to say ‘Thank you’ for keeping up the collaboration and knowledge sharing behaviors. Remember that our ‘One Global Network’ core value is supported by each of us doing our part, so please continue to collaborate and share your knowledge and experiences across our organization. 

You can check your score as well as see the recipients of the award for Q3 on one.accenture.com.
Thanks again for living our core value of One Global Network – and for Discovering and Being Discovered.
Steve Kaukonen
Social Learning team