You are on page 1of 8

Autorizacin y permisos en SQL Server

Principio de los privilegios mnimos


Desarrollar una aplicacin utilizando un enfoque basado en cuenta de usuario de
privilegios mnimos (LUA) constituye una parte importante de una estrategia de
defensa exhaustiva contra las amenazas a la seguridad. El enfoque LUA garantiza
que los usuarios siguen el principio de los privilegios mnimos y siempre inician
sesin con cuentas de usuario limitadas. Las tareas administrativas se realizan
utilizando roles fijos del servidor y el uso del rol fijo del servidor sysadmin es muy
restringido.
Cuando conceda permisos a usuarios de base de datos, siga siempre el principio
de los privilegios mnimos. Otorgue a usuarios y roles los mnimos permisos
necesarios para que puedan realizar una tarea concreta.
Permisos basados en roles
Otorgar permisos a roles en lugar de a usuarios simplifica la administracin de la
seguridad. Los conjuntos de permisos asignados a roles los heredan todos los
miembros del rol. Es ms fcil agregar o quitar usuarios de un rol que volver a
crear conjuntos de permisos distintos para cada usuario. Las roles se pueden
anidar. Sin embargo, la existencia de demasiados niveles de anidamiento puede
reducir el rendimiento. Tambin puede agregar usuarios a roles fijos de bases de
datos para simplificar los permisos de asignacin.
Puede conceder permisos en el nivel de esquema. Los usuarios heredan
automticamente los permisos en todos los objetos nuevos creados en el
esquema; no es necesario otorgar permisos cuando se crean objetos nuevos.
Instrucciones de permiso
En la siguiente tabla se describen las tres instrucciones de permiso de TransactSQL.
Instruccin
de permiso

Descripcin

GRANT

Concede un permiso.

REVOKE

Revoca un permiso. Este es el estado predeterminado de un


objeto nuevo. Un permiso revocado a un usuario o rol se puede
heredar de otros grupos o roles a los que est asignada la
entidad de seguridad.

DENY

DENY revoca un permiso de manera que no pueda ser


heredado. DENY tiene prioridad sobre todos los permisos, pero
no se aplica a propietarios de objeto o miembros de sysadmin.
Si deniega permisos a un objeto en el rol public, se los deniega
igualmente a todos los usuarios y roles excepto a los
propietarios del objeto y a los miembros de sysadmin.
La instruccin GRANT puede asignar permisos a un grupo o rol que puede
ser heredada por los usuarios de la base de datos. No obstante, la
instruccin DENY tiene prioridad sobre el resto de las instrucciones de
permiso. Por ello, un usuario al que se le ha denegado un permiso no
puede heredarlo de otro rol

Creacin de usuarios y asignacin de privilegios


Lo primero que debemos de hacer es crear el "Login" con su
contrasea.
CREATE LOGIN UserTest
WITH PASSWORD = '123456';
go
Luego crearemos el usuario y lo relacionamos con el login creado anteriormente.
USE [CursoSql]
GO
CREATE USER UserTest FOR LOGIN UserTest
GO
Ya con esto podemos entrar a la base de datos, pero no vamos a tener acceso a
ninguna de las tablas.

Para poder ver los objetos de la base de datos, debemos de asignar privilegios a
los usuarios.
Para dar algn privilegio al usuario de la base de datos podemos usar GRANT
seguido del privilegio.
Algunos privilegios que podemos usar con GRANT son:

SELECT

INSERT

UPDATE

VIEW

EXCEUTE

Ejemplo:
GRANT SELECT ON [dbo].[Producto] TO UserTest
Luego de asignar el usuario ya podemos ver el objeto con permiso.

Copia de seguridad de la base de datos


Usar Transact-SQL

Para crear una copia de seguridad completa de la base de datos


1. Ejecute la instruccin BACKUP DATABASE para crear la copia de
seguridad de base de datos completa, especificando:
o

El nombre de la base de datos de la que se va a realizar una copia


de seguridad.

El dispositivo de copia de seguridad en el que se escribe la copia de


seguridad de base de datos completa.

