Tengo una base de datos de servidor microsoft sql y un conjunto de usuarios. Ahora, en mi aplicación, quiero que algunas funciones solo sean visibles si el usuario ingresó el nombre de usuario y la contraseña con ciertos derechos (administrador). Dado que las bases de datos y los nombres de usuario y sus derechos pueden cambiar, ¿cómo puedo verificar qué permisos/derechos tiene un usuario del servidor microsoft sql?microsoft sql server: verificar los permisos propios de los usuarios
Respuesta
Puede verificar el derecho del usuario actual en ciertos elementos seleccionables usando [sys.fn_mypermissions][1]
, que devuelve todos los permisos en el asegurable. También puede verificar un permiso específico con HAS_PERMS_BY_NAME
. P.ej. puede comprobar si hay CONTROL SERVER
permiso que implica un administrador se registra en:
SELECT HAS_PERMS_BY_NAME(null, null, 'CONTROL SERVER');
Gracias, eso es todo. Ahora puedo verificar, por ejemplo, si el usuario tiene la inserción directamente en una determinada base de datos: SELECCIONAR HAS_PERMS_BY_NAME ('databasename', 'DATABASE', 'INSERT') AS Expr1. Y también verifique otros permisos según el enlace de documentación que incluyó. –
No estoy completamente seguro de que entiendo su definición del problema, sin embargo suponiendo que hago .....
Yo sugeriría que se crea una función de base de datos SQL Server que se puede añadir a los usuarios de las aplicaciones pertinentes a, quizás a través de una membresía grupal mantenida dentro de la Aplicación (o un Grupo de Dominio de Windows). Puede usar el grupo para asignación de roles para administrar de forma independiente la membresía del usuario, desde la administración de los permisos relevantes hasta los elementos asegurables dentro de la base de datos a través del Rol.
De esta manera, solo necesita comprobar que una aplicación El usuario es miembro de la aplicación o grupo de ventanas correspondiente, sin la necesidad de consultar la configuración de seguridad de SQL Server.
Desde una perspectiva de diseño, todavía no veo por qué necesita "verificar" los permisos. Los permisos se otorgan mediante la membresía al Rol apropiado, a la cual valida la autenticación de usuario que tiene en su lugar. Simplemente cree un Rol con los derechos de "administrador" requeridos y un Rol con los derechos de usuario requeridos. A continuación, agregue/asigne los usuarios a los roles relevantes. Entonces no necesitaría verificar/validar los permisos porque el hecho de que el usuario pueda iniciar sesión con las credenciales correctas cumple esta función. –
La forma más sencilla de hacer esto es mediante la función IS_MEMBER, que comprueba wether el usuario está en el db_owner/grupo. La función realizará una comprobación en el nivel de la base de datos. Si necesita verificar en el nivel del servidor, puede usar la función IS_SRVROLEMEMBER. Ambos están disponibles desde el servidor sql 2005.
- 1. Creando sus propios permisos
- 2. Scripting SQL Server permisos
- 3. ¿Hay alguna manera de ver los propios permisos svn?
- 4. Microsoft SQL Server 2008 - Fechas
- 5. Node.js y Microsoft SQL Server
- 6. ¿Cómo calcula OPENCV los valores propios y los vectores propios?
- 7. establece permisos en los usuarios mysql con comodín?
- 8. Conversión de Microsoft SQL Server a MySQL
- 9. Los permisos de archivo no heredan los permisos de directorio
- 10. Cómo controlar lo que los usuarios pueden descifrar SQL Server Cifrado de clave simétrica
- 11. SQL Server: Permisos en la tabla
- 12. Grupos de usuarios y permisos
- 13. Microsoft SQL Server correo electrónico validación
- 14. Comprobar los permisos del archivo
- 15. Conexión a Microsoft SQL Server con Clojure
- 16. C# - MySQL vs Microsoft SQL Server
- 17. ¿Cuánto espacio ocupa una vista en Microsoft SQL Server?
- 18. ¿Cómo ejecutar un archivo SQL de 3GB (Microsoft SQL Server)?
- 19. c lea los permisos de un archivo
- 20. Lectura de datos de Microsoft SQL Server en R
- 21. ¿Cómo verificar una base de datos de SQL Server CE para los índices?
- 22. ¿Cómo lidiar con los permisos de los usuarios cuando se trata con usuarios del sistema de administración y usuarios de sitios web frontales?
- 23. Eliminar todos los permisos de directorio
- 24. ¿Qué problemas de seguridad aparecen cuando los usuarios pueden cargar sus propios archivos?
- 25. CouchDB: La restricción de los usuarios solamente replicar sus propios documentos
- 26. ¿Existe alguna herramienta de informe que permita a los usuarios crear sus propios informes?
- 27. GDB examine los permisos de memoria
- 28. C# WinForms Gestión de usuarios/permisos
- 29. CanCan - Cómo permitir que los usuarios actualicen y eliminen solo sus propios objetos
- 30. Identificación de objetos no utilizados en Microsoft SQL Server 2005
¿Puede aclarar qué tipo de funcionalidad debería ser visible según el nombre de usuario // contraseña? ¿Almacena el nombre de usuario y la contraseña en su base de datos, o quiere decir que es un nombre de usuario/contraseña en la carpeta de seguridad del servidor sql? Parece que desea implementar sus propios niveles de seguridad o un indicador en su tabla de usuario: Usuario {Nombre de usuario, Contraseña, isAdmin}, luego en su aplicación, cuando inician sesión, puede verificar si es un administrador. Si es así, la funcionalidad extra, si no, ocúltela. Además, si tiene muchos niveles diferentes de acceso, considere usar una tabla separada – Prescott
No i no hay funcionalidad adicional. Para ponerlo en términos simples. Imagine que hay n grupos de usuarios. El primero solo puede consultar su servidor. El segundo puede consultar y realizar declaraciones de inserción. El tercero también puede crear vistas ... y así sucesivamente. De hecho, solo quiero saber qué puede hacer el usuario actual en la base de datos. –
Por cierto. no te obsesiones con los grupos No necesitan organizarse en grupos. Solo usuarios múltiples con diferentes permisos. Solo quiero desactivar la funcionalidad en la aplicación, que el actual dbuser no puede usar porque no tiene el permiso necesario en la base de datos. –