Mi primera pregunta, sé gentil. Entiendo que la cuenta sa permite un control completo sobre un servidor SQL y todas las bases de datos, usuarios, permisos, etc.
Creo absolutamente que las aplicaciones no deberían usar la contraseña sa sin una persona de negocios perfeccionada y centrada en eso. Las respuestas a esta pregunta incluyen mucho de mi razonamiento para una discusión centrada en TI
Me veo obligado a aceptar un nuevo sistema de administración de servicios que NO FUNCIONARÁ a menos que use la contraseña sa. Nunca tuve tiempo de averiguar por qué al configurar una evaluación, pero el equipo del servidor intentó instalarla para usar una función fija que había configurado incorporando db_creater y otros permisos que pensé que requerirían. que falló Luego dejé que el equipo del servidor se instalara con la cuenta sa pero se ejecutara bajo una cuenta en el rol dbo para su base de datos, pero eso también falló. Malhumorado, intenté que funcionara con una cuenta en el rol de administrador del sistema, pero incluso eso falló y no con mensajes de error útiles que me permitieron resolver lo que estaba sucediendo sin pasar más tiempo del que tenía disponible. Solo funcionará con la cuenta sa y la contraseña almacenada en texto sin cifrar en el archivo de configuración.
Cuando pregunté esto y el equipo del servidor habló con el proveedor, obtuvieron la preocupante respuesta de '¿Cuál es el problema con eso?' y luego 'bueno, podemos ver cómo codificar la contraseña' codificando ffs
Sé que hay formas y medios para restringir el acceso al archivo, pero en mi opinión, es solo otra debilidad en la seguridad.
De todos modos, mi pregunta es, ¿alguien podría señalarme alguna documentación que pueda usar para explicarle al negocio la razón por la cual esto es algo malo y debería ser un gran no? Trabajo en un campo que significa que necesito tomarme en serio la seguridad y he estado luchando para que el negocio entienda y, en última instancia, puede ser superado de todos modos, pero tengo que intentarlo.
fuente
sa
o algún miembro desysadmin
, incluidos los inicios de sesión de Windows?sa
explícitamente.Respuestas:
Depende de su negocio, pero lo principal en la mayoría de los casos es asegurarse de que no se vea como un problema de TI. Es un problema de seguridad y, si bien las dos personas de negocios masivos se superponen, es más probable que escuchen si dice "seguridad" que si simplemente está "gimiendo sobre cosas generales de TI".
¿Trabaja con algún cliente que tenga requisitos de seguridad? Ese es un buen lugar para comenzar. Si ejecutamos una aplicación con acceso de nivel sa, o simplemente una aplicación que no aseguró adecuadamente sus credenciales, incluso si no usaba acceso privilegiado (preferimos Windows Integrated en lugar del usuario / pase almacenado cuando sea posible), y estaríamos sujetos a una seguridad auditoría, esa auditoría fallaría y correríamos el riesgo de perder clientes y / o tener que devolver dinero a los clientes de nuestros grupos (las organizaciones bancarias en el caso del producto en el que trabajo principalmente, otras partes del grupo tratan con la policía y la salud autoridades y demás) la seguridad es parte de que nuestra oferta sea adecuada para su propósito. La gente de negocios serán comprender la gravedad de esa amenaza potencial, aunque por lo general no más que palabras pagan a las recomendaciones de TI.
Incluso si ignora los requisitos impuestos por el cliente, si se esfuerza por cumplir con varios estándares de seguridad estándar de la industria, nuevamente este tipo de autenticación de aplicación le fallará frente a una auditoría, ya que está muy lejos de ser una práctica recomendada como algo que generalmente se considera en la lista "simplemente no se debe hacer". Deje en claro a los responsables de la toma de decisiones de su negocio que la seguridad es una parte importante de la aplicación, y el hecho de que este proveedor no parece ser consciente (o al menos no se preocupa adecuadamente) hace que tenga dudas sobre qué más podrían no ser capaces de hacer. lidiar con: conocer las mejores prácticas de seguridad de DB es (bueno, debería ser) parte de su trabajo y su implementación no es difícil.
Señale también que usted (el comprador) debe dictar requisitos de seguridad razonables al proveedor, y no al revés. Son sus datos, por lo que no están calificados para indicar lo que se considera lo suficientemente seguro.
fuente
Ninguna aplicación necesita tener acceso SA nunca. (A menos que su único propósito sea la administración de bases de datos de algún tipo).
Es una regla general no otorgar más derechos a ningún inicio de sesión (de aplicación o personal) de lo que la empresa requiere que tenga ese inicio de sesión.
Ninguna aplicación es completamente segura. La mayoría tiene algún tipo de vulnerabilidad de inyección SQL o XSS. Si un intruso puede ejecutar una declaración de su elección y tiene acceso 'SA', hay muchas cosas que pueden sucederle a sus datos que podrían matar el negocio instantáneamente. (Especialmente si los datos necesitan ser confiables porque son utilizados por las fuerzas del orden público). Pregunte a los interesados qué tendrían que hacer, si alguien pudiera cambiar deliberadamente incluso un solo registro y esa información se filtró.
Ahora, con el acceso 'SA', no solo se puede cambiar la base de datos de la aplicación, sino también todas las demás bases de datos del sistema. Por lo tanto, pregunte a sus partes interesadas qué harían si hiciera una copia de TODAS sus bases de datos y la enviara al periódico. Porque eso podría suceder si un empleado descontento descubre que existe este agujero de seguridad.
El vendedor dijo que podían codificar la contraseña. Eso es BS. La aplicación necesita acceder a la contraseña en texto sin cifrar para usarla, por lo que la clave para descifrar la contraseña se almacenará descifrada junto a ella. Además, como se mencionó anteriormente, el verdadero problema no es que alguien encuentre esta contraseña; es que las personas (mal) que usan este sistema a través de una vulnerabilidad tendrán acceso completo a todas sus bases de datos sin ver la contraseña.
La causa más probable de que se requiera SA es que la aplicación necesita interactuar con el Agente SQL. Al menos esa es una de las funciones más difíciles de implementar correctamente y la mayoría de las personas simplemente toman la ruta "usar SA" para evitarlo. Requerir 'SA' en sí mismo podría deberse a que el proveedor no sabe cómo verificar los permisos del administrador del sistema.
Hay dos soluciones que puedes probar:
Cambie el nombre de SA (una práctica recomendada de seguridad de todos modos) y cree una nueva cuenta llamada 'SA' con derechos restringidos. (Nunca probé esto, pero debería funcionar)
No instales el software. Usted como profesional no puede asumir la responsabilidad de esa acción, por lo que no debe instalarla. Para darle una comparación, pídale a un plomero que dirija la línea de gas directamente a través de la chimenea en lugar de rodearla para ahorrar algo de tubería / dinero. Puede que te estés riendo de esta imagen, pero creo que es una comparación adecuada: este software explotará tarde o temprano, probablemente antes. Y cuando lo haga, también podría derribar el negocio.
Si todo esto no impide que "ellos" requieran este software, la última recomendación que puedo darle es ejecutar. Si algo le sucede a los datos, usted será el primero en ser responsable. Entonces, con esta aplicación en su lugar, probablemente no tenga seguridad laboral, así que busque un empleador que le brinde al menos algo.
fuente
alter login sa with name = [as];
.Veo dos líneas de atacar esto.
El cumplimiento . ¿Existe algún criterio de cumplimiento obligatorio en su tienda? Busque cuidadosamente a través de su redacción y vea si encuentra algo que sea incompatible con el "requisito" de la aplicación. Si encuentra algo que impida el
sa
uso de una aplicación, tiene una carcasa hermética a prueba de balas, ya que la aplicación haría responsable a su negocio, etc.Acceso de administrador de usuario . Asegúrese de presentar claramente el caso de que una aplicación que requiere
sa
acceso en efecto le dasa
acceso a todos los usuarios corporativos que tienen derechos de administrador en las estaciones de trabajo donde está instalada la aplicación. No hay forma de ocultar lasa
contraseña de los administradores locales donde se ejecuta la aplicación, eso es un hecho y ninguna cantidad de 'codificación' puede evitar esto. No existe una raíz local de confianza a la que un administrador local no pueda acceder, si así lo desea. Deje en claro que tener una aplicación que requieresa
equivale a darsa
privilegios a todos los usuarios que ejecutan la aplicación. Explique lo que eso significa, lo que efectivamente pueden hacer los usuarios:Deje en claro a los tomadores de decisiones que aceptar esta aplicación implica confiar a todos los empleados que tienen acceso de administrador a las estaciones de trabajo que ejecutan la aplicación con todos los privilegios mencionados anteriormente. El vendedor intentará defender su posición invocando de algún modo u otro 'encriptando' la
sa
contraseña de la aplicación. Esto no retiene el agua. No existe un esquema de cifrado que pueda resistir un ataque de un administrador. Y deje en claro que la cantidad de habilidad técnica requerida para encontrar una contraseña 'oculta' localmente es completamente irrelevante. Los empleados no lo van a hacer ellos mismos, uno de ellos buscará en Google y descubrirá el script fácil de usar que lo hace.fuente
Primero, ¿la contraseña sa almacena el texto plano? Deberías votar con tu billetera. Quien piense que eso es aceptable debe quedar fuera del negocio.
Aquí hay una anología que podría ayudarlo a explicar el problema: la empleada Alice necesita acceso al primer piso. ¿Le das la llave maestra de todo el edificio o solo la llave del primer piso? Respuesta: Le das solo las llaves del primer piso. ¿Por qué? Porque reduce la posibilidad de daño accidental o deliberado. Si Alice no puede llegar a la sala de servidores del segundo piso en primer lugar, entonces nunca hará nada malo allí.
Es el principio de menor privilegio.
En cuanto a por qué la aplicación necesita usar la cuenta sa, esa es una pregunta que PerfMon o Extended Events deberían poder responder. Cree una traza PerfMon utilizando la plantilla T-SQL, tal vez filtrada por el nombre de la aplicación.
Fuera de mi cabeza, aquí hay otro argumento contra el uso de sa: el uso de la cuenta sa requiere que el servicio de SQL Server esté en modo de autenticación mixta. La autenticación de Windows solo es mejor porque podemos aprovechar todas las características seguras de Kerberos.
fuente
Desde una perspectiva técnica, no hay razón para que una aplicación necesite permisos de SA. Lo que probablemente sucedió es que los desarrolladores de la aplicación probablemente verifiquen si su inicio de sesión tiene permisos de administrador de sistemas y si no, simplemente arroja un mensaje de error. De esta manera pueden afirmar que la aplicación requiere derechos de SA.
Si tiene que tener esta aplicación, la ejecutaré en una instancia separada que no tiene nada más.
fuente
Quizás su proveedor esté solicitando / requiriendo "sa" porque en algún lugar de su aplicación están utilizando XP_CMDSHELL. (No empiece con el daño posible con acceso irrestricto a XP_CMDSHELL. Baste decir que esto potencialmente abre no solo sus datos sino la máquina host y, tal vez, cualquier otra cosa en su red para acceso de administrador)
Si hay una necesidad legítima, puede otorgar acceso restringido a través de una cuenta proxy. Ver, por ejemplo, BOL: http://msdn.microsoft.com/en-us/library/ms175046.aspx
fuente
Ninguna aplicación debe requerir la cuenta SA y la contraseña para operar.
Sin embargo, he instalado un producto de gestión de servicios de TI, y durante el proceso de instalación tiene la opción de proporcionar las credenciales de la cuenta SA para permitir que el instalador cree la base de datos y adjunte una cuenta a la base de datos para que el software la use. Las credenciales de la cuenta SA no se guardan en la aplicación ni en los registros del instalador. Este software también proporciona la opción de usar una base de datos pre-creada durante la instalación.
Por lo tanto, solo confirmaría si la cuenta SA es necesaria para la instalación o el funcionamiento de este software de gestión de servicios de TI.
Si la instalación: crea una cuenta temporal 'sa' - realiza la instalación - y elimina la cuenta.
Si Operación: Evita ese software como la peste. (o configurar un servidor SQL independiente que solo albergará esa base de datos).
fuente
Se debe modificar cualquier parámetro de seguridad del sistema SQL Server predeterminado proporcionado. Se recomienda no usar el modo mixto (habilita la autenticación de Windows y SQL Server) para la autenticación. En su lugar, cambie a la autenticación de Windows solamente, que hará cumplir la política de contraseña de Windows, comprobando la longitud de la contraseña, la duración de la vida y el historial. La característica de la política de contraseñas de Windows que la diferencia de la autenticación de SQL Server es el bloqueo de inicio de sesión: después de varios intentos de inicio de sesión fallidos sucesivos, el inicio de sesión se bloquea y no se puede usar para un uso posterior
Por otro lado, la autenticación de SQL Server no proporciona ningún método para detectar intentos de ataque de fuerza bruta, y lo que es peor, SQL Server incluso está optimizado para manejar un gran número de intentos de inicio de sesión rápido. Por lo tanto, si la autenticación de SQL Server es imprescindible en un sistema SQL Server en particular, se recomienda deshabilitar el inicio de sesión de SA
fuente