Llave de encriptación en Reporting Services.

Por Daniel Torres Garrido

El uso de SQL Server Reporting Services ha ido creciendo hasta convertirse en una parte medular en la generación de reportes, utilizando la información que se almacena en SQL Server así como otros manejadores de bases de datos. Estos reportes, son consultados por especialistas para la toma de decisiones de negocio, y es por ello la criticidad que adquieren cuando existe un problema.

Derivado de los incidentes de soporte que atendemos relacionado con este tema, existe un porcentaje significativo relacionado con la llave de encriptación, y esto se debe en parte a que muchos de los administradores de bases de datos desconocen el uso de estas llaves. Cuando instalamos y configuramos Reporting Services en un servidor, se genera una llave de encriptación para administrar las llaves simétricas que se utilizan para encriptar y desencriptar datos en un reporte. Esta llave se genera durante el proceso de configuración de Reporting Services justo en el momento de crear la base de datos de reportes. Por alguna razón una buena parte de los administradores piensa que esta llave se crea solo cuando se habilita expresamente algún mecanismo de encriptación y por lo tanto no debe respaldarse, otros incluso desconocen su existencia.

Lo grave de esta situación es que existen ciertas operaciones que los administradores realizan y que eventualmente, por diseño del producto, solicitan la restauración del respaldo de la llave. Tal cual se documenta en el siguiente vínculo (https://technet.microsoft.com/en-us/library/ms189422.aspx) existen 3 operaciones que solicitarán restaurar la llave después de completado el cambio:

  1. Modificar la cuenta de servicio del servicio de Reporting Services.
  2. Migrar la instalación de Reporting Services a otro equipo.
  3. Configurar una nueva instancia del servidor de reportes para que compartan las mismas bases de datos (ReportServer y ReportServerTEMPDB).

Es importante aclarar que estas 3 operaciones no solicitan restaurar el respaldo de la llave de encriptación para poder completarlas ni tampoco es un pre requisito. En la mayoría de los casos los usuarios se dan cuenta que necesitan restaurar la llave de encriptación una vez hecho el cambio ya que al momento de abrir el Report Manager URL se muestra el siguiente mensaje en lugar de los reportes:

The report server cannot decrypt the symmetric key that is used to access sensitive or encrypted data in a report server database. You must either restore a backup key or delete all encrypted content. (rsReportServerDisabled) Get Online Help Bad Data. (Exception from HRESULT: 0x80090005)

Generalmente los casos que recibimos se abren cuando este mensaje se despliega ya que los administradores no saben exactamente a qué se refiere o no cuentan con el respaldo. Es importante señalar que si no hay un respaldo de la llave de encriptación no hay ninguna forma de burlar el mensaje o de eliminarlo sin tener que restaurar forzosamente la llave. Si no contamos con el respaldo existe una forma de eliminar la llave de encriptación y generar una nueva sin embargo al momento de hacerlo SQL Server nos notifica que esto tendrá las siguientes implicaciones:

The action of deleting and recreating the symmetric key cannot be reversed or undone. Deleting or recreating the key can have important ramifications on your current installation. If you delete the key, any existing data encrypted by the symmetric key will also deleted. Deleted data includes connection strings to external report data sources, stored connection strings, and some subscription information.

Reporting Services utiliza la llave de encriptación para cifrar las cadenas de conexión de los reportes ya que estos contienen los usuarios y password para acceder a los orígenes de datos. Al realizar alguna de las 3 acciones el Report Manager solicitará restaurar la llave para poder validar que es esa misma llave la que se usó para encriptar los datos y acceder al contenido.

Cuando no se tiene un respaldo lo que se debe hacer es re-crear la llave. Para ello realice lo siguiente:

  1. Abra el Reporting Services Configuration Manager. 2

  2. Seleccione la instancia a la que desea conectarse.

  3. Seleccione la opción Encryption Keys.

  4. Presione el botón Delete. Se desplegará el siguiente mensaje:

    Delete the key along with all encrypted data stored in the report server, including connection strings, stored credentials, and subscription information.

    This operation is performed as a last resort if you do not have a backup or you cannot restore the key. After you delete this content, you must redefine all report data source settings and subscriptions used on the report server.

    Are you sure you want to delete all encrypted data?

  5. Si usted está de acuerdo con el mensaje de alerta dé clic en el botón Yes.

  6. Una vez borrada la llave se generará automáticamente una nueva.

  7. Utilice el botón Backup para realizar un respaldo de la nueva llave.

Como se indica en los mensajes de alerta lo anterior siempre constituirá el último recurso. Lo ideal es que usted genere un respaldo de la llave de encriptación como parte de su procedimiento después de instalar Reporting Services y antes de hacer alguna de las 3 operaciones de mantenimiento que se indican en el artículo. Hacer esto, que además no requiere más de un par de minutos, le ahorrará varios dolores de cabeza y su ambiente estará disponible.