lunes, 6 de febrero de 2017

Administrar seguridad en SQL Server mediante sintaxis



Hola!
En esta oportunidad vamos a crear usuarios, roles y otorgar permisos mediante Transact SQL. Es momento de poner manos a la obra. Aprendamos!

Para crear un usuario, debemos realizar los siguientes pasos:
-  Crear el usuario asignándole una cuenta de inicio de sesión.
-  Asignar el usuario a una base de datos y darle permiso de acceso a ella
- Asociar el usuario a un rol la cuál contiene unos determinados permisos para acceder a la base de datos.
  • Cuentas de inicio de sesión
Cuando un usuario se conecta a un servidor, lo hace a través de una cuenta facilitada por el administrador de la base de datos. Esta cuenta tiene una serie de permisos que el administrador da, estos permisos pueden ser de restricción a determinadas tablas, o por ejemplo que un usuario pueda solo insertar, o seleccionar en determinadas tablas.
Existen dos formas de entrar a la base de datos, bien mediante el usuario de windows o mediante el usuario de la base de datos.
Mediante el usuario de windows, facilitamos al equipo desde el que nos conectamos, los recursos del servidor de sql server, pudiendo incluso bloquear el equipo desde el que se conecta el usuario.
  • Acceso a una base de datos
Para que un usuario tenga acceso a una base de datos, después de crearle una cuenta de inicio de sesión, y asociársela a una base de datos, hemos de darle permisos para que pueda acceder a esa base de datos. Posteriormente, mediante roles le indicaremos que es lo que puede hacer en esa base de datos.
Puede tener permisos para una base de datos o para todo el servidor.
  • Roles
Agrupamos usuarios y sobre estos usuarios daremos permisos a ese grupo de usuarios.
Los roles, se usan para establecer los permisos que un grupo de usuario tendrá sobre una determinada base de datos.
Una vez creado el usuario, y asignada la base de datos, podemos asociar este usuario al rol que queramos para controlar los permisos que tiene sobre la base de datos asignada.
Hay una serie de roles y usuarios predefinidos en la base de datos.
  • Crear un usuario
Para crear un usuario y poder usarlo, hemos de establecer todos los pasos descritos en los puntos anteriores.
Estos pasos, los realizaremos todos en el analizador de consultas:

1. Creamos el inicio de sesión del usuario.

SP_ADDLOGGIN
Crea una cuenta de inicio para un usuario y lo asigna a una base de datos.

Sintaxis:

SP_ADDLOGIN ‘Usuario’, ‘Contraseña’, ‘Base de datos’

EXEC SP_ADDLOGIN 'Pepe', 'Pepe','Hospital_BD'
Creado nuevo inicio de sesión.

SP_DROPLOGIN
Borra una cuenta de inicio de un usuario, siempre y cuando el usuario no esté conectado y no tenga permisos sobre ninguna base de datos (si los tiene hemos de revocarlos antes de borrar la cuenta de inicio y el usuario)

Sintaxis:
SP_DROPLOGIN 'Usuario'

EXEC SP_DROPLOGIN 'Pepe'
Inicio de sesión quitado.

Nota: Si el usuario tiene permisos asignados sobre una base de datos, debemos quitar primero esos permisos antes de borrarlo, ya que sino dará error al intentarlo.


2. Asignamos permisos al usuario sobre la base de datos que queramos. Para ello usaremos el procedimiento almacenado de sistema SP_GRANTDBACCESS.

SP_GRANTDBACCESS.

Sintaxis:

SP_GRANTDBACCESS ‘Usuario’

SP_GRANTDBACCESS 'Pepe'
Concedido a la base de datos acceso a 'Pepe'.

Si queremos revocar estos permisos al usuario, usaremos el procedimiento almacenado de sistema SP_REVOKEDBACCESS.

SP_REVOKEDBACCESS

Sintaxis:

SP_REVOKEDBACCESS ‘Usuario’

Es decir en este caso sería:

EXEC SP_REVOKEDBACCESS 'Pepe'
El usuario se ha quitado de la base de datos actual.


4. Probamos el usuario creado entrando en el analizador de consulta con su login y password

Una vez en el analizador de consultas, solo tendremos acceso a la base de datos asociada al usuario y las bases de datos de ejemplo.


5. Asociar el usuario al rol que queramos.

