Eventos
31 mar, 23 - 2 abr, 23
Evento de aprendizaje de SQL, Fabric y Power BI más grande. 31 de marzo – 2 de abril. Use el código FABINSIDER para ahorrar $400.
Regístrate hoyEste explorador ya no se admite.
Actualice a Microsoft Edge para aprovechar las características y actualizaciones de seguridad más recientes, y disponer de soporte técnico.
Se aplica a: SQL Server
Azure SQL Database
Azure SQL Managed Instance
En este artículo se proporciona información sobre los procedimientos recomendados y las directrices que ayudan a establecer la seguridad de SQL Server. Para una revisión completa de las características de seguridad de SQL Server, consulte Protección de SQL Server.
Para obtener procedimientos recomendados de seguridad de productos específicos, consulte Azure SQL Database y SQL Managed Instance y SQL Server en Azure Virtual Machines.
Una metodología de seguridad por capas proporciona una solución de defensa en profundidad al usar varias funcionalidades de seguridad destinadas a distintos ámbitos de seguridad. Las características de seguridad disponibles en SQL Server 2016 y mejoradas en versiones posteriores ayudan a contrarrestar las amenazas de seguridad y proporcionan aplicaciones de base de datos bien protegidas.
Azure cumple diversos reglamentos y estándares del sector que permiten compilar una solución compatible con SQL Server que se ejecuta en una máquina virtual. Para obtener información acerca del cumplimiento normativo de Azure, consulte Centro de confianza de Azure.
A menudo, las organizaciones necesitan proteger los datos en el nivel de columna, ya que los datos relativos a clientes, empleados, secretos comerciales, datos de productos, atención sanitaria, financiera y otros datos confidenciales se almacenan a menudo en bases de datos de SQL Server. Las columnas confidenciales suelen incluir números de identificación o del seguro social, números de teléfono móvil, nombre, nombre de familia, identificación de cuentas financieras y cualquier otro dato que se pueda considerarse como datos personales.
Los métodos y características mencionados en esta sección elevan el nivel de protección en el nivel de columna con una sobrecarga mínima y sin necesidad de realizar cambios exhaustivos en el código de la aplicación.
Use Always Encrypted para cifrar los datos en reposo y a través de la conexión. Las bibliotecas cliente solo descifran los datos cifrados en el nivel de cliente de la aplicación. Use el cifrado aleatorio sobre el determinista siempre que sea posible. Always Encrypted con enclaves seguros puede mejorar el rendimiento de las operaciones de comparación como BETWEEN, IN, LIKE, DISTINCT, Joins y más para escenarios de cifrado aleatorio.
Use Enmascaramiento dinámico de datos (DDM) para ofuscar los datos en el nivel de columna cuando Always Encrypted no es una opción disponible. Enmascaramiento dinámico de datos (DDM) no es compatible con Always Encrypted. Use Always Encrypted sobre el enmascaramiento dinámico de datos siempre que sea posible.
También puede conceder permisos GRANT en el nivel de columna a una tabla, vista o función con valores de tabla. Tenga en cuenta lo siguiente: Solo es posible conceder los permisos SELECT
, REFERENCES
y UPDATE
para una columna.
Un permiso DENY
de nivel de tabla no tiene prioridad sobre uno GRANT
de nivel de columna.
Seguridad de nivel de fila (RLS) permite usar el contexto de ejecución del usuario para controlar el acceso a las filas de una tabla de base de datos. RLS garantiza que los usuarios solo puedan ver el registro que les pertenece. Esto proporciona a la aplicación una seguridad de "nivel de registro" sin tener que realizar cambios significativos en la aplicación.
La lógica de negocios se encapsula dentro de funciones con valores de tabla controladas por una directiva de seguridad que activa y desactiva la funcionalidad de RLS. La directiva de seguridad también controla los predicados FILTER
y BLOCK
enlazados a las tablas con las que funciona RLS. Use Seguridad de nivel de fila (RLS) para limitar los registros que se devuelven al usuario que realiza la llamada. Use SESSION_CONTEXT (T-SQL) para los usuarios que se conectan a la base de datos a través de una aplicación de nivel intermedio donde los usuarios de la aplicación comparten la misma cuenta de SQL Server. Para obtener un rendimiento y una capacidad de administración óptimos, siga los procedimientos recomendados de seguridad de nivel de fila.
Sugerencia
Use Seguridad de nivel de fila (RLS) junto con Always Encrypted o Enmascaramiento dinámico de datos (DDM) para maximizar la posición de seguridad de su organización.
Cifrado de datos transparente (TDE) protege los datos en el nivel de archivo proporcionando cifrado en reposo a los archivos de base de datos. Cifrado de datos transparente (TDE) garantiza que los archivos de base de datos, los archivos de copia de seguridad y los archivos tempdb
no se puedan adjuntar y leer sin los certificados adecuados que descifran los archivos de base de datos. Sin Cifrado de datos transparente (TDE), es posible que un atacante se haga con el control de los medios físicos (unidades o cintas de copia de seguridad) y restaure o adjunte la base de datos para leer el contenido. Cifrado de datos transparente (TDE) se admite para trabajar con todas las demás funcionalidades de seguridad de SQL Server. El cifrado de datos transparente (TDE) realiza el cifrado y descifrado de E/S en tiempo real de los datos y los archivos de registro. El cifrado TDE usa una clave de cifrado de base de datos (DEK) que se almacena en la base de datos de usuario. La clave de cifrado de base de datos también se puede proteger utilizando un certificado que se protege mediante la clave maestra de base de datos de la base de datos master
.
Use TDE para proteger los datos en reposo, las copias de seguridad y tempdb
.
Para auditar SQL Server, cree una directiva de auditoría en el nivel de servidor o de base de datos. Una directiva de servidor se aplica a todas las bases de datos recién creadas en el servidor. Para simplificar, habilite la auditoría de nivel de servidor y permita que la auditoría de nivel de base de datos herede la propiedad de nivel de servidor para todas las bases de datos.
Audite tablas y columnas con datos confidenciales a los que se les han aplicado medidas de seguridad. Si una tabla o columna es lo suficientemente importante como para necesitar protección mediante una funcionalidad de seguridad, debe considerarse lo suficientemente importante como para auditarla. Es especialmente importante auditar y revisar periódicamente las tablas que contienen información confidencial, pero en las que no es posible aplicar las medidas de seguridad deseadas debido a algún tipo de limitación de la aplicación o la arquitectura.
SQL Server admite dos modos de autenticación, el modo de autenticación de Windows y el "modo de autenticación de SQL Server y Windows" (modo mixto).
Los inicios de sesión son distintos de los usuarios de base de datos. Primero, debe asignar inicios de sesión o grupos de Windows a usuarios o roles de base de datos en una operación independiente. A continuación, conceda permisos a usuarios, roles de servidor o roles de base de datos para acceder a objetos de base de datos.
SQL Server admite los siguientes tipos de inicios de sesión:
master
.master
) que hospeda la base de datos. SQL Server admite usuarios de base de datos independientes para la autenticación de Windows y SQL Server.Las siguientes recomendaciones y procedimientos recomendados ayudan a proteger las identidades y los métodos de autenticación:
Use estrategias de seguridad basada en roles con privilegios mínimos para mejorar la administración de la seguridad.
En Azure, use la seguridad con privilegios mínimos mediante el uso de controles de acceso basado en rol (RBAC)
Elija la autenticación de Active Directory en lugar de la de SQL Server siempre que sea posible y, especialmente, elija Active Directory en vez de almacenar la seguridad en el nivel de aplicación o base de datos.
Use la autenticación multifactor en las cuentas que tienen acceso de nivel de equipo, incluidas las cuentas que usan RDP para iniciar sesión en la máquina. Esto ayuda a protegerse contra el robo o las pérdidas de credenciales, ya que la autenticación basada en contraseña de un solo factor es una forma más débil de autenticación con credenciales en riesgo de verse comprometidas o dadas por error.
Requerir contraseñas seguras y complejas que no se puedan adivinar fácilmente y que no se utilicen para otras cuentas o propósitos. Actualice periódicamente las contraseñas y aplique directivas de Active Directory.
Las cuentas de servicio administradas de grupo (sMSA) proporcionan administración automática de contraseñas, administración simplificada de nombres de entidad de seguridad de servicio (SPN) y la capacidad de delegar la administración a otros administradores.
Minimice los derechos concedidos a la cuenta de AD de DBA. Considere la posibilidad de separar las tareas que limitan el acceso a la máquina virtual, la capacidad de iniciar sesión en el sistema operativo, la capacidad de modificar los registros de errores y auditorías y la capacidad de instalar aplicaciones o características.
Considere la posibilidad de quitar cuentas de DBA del rol sysadmin y conceder CONTROL SERVER a cuentas de DBA en lugar de convertirlas en miembros del rol sysadmin. El rol de administrador del sistema no respeta DENY
mientras que CONTROL SERVER sí.
Mantener registros históricos de los cambios de datos a lo largo del tiempo puede ser beneficioso para abordar los cambios accidentales en los datos. También puede ser útil para la auditoría de cambios de aplicación y puede recuperar elementos de datos cuando un actor malintencionado ha introducido cambios de datos que no estaban autorizados.
Las siguientes herramientas de configuración y evaluación siguientes abordan la seguridad del área de superficie, identificar oportunidades de seguridad de datos y proporcionar una evaluación de procedimientos recomendados de la seguridad del entorno de SQL Server en el nivel de instancia.
Ayuda a saber cuáles son algunas de las amenazas comunes que ponen en riesgo a SQL Server:
--
.Para minimizar el riesgo de una inyección SQL, tenga en cuenta los siguientes elementos:
EXECUTE
, EXEC
o sp_executesql
.;
: Delimitador de consultas'
: Delimitador de cadenas de datos de caracteres--
: Delimitador del comentario de una sola línea./* ... */
: Delimitadores de comentarios.xp_
: Procedimientos almacenados extendidos del catálogo, como xp_cmdshell
.
xp_cmdshell
en ningún entorno de SQL Server. Use SQLCLR en su lugar o busque otras alternativas debido a los riesgos que xp_cmdshell
puede introducir.Para minimizar el riesgo de un ataque de canal lateral, tenga en cuenta lo siguiente:
Tenga en cuenta las siguientes amenazas comunes de infraestructura:
Dado que no quiere que los atacantes adivinen fácilmente nombres de cuenta o contraseñas, los pasos siguientes ayudan a reducir el riesgo de que se descubran contraseñas:
Cree una cuenta de SQL con un nombre único que sea miembro de sysadmin. Puede hacerlo desde el portal si habilita Autenticación de SQL durante el aprovisionamiento.
Sugerencia
Si no habilita la autenticación de SQL durante el aprovisionamiento, debe cambiar manualmente el modo de autenticación a Modo de autenticación de Windows y SQL Server. Para obtener más información, consulte Cambiar el modo de autenticación del servidor.
Si tiene que usar el inicio de sesión de SA, habilite el inicio de sesión después del aprovisionamiento y asigne una nueva contraseña segura.
Tenga en cuenta lo siguiente para minimizar los riesgos de ransomware:
Eventos
31 mar, 23 - 2 abr, 23
Evento de aprendizaje de SQL, Fabric y Power BI más grande. 31 de marzo – 2 de abril. Use el código FABINSIDER para ahorrar $400.
Regístrate hoyCursos
Módulo
Obtendrá información sobre ciberamenazas comunes, como el ransomware, y para qué tipos de patrones de ataque se debe preparar una organización.
Certificación
Microsoft Certified: Azure Database Administrator Associate - Certifications
Administre una infraestructura de base de datos de SQL Server para bases de datos relacionales locales e híbridas en la nube mediante las ofertas de bases de datos relacionales PaaS de Microsoft.