Configurar permisos para la implementación de compilaciones de equipo

por Jason Lee

En este tema se describe cómo configurar permisos para permitir que el servidor de compilación implemente contenido en servidores web y servidores de bases de datos como parte de un proceso de compilación automatizado.

Este tema forma parte de una serie de tutoriales basados en los requisitos de implementación empresarial de una empresa ficticia denominada Fabrikam, Inc. En esta serie de tutoriales se utiliza una solución de ejemplo (Contact Manager) para representar una aplicación web con un nivel de complejidad realista, que incluye una aplicación ASP.NET MVC 3, un servicio Windows Communication Foundation (WCF) y un proyecto de base de datos.

El método de implementación que constituye el núcleo de estos tutoriales se basa en el enfoque del archivo de proyecto dividido descrito en Descripción del archivo del proyecto, en el que el proceso de compilación está controlado por dos archivos de proyecto: uno que contiene las instrucciones de compilación que se aplican a todos los entornos de destino y otro que contiene los ajustes de compilación e implementación específicos del entorno. En tiempo de compilación, el archivo del proyecto específico del entorno se combina en el archivo del proyecto independiente del entorno para formar un conjunto completo de instrucciones de compilación.

Resumen de las tareas

Al instalar el servicio de compilación Team Foundation Server (TFS) 2010, especifique la identidad con la que quiere que se ejecute el servicio. De forma predeterminada, se trata de la cuenta de servicio de red. Como alternativa, puede configurar el servicio de compilación para que se ejecute mediante una cuenta de dominio.

Cualquier tarea de implementación que necesite autenticación de Windows y que planee automatizar mediante Team Build, se ejecutará mediante la identidad del servicio de compilación. Por tanto, deberá conceder a la identidad del servicio de compilación los permisos necesarios en los servidores web y los servidores de bases de datos.

Nota:

La cuenta de servicio de red usa la cuenta de máquina para autenticarse en otros equipos. Las cuentas de máquina tienen el formato [nombre de dominio][nombre de equipo]$; por ejemplo, FABRIKAM\TFSBUILD$. Por tanto, si el servicio de compilación se ejecuta mediante la identidad del servicio de red, debe conceder los permisos necesarios a la identidad de la cuenta de máquina para el servidor de compilación.

Configuración de permisos de servidor web

Como se ha descrito en Elección del enfoque adecuado para la implementación web, hay dos enfoques principales que puede usar si quiere implementar paquetes web en un servidor web remoto:

  • Implementar la aplicación desde una ubicación remota mediante el destino del Servicio Agente de implementación web (también conocido como agente remoto) en el servidor de destino.
  • Implementar la aplicación desde una ubicación remota mediante el destino del controlador de Web Deploy de Internet Information Services (IIS) en el servidor de destino.

El agente remoto tiene dos limitaciones clave en este caso:

  • El agente remoto solo admite la autenticación NTLM. En otras palabras, la implementación debe usar la identidad del servicio de compilación; no se puede suplantar a otra cuenta.
  • Para usar el agente remoto, la cuenta que realiza la implementación debe ser un administrador en el servidor de destino.

Juntas, estas dos limitaciones hacen que el enfoque del agente remoto no sea deseable para una implementación automatizada de Team Build. Para usar este enfoque, tendría que convertir la cuenta de servicio de compilación en un administrador en cualquier servidor web de destino.

Por el contrario, el enfoque del controlador de Web Deploy ofrece varias ventajas:

  • El controlador de Web Deploy admite la autenticación básica mediante HTTPS, lo que le permite pasar las credenciales de una cuenta alternativa a la herramienta de implementación web de IIS (Web Deploy).
  • Puede configurar servidores web de destino para permitir que los usuarios que no son administradores implementen contenido en sitios web de IIS específicos mediante el controlador de Web Deploy.

Como resultado, es claramente preferible tener como destino el controlador de Web Deploy al automatizar la implementación de paquetes web desde Team Build. Este es el proceso recomendado:

  1. Cree una cuenta de dominio con pocos privilegios que se usará para la implementación.
  2. Configure el controlador de Web Deploy y conceda a la cuenta los permisos necesarios para implementar contenido en un sitio web de IIS específico, como se describe en Configuración de un servidor web para la publicación de Web Deploy (controlador de Web Deploy).
  3. Invoque Web Deploy y seleccione como destino el controlador de Web Deploy mediante la autenticación básica y proporcione las credenciales de la cuenta de dominio que ha creado para realizar la implementación.

En la solución de ejemplo Contact Manager, especifique el tipo de autenticación (básica o NTLM), las credenciales de Web Deploy y la dirección del punto de conexión (agente remoto o controlador de Web Deploy) en el archivo del proyecto específico del entorno. Estos valores se usan para formular y ejecutar un comando de Web Deploy cuando se ejecuta el archivo del proyecto. Para más información, vea Implementación de paquetes web.

Para más información sobre cómo configurar el controlador de Web Deploy, incluida la configuración de permisos, vea Configuración de un servidor web para la publicación de Web Deploy (controlador de Web Deploy). Para más información sobre cómo configurar el agente remoto, vea Configuración de un servidor web para la publicación de Web Deploy (Agente remoto).

Configuración de permisos de servidor de bases de datos

Para implementar una base de datos en SQL Server, debe hacer lo siguiente:

  • Cree un inicio de sesión para la cuenta de implementación en la instancia de SQL Server.
  • Conceda los permisos DBCreator al inicio de sesión en la instancia de SQL Server.
  • Después de la implementación inicial, agregue el inicio de sesión al rol db_owner en la base de datos de destino. Esto es necesario porque en implementaciones posteriores, modificará una base de datos existente en lugar de crear una.

Puede autenticarse en una instancia de SQL Server mediante la autenticación NTLM o la autenticación de SQL Server:

  • Si usa la autenticación NTLM, debe conceder los permisos descritos anteriormente a la cuenta de servicio de compilación.
  • Si usa la autenticación de SQL Server, debe conceder los permisos descritos anteriormente a la cuenta de SQL Server. También debe incluir el nombre de usuario y la contraseña de SQL Server en la cadena de conexión que use para implementar la base de datos.

Para obtener detalles paso a paso sobre cómo configurar permisos para la implementación de bases de datos, vea Configuración de un servidor de bases de datos para la publicación de Web Deploy.

Conclusión

En este momento, debe comprender los permisos necesarios, junto con las opciones de autenticación disponibles, al automatizar las implementaciones de aplicaciones web y bases de datos desde Team Build. También debe poder implementar los permisos necesarios en los servidores web de IIS y en los servidores de bases de datos de SQL Server.

Lecturas adicionales

Para más información sobre cómo configurar entornos de Windows Server para admitir la implementación remota, vea Configuración de entornos de servidor para la implementación web.