La sintaxis bsica de Transact-SQL para crear una copia de seguridad de


base de datos completa es:
BACKUP DATABASE database
TO backup_device [ ,...n ]
[ WITH with_options [ ,...o ] ] ;
Opcin
database
backup_device
[ ,...n ]

Descripcin
Es la base de datos cuya copia de seguridad se desea hacer.
Especifica una lista de 1 a 64 dispositivos de copia de
seguridad que se pueden utilizar en la operacin de copia de
seguridad.Puede especificar un dispositivo fsico de copia de
seguridad o puede especificar un dispositivo de copia de
seguridad lgico correspondiente, si ya se defini.Para
especificar un dispositivo de copia de seguridad fsico, use la
opcin DISK o TAPE:
{ DISK | TAPE } =physical_backup_device_name
Para obtener ms informacin, vea Dispositivos de copia de
seguridad (SQL Server).
WITH
Si lo desea, puede especificar una o varias opciones, o.Para
with_options [
obtener informacin sobre algunas de las opciones de WITH
,...o ]
bsicas, vea el paso 2.
2. Opcionalmente, especifique una o varias opciones de WITH.A continuacin
se describen algunas de las opciones de WITH bsicas. Para obtener
informacin acerca de las opciones de WITH, vea BACKUP (TransactSQL).
o

Opciones de WITH bsicas del conjunto de copia de seguridad:


{ COMPRESSION | NO_COMPRESSION }

En SQL Server 2008 Enterprise y versiones posteriores nicamente,


especifica si la compresin de copia de seguridad se realiza en esta copia
de seguridad, lo que invalida la configuracin predeterminada del servidor.
ENCRYPTION (ALGORITHM, SERVER CERTIFICATE |
ASYMMETRIC KEY)
En SQL Server 2014 o versiones posteriores nicamente, especifica el
algoritmo de cifrado que se va a utilizar y el certificado o la clave asimtrica
que se va a usar para proteger el cifrado.
DESCRIPTION = { 'text' | @text_variable }
Especifica el texto sin formato que describe el conjunto de copia de
seguridad. La cadena puede tener un mximo de 255 caracteres.
NAME = { backup_set_name | @backup_set_name_var }
Especifica el nombre del conjunto de copia de seguridad.Los nombres
pueden tener un mximo de 128 caracteres.Si no se especifica NAME, est
en blanco.
o

Opciones de WITH bsicas del conjunto de copia de seguridad:


De forma predeterminada, BACKUP DATABASE anexa la copia de
seguridad a un conjunto de medios existente, conservando los
conjuntos de copia de seguridad existentes. Para especificar esto
explcitamente, utilice la opcin NOINIT.Para obtener informacin
sobre cmo anexar datos a conjuntos de copia de seguridad
existentes, vea Conjuntos de medios, familias de medios y conjuntos
de copias de seguridad (SQL Server).
Opcionalmente, para dar formato a los medios de copia de
seguridad, utilice la opcin FORMAT:
FORMAT [ , MEDIANAME= { media_name |
@media_name_variable } ] [ , MEDIADESCRIPTION = { text |
@text_variable } ]

Utilice la clusula FORMAT cuando emplee los medios por primera vez o
cuando desee sobrescribir todos los datos existentes. De manera opcional,
puede asignar a los nuevos medios un nombre y una descripcin.