Crear roles (grupos de usuarios) y establecer sus permisos.

Para ello crearemos el rol mediante el procedimiento almacenado de sistema SP_ADDROLE

EXEC SP_ADDROLE 'Becarios'
Agregado el nuevo rol.


Una vez realizado esto, vemos que en el apartado “Roles” de la base de datos, está el rol creado, si hacemos doble click sobre ella, vemos que no tiene usuarios asignados:


Para establecer los permisos del rol que hemos creado, usaremos el comando GRANT

Sintaxis:

GRANT Permisos
ON Tabla / Objeto
To Rol / Usuarios

Es decir en este caso sería:

GRANT INSERT, UPDATE, DELETE
ON Emp
To Becarios

También podemos establecer permisos directamente sobre los usuarios, poniendo el nombre de estos en lugar del Rol.

GRANT INSERT, UPDATE, DELETE
ON Emp
To Pepe, Pepa

Para denegar permisos sería mediante el comando DENY.

Sintaxis:

DENY Permisos
On Tabla
To Rol

DENY SELECT
ON Emp
TO Becarios

Para revocar permisos ya asignados mediante GRANT, usaremos el comando REVOKE 

REVOKE Permisos
On Tabla
To Rol

REVOKE UPDATE
On Emp
to Becarios

  • Asociar usuarios a un Rol.
Para asociar un usuario a una función usaremos el procedimiento almacenado de sistema SP_ADDROLEMEBER

Sintaxis:

SP_ADDROLEMEMBER ‘Rol’, ‘Usuario’

Es decir, en este caso sería:

EXEC SP_ADDROLEMEMBER 'Becarios', 'Pepe'
'Pepe' agregado al Rol'Becarios'.

Una vez realizados estos pasos, si entramos en el analizador de consultas con el usuario Pepe, si intentamos realizar una consulta no permitida, nos advertirá mediante un mensaje que no podemos realizar la consulta:

Select * from emp

Servidor: mensaje 229, nivel 14, estado 5, línea 1
Permiso SELECT denegado para el objeto 'EMP', base de datos 'Hospital_BD', propietario 'dbo'.

Para eliminar un usuario de un Rol, usaremos el procedimiento almacenado de sistema SP_DROPROLEMEMBER

Sintaxis:

SP_DROPROLEMEMBER ‘Rol’, ‘Usuario’

Es decir en este caso sería:

EXEC SP_DROPROLEMEMBER 'Becarios', 'Pepe'
'Pepe' quitado del Rol 'Becarios'.

Una vez tengamos la función sin usuarios asignados, podremos borrarla, para borrarla usaremos el procedimiento almacenado de sistema SP_DROPROLE

Sintaxis:

SP_DROPROLE ‘Rol’

En este caso sería:

EXEC SP_DROPROLE 'Becarios'
Rol quitado.

SP_ADDSRVROLEMEMBER : Añade a un rol de sistema el usuario que queramos.

Sintaxis: 

SP_ADDSRVROLEMEMBER 'Usuario','Rol'

Damos permiso al usuario para modificar y crear bases de datos.

EXEC SP_ADDSRVROLEMEMBER 'Pepe','DbCreator'

SP_DROPSRVROLEMEMBER : Quita a un usuario del rol del sistema que seleccionemos.

Sintaxis: 

SP_ADDSRVROLEMEMBER 'Usuario','Rol'

Quitamos del Rol al usuario ‘Pepe’

EXEC SP_ADDSRVROLEMEMBER 'Pepe','DbCreator'
'PEPE' quitado del Rol 'DBCREATOR'.

Otro método que tenemos para poder ofrecer permisos es con la opción With Grant Option.

Con esta opción después de la sentencia de conceder derechos, permito al usuario al que estoy concediendo permisos pueda conceder permisos a su vez sobre los privilegios que se le han otorgado.

Sintaxis:

Grant Select, Insert, Update, Delete
On Tabla / Vista
To Usuario / Funcion
With Grant Option

Ejemplo:

Un administrador concede permisos a Pepe para poder hacer selecciones sobre la tabla Emp.

Usuario -> Administrador

Grant Select
On Emp
To Pepe
With Grant Option

Este usuario podrá a su vez conceder permisos a otro usuario sobre sus privilegios, es decir, sobre la tabla emp y solamente con Select.

