Ir al contenido principal

 



Control de Acceso en SQL Server: Logins y Usuarios de Aplicación

En SQL Server, la gestión de accesos y permisos es fundamental para garantizar la seguridad de los datos.
Un enfoque común es la creación de logins y usuarios con distintos niveles de acceso, asegurando que solo tengan las autorizaciones necesarias para sus funciones.
En este artículo, exploraremos dos configuraciones comunes:

1. Usuarios con solo conexión, sin acceso a bases de datos
2. Usuarios de aplicación con acceso exclusivo a procedimientos almacenados (SP) mediante Application Roles

1. Creación de un Login sin acceso a ninguna base de datos

Si necesitamos que un usuario pueda autenticarse en SQL Server pero sin acceso a ninguna base de datos, podemos seguir estos pasos:

Creación del Login en el Servidor

USE [master]

GO

CREATE LOGIN [user1] WITH PASSWORD=N'12345678',

DEFAULT_DATABASE=[MiDataEjemplo],

DEFAULT_LANGUAGE=[Español], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF

GO


Verificación de la Conexión desde Visual FoxPro (VFP)


ncon = Sqlstringconnect("Driver={SQL Server}; Server=5CG13128K2; uid=user1; pwd=12345678")

If ncon < 0

      ? "Error al conectar: " + Message()

Else

      ? "Conectado correctamente con ID: " + Str(ncon)

Endif


2. Creación de un Usuario de Aplicación con acceso exclusivo a Procedimientos Almacenados

Creación del Usuario en la Base de Datos


USE [MiDataEjemplo]

GO

CREATE USER [user1] FOR LOGIN [user1] WITH DEFAULT_SCHEMA=[dbo]

GO

Creación de un Application Role


CREATE APPLICATION ROLE [Rol01] WITH DEFAULT_SCHEMA = [dbo],PASSWORD = '123456789'

GO

grant execute on [comercial].[area_venta_select] to rol01

GO


Pruebas desde Visual FoxPro (VFP)

Caso 1: Error al ejecutar el Procedimiento Almacenado sin Activar el Application Role


ncon = Sqlstringconnect("Driver={SQL Server}; Server=5CG13128K2; uid=user1; pwd=12345678")

If ncon > 0

      ? "Conectado correctamente con ID: " + Str(ncon)

      nExec = SQLExec(ncon, "EXEC comercial.area_venta_select", "resultado")

      If nExec < 0

            ? "Error: No se tienen permisos para ejecutar el SP."

      Else

            Browse  && Debería fallar en este caso

      Endif

      SQLDisconnect(ncon)

Else

      ? "Error en la conexión: " + Message()

Endif



Caso 2: Éxito al ejecutar el Procedimiento Almacenado con Application Role

ncon = SQLSTRINGCONNECT("Driver={SQL Server}; Server=5CG13128K2; uid=user1; pwd=12345678")

IF ncon > 0

    ? "Conectado correctamente con ID: " + STR(ncon)

    nExec = SQLEXEC(ncon, "EXEC sp_setapprole 'Rol01', '123456789'")

    IF nExec < 0

        ? "Error al activar el rol de aplicación"

    ELSE

        ? "Rol de aplicación activado correctamente"

        nExec = SQLEXEC(ncon, "EXEC comercial.area_venta_select", "resultado")

        IF nExec < 0

            ? "Error al ejecutar el procedimiento almacenado"

        ELSE

            BROWSE  && Ahora debería mostrar los resultados correctamente

        ENDIF

    ENDIF

    SQLDISCONNECT(ncon)

ELSE

    ? "Error en la conexión: " + MESSAGE()

ENDIF


Conclusión

Esta configuración nos permite mantener la seguridad y el control en SQL Server, asegurando que:
- Los logins sin acceso a bases de datos solo puedan autenticarse sin ver información.
- Los usuarios de aplicación solo puedan ejecutar procedimientos almacenados a través de Application Roles, sin acceso a las tablas directamente.
- Desde Visual FoxPro, podemos conectar estos usuarios, activar el rol de aplicación y ejecutar procedimientos almacenados sin exponer datos sensibles.

Estas prácticas mejoran la seguridad y el control del acceso a los datos, evitando vulnerabilidades innecesarias en el entorno de SQL Server.

Comentarios

Entradas populares de este blog

Trabajando con datos masivos SQL Server, VFP, XML, Stored procedures

 Trabajando con datos masivos SQL Server, VFP, XML, Stored procedures. Introducción En el mundo de la gestión de bases de datos, la eficiencia y la rapidez en la manipulación de datos son cruciales. Una técnica que ha ganado popularidad por su capacidad para manejar grandes volúmenes de datos de manera eficiente es el uso de XML para la inserción y modificación masiva de registros en SQL Server. Esta metodología no solo optimiza el rendimiento, sino que también simplifica el proceso de actualización de múltiples registros, lo que resulta en una mejora significativa en la productividad y la precisión de las operaciones. Las bondades de trabajar con XML para la inserción y modificación masiva de registros Eficiencia en el manejo de datos masivos : Utilizar XML como parámetro permite enviar múltiples registros en una sola transacción. Esto reduce considerablemente el número de llamadas a la base de datos, minimizando el overhead asociado y acelerando el proceso de inserción o actualiz...
El Reto de Migrar de DBF a SQL Server: Un Viaje Emocional Migrar una base de datos de DBF a SQL Server no es simplemente una tarea técnica; es un viaje emocional que puede desencadenar una montaña rusa de sentimientos. Inspirado en las emociones de la película "Emociones 2", exploramos cómo nuestras emociones juegan un papel crucial en este proceso y cómo podemos afrontarlas para dar ese importante paso hacia la modernización. Alegría: La Emoción del Progreso Alegría es el motor que nos impulsa a ver las oportunidades y beneficios de migrar a SQL Server. Imagina la eficiencia, la seguridad y las capacidades avanzadas que ofrece SQL Server. Esta emoción nos llena de entusiasmo y optimismo, ayudándonos a visualizar un futuro más brillante para nuestros sistemas y procesos. Tristeza: El Desapego del Pasado Dejar atrás algo que ha sido parte de nuestro trabajo durante años puede generar tristeza. Es normal sentir nostalgia por la familiaridad y el confort de DBF, pero reconocer e...