Ejemplos (Transact-SQL)
A.Realizar la copia de seguridad en un dispositivo de disco
En el ejemplo siguiente se realiza una copia de seguridad completa de la base de
datos AdventureWorks2012 en el disco y se usa FORMAT para crear un conjunto
de medios nuevo.
Transact-SQL
USE AdventureWorks2012;
GO
BACKUP DATABASE AdventureWorks2012
TO DISK = 'Z:\SQLServerBackups\AdventureWorks2012.Bak'
WITH FORMAT,
MEDIANAME = 'Z_SQLServerBackups',
NAME = 'Full Backup of AdventureWorks2012';
GO
B.Realizar la copia de seguridad en un dispositivo de cinta
En este ejemplo se realiza una copia de seguridad en cinta de la base de datos
AdventureWorks2012 completa y se anexa a las copias de seguridad anteriores.
Transact-SQL
USE AdventureWorks2012;
GO
BACKUP DATABASE AdventureWorks2012
TO TAPE = '\\.\Tape0'
WITH NOINIT,
NAME = 'Full Backup of AdventureWorks2012';
GO
C.Realizar la copia de seguridad en un dispositivo de cinta lgico
En este ejemplo, se crea un dispositivo de copia de seguridad lgico para una
unidad de cinta.A continuacin, se realiza una copia de seguridad completa de la
base de datos AdventureWorks2012 en dicho dispositivo.
Transact-SQL
-- Create a logical backup device,
-- AdventureWorks2012_Bak_Tape, for tape device \\.\tape0.
USE master;
GO
EXEC sp_addumpdevice 'tape', 'AdventureWorks2012_Bak_Tape', '\\.\tape0';
USE AdventureWorks2012;
GO
BACKUP DATABASE AdventureWorks2012
TO AdventureWorks2012_Bak_Tape
WITH FORMAT,

MEDIANAME = 'AdventureWorks2012_Bak_Tape',
MEDIADESCRIPTION = '\\.\tape0',
NAME = 'Full Backup of AdventureWorks2012';
GO
Roles y usuarios de base de datos
Para trabajar con objetos de base de datos, se deben asignar inicios de sesin a
cuentas de usuario de base de datos. Estos usuarios de base de datos se podrn
agregar entonces a roles de base de datos y heredarn los conjuntos de permisos
asociados con estos roles. Se pueden conceder todos los permisos.
A la hora de disear la seguridad para la aplicacin, tambin debe tener en cuenta
el rol public, la cuenta de usuario dbo y la cuenta guest.
Rol public
El rol public est contenido en todas las bases de datos, incluidas las bases de
datos del sistema. No se puede eliminar y no se pueden agregar ni quitar usuarios
de ella. Todos los usuarios y los dems roles heredan los permisos concedidos al
rol public, ya que pertenecen de forma predeterminada al rol public. Por tanto, solo
debe conceder al rol public los permisos que desee que tengan todos los usuarios.
Cuenta de usuario dbo
dbo , o propietario de base de datos, es una cuenta de usuario con permisos
implcitos para realizar todas las actividades en la base de datos. Los miembros
del rol fijo del servidor sysadmin se asignan automticamente a dbo.
La cuenta de usuario dbo se confunde a menudo con el rol fijo de base de datos
db_owner. El mbito de db_owner es una base de datos y el mbito de sysadmin
es el servidor completo. La pertenencia al rol db_owner no proporciona privilegios
de usuario dbo.
Cuenta de usuario guest
Despus de que un usuario se haya autenticado y se le haya permitido iniciar
sesin en una instancia de SQL Server, debe existir una cuenta de usuario
independiente en cada base de datos a la que tenga acceso el usuario. Si se exige
una cuenta de usuario en cada base de datos, se impide que los usuarios se
conecten a una instancia de SQL Server y puedan tener acceso a todas las bases
de datos de un servidor. La existencia de una cuenta de usuario guest en la base
de datos evita este requisito, ya que permite que un inicio de sesin sin cuenta de
usuario de base de datos tenga acceso a una base de datos.
La cuenta guest es una cuenta integrada en todas las versiones de SQL Server.
De forma predeterminada, est deshabilitada en las bases de datos nuevas. Si
est habilitada, se puede deshabilitar mediante la revocacin de su permiso

CONNECT, que se lleva a cabo con la ejecucin de la instruccin REVOKE


CONNECT FROM GUEST de Transact-SQL.
https://msdn.microsoft.com/es-es/library/bb669065%28v=vs.110%29.aspx
https://msdn.microsoft.com/es-es/library/ms187510%28v=sql.120%29.aspx
http://sqldevtools.blogspot.mx/2014/08/crear-usuarios-y-asiganarprivilegios.html
https://msdn.microsoft.com/es-es/library/bb669084%28v=vs.110%29.aspx

You might also like