Usuario -> Pepe

Grant Select
On Emp
To Luisa

La cadena termina aquí, ya que Pepe no ha concedido permisos a Luisa para que pueda conceder permisos a su vez.
Si el administrador revocase los permisos Select a Pepe, estos permisos se revocan a su vez sobre el usuario Luisa, ya que no tiene permisos de nadie más para ver la Tabla.
Otra opción es que el usuario Pepe conceda permisos a Luisa pero solamente sobre unos determinados campos.

Grant Select (Emp_no, Apellido, Fecha_alt, Dept_no)
On Emp
To Luisa

Esto se puede utilizar también pero sería más conveniente utilizar una Vista.



Espero haber ayudado en algo. Hasta la próxima oportunidad!










  

No hay comentarios:

Publicar un comentario

       

Etiquetas

Academy (23) Accediendo a datos con ADO .NET (30) Acceso a la red (30) Algoritmo (34) Algoritmos en JAVA (2) Ampliación de clases (2) APRENDA A PROGRAMAR COMO SI ESTUVIERA EN PRIMERO - Autores : IKER AGUINAGA (3) APRENDA A PROGRAMAR COMO SI ESTUVIERA EN PRIMERO - Autores : IKER AGUINAGA (10) Aprendiendo a desarrollar en Windows 8 (5) Aprendiendo UML en 24 Horas (Autor : Joseph Schmuller ) (30) Arquitectura (29) Arquitectura del Computador (3) Arquitectura del Computador - Historia de la informática (1) Asignación de direcciones IP (2) Aspectos fundamentales de bases de datos (5) Auditoría de la dirección (2) Auditoría de Sistemas (3) Auditoría Informática - Un enfoque práctico - Mario G . Piattini y Emilio del Peso (7) Avanzado (23) Base de Datos (66) Básico (23) Bios (29) Business Productivity Online Suite - BPOS (3) Capa de Red (22) Capa de Transporte (16) Capítulo 1 - Documentos HTML5 (6) Capítulo 10. API Web Storage (2) Capítulo 11. API IndexedDB (4) Capítulo 12. API File (1) Capítulo 2. Estilos CSS y modelos de caja (7) Capítulo 3. Propiedades CSS3 (4) Capítulo 4. Javascript (6) Capítulo 5. Video y audio (6) Capítulo 6. Formularios y API Forms (8) Capítulo 7. API Canvas (5) Capítulo 8. API Drag and Drop (2) Capítulo 9. API Geolocation (2) CCNA1 v5.0 (179) CCNA1 v6.0 (23) CCNA2 v5.0 (26) CCNA3 v5.0 (25) CCNA4 v5.0 (23) CD-ROM (3) Chapter 1 How does Xamarin.Forms fit in? (7) Chapter 2 Anatomy of an app (5) Cisco (281) Cloud Computing (3) CNNA v5.0 Routing & Switching (200) CNNA v6.0 Routing & Switching (2) Codigo (2) Computadora (32) Configuración (29) Configuración de un sistema operativo de red (21) Control (29) Creación de tipos de datos y tablas (3) Creación y Administración de bases de datos (3) Creando la Interface de la Aplicación Windows (50) Creating Mobile Apps with Xamarin.Forms (13) Cuenta (29) Curso (32) Curso Aprendiendo a Programar (25) Datos (3) Desarrollando en Windows 8 - AVANZADO (2) Desarrollando en Windows 8 - BÁSICO (3) Desarrollando en Windows 8 - INTERMEDIO (2) Desarrollo (2) Desarrollo .Net (21) Desarrollo avanzado de Windows Store Apps usando C# (1) Desarrollo basado en conceptos de Ingeniería de Software para Visual Studio (2) DESARROLLO DE APLICACIONES WINDOWS CON MICROSOFT .NET (37) DESARROLLO DE APLICACIONES WINDOWS CON MICROSOFT .NET (Autor: Luis Dueñas Huaroto) (29) Desarrollo en Microsoft Visual Studio (44) Desarrollo en Microsoft Visual Studio - AVANZADO (15) Desarrollo en Microsoft Visual Studio - BÁSICO (14) Desarrollo en Microsoft Visual Studio - INTERMEDIO (18) Desarrollo en Windows Phone 8 (13) Diagnostico (4) Diagrama (3) Diagramas de actividades (2) Diagramas de colaboraciones (2) Diagramas de secuencias (2) Digital (2) Diplomado (2) Disco (29) Disco Duro (4) Diseño de aplicaciones de Windows 8 en HTML 5 (7) Dispositivos Electrónicos (11) Doctorado (2) Ejemplos (3) Ejemplos de algoritmos (27) El camino hacia el CSS3 (3) El diseño web flexible (6) El elemento de diseño Canvas (3) El enfoque de los sistemas (3) El flujo de un programa (2) El gran libro de HTML5 - CSS3 y Javascript - Autor: Juan Diego Gauchat (55) El principio de organicidad (7) Electrónica (2) Elementos de un sistema (5) Empresas (2) Entrada y salida (4) Entropía y neguentropía (7) Estrategia (2) Estructura de un programa Java (12) Estructuras de almacenamiento (10) Estructuras de control (6) Estructuras de las tablas en SQL Server (2) Estructuras fundamentales de los datos (2) Ethernet (21) Evolución y Familias de los Microprocesadores (15) Exámen (23) Exploración de la red (23) Extensión de clases (4) Facebook (4) Familia Intel (15) Forefront (8) Función (3) Funciones de una red (12) Funciones de una red informática (1) Fundamentos de C# para absolutos principiantes (17) Fundamentos de programación en Java (50) Generaciones de la computadora (5) Gestión (3) Gestión de riesgos - Auditoría de Sistemas (1) GONZALO MARTÍNEZ (1) Grupos Facebook (1) Harvard (29) Historia de las computadoras (11) HTML5 y CSS3 - Autor: Christophe Aubry (99) HTML5 y CSS3 aplicadal texto (7) HTML5 y CSS3 para los formularios (15) Imágenes (2) Implementación de Windows 7 (11) Información (31) Informática (29) Ingeniería (4) Instalar (29) Inteligencia (2) Inteligencia de Negocios con SQL Server (3) Intermedio (23) Internet (29) Internet Explorer 9 (3) Introducción a ASP.NET 5 (8) Introducción a Java (7) Introducción a jQuery (8) Introducción a la Auditoría de Sistemas (2) Introducción a la teoría general de sistemas (Oscar Johansen Bertoglio) (39) Introducción a Networking (2) Introducción a Window Forms (5) Introducción al acceso a datos con ADO .NET (9) Investigación de Operaciones (12) Java (52) Jump Start de consultas en las bases de datos de Microsoft SQL Server 2012 (8) La definición de un Sistema (6) La evolución del HTML y del CSS (3) La nueva sintaxis HTML5 (12) LA QUINTA DISCIPLINA en la práctica (Autor : Peter Senge) (28) Las animaciones en CSS3 (5) Las transformaciones CSS3 (11) Las transiciones con CSS3 (8) Licenciamiento Microsoft (3) Local Area Network (LAN) - Red de Area Local (2) Lógico (2) Los elementos de la estructura en html5 (9) Los elementos multimedia: audio y vídeo (2) Los estilos de caja en CSS3 (13) Los nuevos selectores de CSS3 (6) Maestría (2) Mantenimiento de Mouse y Teclado (2) Manual de Microsoft SQL Server - Full Transact SQL (67) Manual de soporte técnico para escuelas sobre windows 7 (42) Marco Teorico de Investigación de Operaciones (6) Medios de Almacenamiento (11) Medios de Networking (2) Mejorando la Interface de las Aplicaciones Windows (26) Memoria Tipos y Clases (5) Método (2) Metodología (1) Microsoft (324) Microsoft Lync 2010 (7) Microsoft Silverlight 4.0 (2) Microsoft Virtual Academy (356) Modelo (2) Modelo OSI y TCP-IP (2) Modelos con poco grado de dificultad de Programación Lineal - Investigación de Operaciones (13) Modelos con razonable grado de dificultad de Programación Lineal - Investigación de Operaciones (10) Modelos de desafio de Programación Lineal - Investigación de Operaciones (5) Modelos difíciles de Programación Lineal - Investigación de Operaciones (5) Modelos Fáciles de Programación Lineal - Investigación de Operaciones (13) Modelos lineales con solver (3) Modulo (23) Movimiento (2) Mozilla (29) MS SQL Server (76) MS Virtualization para Profesionales VMware - Gestión (3) MS Virtualization para Profesionales VMware- Plataforma (4) MVA (263) Negocio (2) Nivel Avanzado Desarrollo .Net (6) Nivel Básico Desarrollo .Net (11) Nivel Intermedio Desarrollo .Net (8) Normas técnicas peruanas y su evolución - Auditoría de Sistemas (1) Nube Privada - Avanzado (6) Nube Privada - Básico (6) Nube Privada - Intermedio (6) Office 365 (3) Optimización de Escritorio (10) Optimización de Escritorio - Avanzado (4) Optimización de Escritorio - Básico (3) Optimización de Escritorio - Intermedio (3) ORACLE 10g - ADMINISTRACIÓN Y ANÁLISIS (3) Oracle 10g y el Grid Computing (3) Organización aleatoria y secuencial (1) Partes principales de la Mainboard (12) Perceptron (2) Perfil (2) Periféricos de Entrada / Salida (15) Pesi (2) PHP y MySQL - Manual de aprendizaje para crear un sitio web - Autor : Olivier ROLLET (79) Plan (2) Plataforma (29) PMBOK (24) PMBOK - Guía de los fundamentos para la dirección de proyectos (24) PMBOK - INFLUENCIA DE LA ORGANIZACIÓN Y CICLO DE VIDA DEL PROYECTO (6) PMBOK - Introducción (11) PMBOK - PROCESOS DE LA DIRECCIÓN DE PROYECTOS (5) Prevención - Herramientas e Instrumentos de Medida (9) Principios básicos de enrutamiento y switching (153) Proceso (2) Proceso de auditoría de sistemas informáticos (2) Programación en Android - Auor : Salvador Gómez Oliver (46) Programación paso a paso de C# - Autor : Nacho Cabanes (16) Protocolos y comunicaciones de red (17) Proyecto (2) Qué es un sistema (4) Red de Área Local Inalámbrica (WLAN) (4) Redes (30) Redes inalámbricas - WIRELESS - Conocimiento general (15) Redes neuronales (2) Redes y Comunicaciones (45) Reparación de Fuentes - UPS - Estabilizadores (10) Reparación de Impresoras (9) Reparación de Monitores (16) Router (29) Seguridad en la Nube (3) Seminario (23) Server (24) Sharepoint 2010 - Nivel Básico (6) Sharepoint 2010 - Niveles Avanzados (18) Sharepoint 2010 - Niveles Avanzados - Básico (8) Sharepoint 2010 - Niveles Avanzados - Intermedio (9) Sinergia y recursividad (4) Sistema (33) Sistema de Cableado Estructurado (9) Software (30) SOLUCIÓN GRÁFICA DE MODELOS DE PROGRAMACIÓN LINEALES - INVOPE (8) Soporte a Infraestructura (3) SQL (38) SQL Azure - Introducción (3) Subsistemas de control (4) Tablas (4) Tarjeta Principal del Sistema (10) Tarjetas de Interfaces (7) Tecnología (31) Tecnologías LAN (1) TEORÍA GENERAL DE SISTEMAS (1) Tic (2) Tipo (2) TML5 y CSS3 - Autor: Christophe Aubry (12) Trabajando con el Formulario (7) Un diseño HTML5/CSS3: dConstruct 2011 (3) Un diseño HTML5/CSS3: FlipThru (2) Un diseño HTML5/CSS3: The Cat Template (2) Usando Controles Windows Forms (12) Usando Herramientas de Datos de Visual Studio (6) Ventas (2) Virtualización Hyper - V Nivel Básico (5) Virtualización Hyper - V Nivel Intermedio (5) What’s New in Windows 8.1 Security (4) Window (29) Windows 7 Segunda Fase - AVANZADO (4) Windows 7 Segunda Fase - BÁSICO (6) Windows 7 Segunda Fase - INTERMEDIO (4) Windows 8 - Vista Previa (4) Windows 8.1 To Go (2) Windows Azure (3) Windows Phone 7 (2) Windows Server 2008 R2 (3) Windows Server 2012 - Gestión y Automatización (3) Windows Server 2012 R2 Essentials (7) Windows Server 2012: Almacenamiento (5) Windows Server 2012: Identidad y Acceso (4) Windows Server 2012: Revisión Técnica (7) Xamarin (1)

Páginas vistas en total según Google