A pesar de nuestras vehementes protestas, nuestra gerencia ha decidido que el equipo de desarrollo debe tener derechos 'sa' en el servidor de desarrollo. El problema es que nosotros, el grupo de soporte de DB todavía somos responsables de mantener este cuadro.
Ahora se nos ha encomendado la tarea de elaborar una lista de qué hacer y qué no hacer para los equipos de desarrollo con estos privilegios mejorados.
Por favor agregue a esta lista:
DO: limitar las actividades a la base de datos en desarrollo
NO HAGA --
- cambiar cualquier configuración de instancia de SQL
- sp_configure (incluido cmdshell)
- agregar / cambiar / eliminar cualquier configuración de seguridad
- agregar / cambiar / eliminar objetos de la base de datos
- agregar / cambiar / eliminar objetos del servidor como dispositivos de respaldo y servidores vinculados
- agregar / cambiar / eliminar replicación
- agregar / cambiar / eliminar planes de mantenimiento
- toca cualquier base de datos que no pertenezca a tu equipo
Se agradecerá mucho cualquier indicador de las herramientas disponibles para rastrear las actividades de estos usuarios.
Respuestas:
Si no es demasiado tarde, una opción de compromiso que he visto funcionar bien es en lugar de actualizar los permisos o reemplazar las cuentas existentes de los desarrolladores, crear una cuenta separada que solo se usa cuando necesitan los permisos elevados.
Por lo tanto, normalmente funcionan bajo cuentas "restringidas" individuales (que uso libremente porque estas cuentas restringidas todavía necesitan algunos permisos fuertes, es decir, crear, eliminar, modificar para tablas). Pero para esa rara ocasión en que creen que lo necesitan
sa
, pueden iniciar sesión con esta cuenta. Luego, puede marcar la cuenta en sus registros y realizar un monitoreo adicional. Le has dado a los desarrolladores el acceso que pidieron, pero de una manera que es un poco más controlable.Finalmente, si hay abuso, los registros de esta cuenta se pueden usar como evidencia para eliminarlo.
fuente
Aquí dice (MSDN) que necesita sysadmin (sa) para depurar en SQL Server 2005.
Sin embargo, esta pregunta SO muestra otra forma sin sa, que es lo que pensé inicialmente. Simplemente permítales correr
sp_sidedebug
También sugiero darles SQL Express local que también resuelve otros problemas ...
(editado con más información)
Editar, después de la respuesta de W. Craig Trader
Otros problemas con los derechos "sa", en el peor de los casos:
p.ej
xp_cmdshell 'scm -Action 6 -Server PRODSERVER'
fuente
Una sugerencia que tengo es configurar la gestión basada en políticas y hacer cumplir todos sus 'hacer' y 'no hacer' como reglas de política. Esto ayudaría mucho a proteger la instancia.
También desplegaría la auditoría de cambios DDL, vea Auditoría en SQL Server 2008 , no tanto como un elemento disuasorio, sino principalmente como un sistema de seguimiento de cambios para que cuando algo se atornille, al menos sepa lo que cambió.
fuente
Si es el servidor de DESARROLLO, ¿cuál es el problema con los DESARROLLADORES que pueden tener acceso completo? Decirle a los desarrolladores que no puede agregar / eliminar / cambiar objetos de la base de datos (por ejemplo: tablas, columnas, índices) es como decirles "Puede tener un compilador, pero no puede ejecutarlo". Me parece que los desarrolladores quieren / necesitan acceso a su propia instancia de base de datos específicamente para permitirles probar diferentes métodos de resolución de problemas SIN tener que interferir con las bases de datos PRODUCTION o TEST. Deberías alentar ese tipo de comportamiento, no desalentarlo.
Algunos pueden sugerir que los desarrolladores trabajen con instancias locales de SQL Express, pero si bien SQL Express para cada desarrollador puede resolver ciertos problemas, tiene diferentes limitaciones y características de rendimiento que SQL Server completo en un servidor separado.
Lo que DEBE hacer es instituir un programa regular de copias de seguridad (al menos todas las noches) y trabajar con los desarrolladores para asegurarse de que sepan cómo iniciar copias de seguridad no programadas y restaurar desde copias de seguridad, de modo que el tiempo de inactividad se minimice en caso de problemas.
fuente
Es el dev servidor, no el servidor de grupos de apoyo DB o el servidor de producción. Mantenga una buena copia de seguridad / imagen y deje que los desarrolladores corten. Dejar que DBA controle el devbox es como dejar que la cola mueva al perro. Está ahí para que los desarrolladores realicen el trabajo del desarrollador Esto implica romper cosas a veces y soltar tablas, y luego volver a colocarlas con diferentes configuraciones. Las cajas de desarrollo siempre estarán en mal estado después de un tiempo, eso es lo que hacemos. Si no sabemos dónde está ocurriendo un problema, intentamos cosas diferentes. Algunos de ellos son fáciles de deshacer, otros no tanto.
fuente
sa
, pero haz que no sean sa por defecto, para que estén conscientes cuando están haciendo algo que necesitará un poco de trabajo extra para desplegarse correctamente.No creo que necesiten privilegios de SA en el cuadro Desarrollo. En casi todos los casos, pueden prescindir.
Creo que una buena opción es tener instalada la edición de desarrollo local.
pregunta:
¡¿No quieres que los desarrolladores agreguen / cambien / eliminen objetos de la base de datos? !! ¿Cómo se van a desarrollar?
fuente
Requerimos que todos los cambios en la estructura de la base de datos se realicen con scripts (incluso en dev) y se guarden en subversion. Luego, en un horario establecido, actualizamos el desarrollo desde prod y tienen que volver a ejecutar sus scripts para volver a donde estaban en el ciclo de desarrollo. Esto ayuda a garantizar que todo se haga a través de scripts y que tengan scripts listos cuando llegue el momento de la implementación.
Sé que en 2008 puede configurar DDL Triggers para rastrear los cambios estructurales de la base de datos, ¿puede hacer esto en 2005? De esta manera, al menos puede averiguar cuándo alguien cambia una configuración que lo hizo y descubrir por qué.
fuente
SQL Server Auditing es lo que desea, pero, si va a hacer toda la creación de objetos de la base de datos para ellos, ¿por qué los desarrolladores necesitan sa?
http://msdn.microsoft.com/en-us/library/cc280526.aspx
fuente