Você está na página 1de 15

ADMINISTRANDO LA SEGURIDAD EN SQL

SERVER
S
O
T
A
D
ROLE
E
D
E
S DE
S
A
B
L SE
E
D
S
RVID
E
L
O
OR
R
INTEGRANTES:

CASIANO BAUTISTA JAZMIN DEL MILAGRO


CHINGUEL TINEO SEGUNDO FLORENTINO
GUEVARA ZAVALETA NOHELI ELIZABETH
RELZ TLLUME JUDITH LILIBETH
TENORIO CERNA GIANMARCO

AUTENTIFICACIN DE
USUARIOS
ACCESO A LOS RECURSOS

CREACIN DE USUARIOS
Un usuario es una entidad de seguridad
de la base de datos.Los inicios de
sesin deben estar asignados a un
usuario de base de datos para poder
conectarse a una base de datos

CREATE USER user_name


[ { { FOR | FROM }
{
LOGIN login_name
| CERTIFICATE cert_name
| ASYMMETRIC KEY asym_key_name
}
| WITHOUT LOGIN
]
[ WITH DEFAULT_SCHEMA = schema_name ]

user_name
LOGIN login_name
CERTIFICATE cert_name
ASYMMETRIC KEY asym_key_name
WITH DEFAULT_SCHEMA =schema_name
WITHOUT LOGIN

1.-Crear un usuario de base de datos


En el siguiente ejemplo, primero se crea un inicio de sesin de servidor
denominado AbolrousHazem con una contrasea y, a continuacin, se crea el
usuario de base de datos AbolrousHazem correspondiente
en AdventureWorks2008R2.

EJEMPLOS

CREATE LOGIN AbolrousHazem


WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';
USE AdventureWorks2008R2;
CREATE USER AbolrousHazem FOR LOGIN AbolrousHazem;
GO
2. Crear un usuario de base de datos con un esquema

predeterminado
En el siguiente ejemplo, primero se crea un inicio de sesin de servidor
denominado WanidaBenshoof con una contrasea y, a continuacin, se crea el
usuario de base de datos Wanida correspondiente con el esquema
predeterminado Marketing.
CREATE LOGIN WanidaBenshoof
WITH PASSWORD = '8fdKJl3$nlNv3049jsKK';
USE AdventureWorks2008R2;
CREATE USER Wanida FOR LOGIN WanidaBenshoof
WITH DEFAULT_SCHEMA = Marketing;
GO

3.. Crear un usuario de base de datos a partir de un certificado


En el siguiente ejemplo, se crea el usuario de base de datos JinghaoLiu desde el
certificado CarnationProduction50.
USE AdventureWorks2008R2;
CREATE CERTIFICATE CarnationProduction50
WITH SUBJECT = 'Carnation Production Facility Supervisors',
EXPIRY_DATE = '11/11/2011';
GO
CREATE USER JinghaoLiu FOR CERTIFICATE CarnationProduction50;
GO

CREACIN DE LOGIN
Crea un inicio de sesin del
Motor de base de datos para
SQL Server y Windows Azure
SQL Database

login_name

PASSWORD ='password'

PASSWORD =hashed_password

HASHED

MUST_CHANGE

CREDENTIAL =credential_name

SID = sid

CREATE LOGIN login_name { WITH <option_list1> |


FROM <sources> }

<option_list1> ::=
PASSWORD = { 'password' | hashed_password
HASHED } [ MUST_CHANGE ]
[ , <option_list2> [ ,... ] ]

<option_list2> ::=
SID = sid
| DEFAULT_DATABASE = database
| DEFAULT_LANGUAGE = language
| CHECK_EXPIRATION = { ON | OFF}
| CHECK_POLICY = { ON | OFF}
| CREDENTIAL = credential_name

<sources> ::=
WINDOWS [ WITH <windows_options>[ ,... ] ]
| CERTIFICATE certname
| ASYMMETRIC KEY asym_key_name

<windows_options> ::=
DEFAULT_DATABASE = database
| DEFAULT_LANGUAGE = language

A.Crear un inicio de sesin con una contrasea

EJEMPLOS

El ejemplo siguiente crea un inicio de sesin para un usuario determinado y le


asigna una contrasea.
CREATE LOGIN <login_name> WITH PASSWORD =
'<enterStrongPasswordHere>';
B.Crear un inicio de sesin con una contrasea
El ejemplo siguiente crea un inicio de sesin para un usuario determinado y le
asigna una contrasea. La opcin MUST_CHANGE exige a los usuarios que
cambien la contrasea la primera vez que se conecten al servidor.
CREATE LOGIN <login_name> WITH PASSWORD =
'<enterStrongPasswordHere>' MUST_CHANGE;
GO

D.Crear un inicio de sesin desde un certificado


En el ejemplo siguiente se crea el inicio de sesin de un usuario determinado a
partir de un certificado de master.
USE MASTER;
CREATE CERTIFICATE <certificateName>
WITH SUBJECT = '<login_name> certificate in master database',
EXPIRY_DATE = '12/05/2025';
GO

C.Crear un inicio de sesin asignado a una credencial

CREATE LOGIN <login_name> FROM CERTIFICATE <certificateName>;

El ejemplo siguiente crea el inicio de sesin para un usuario determinado,

GO

utilizando el de usuario. Este inicio de sesin se asigna a la credencial.


CREATE LOGIN <login_name> WITH PASSWORD =
'<enterStrongPasswordHere>',
CREDENTIAL = <credentialName>;
GO

E.Crear un inicio de sesin desde una cuenta de dominio de Windows


El ejemplo siguiente crea un inicio de sesin a partir de una cuenta de dominio de
Windows.
CREATE LOGIN [<domainName>\<login_name>] FROM WINDOWS;
GO

ROLES DEL SERVIDOR


SQL Server proporciona roles de nivel de servidor para ayudarle a administrar los permisos de un servidor.
Estos roles son entidades de seguridad que agrupan otras entidades de seguridad.
Los roles de nivel de servidor se aplican a todo el servidor en lo que respecta a su mbito de permisos.
Los roles fijos de servidor se proporcionan por comodidad y compatibilidad con versiones anteriores. Siempre que sea posible,
asigne permisos ms especficos.
SQL Server proporciona nueve roles fijos de servidor. Los permisos que se conceden a los roles fijos de servidor no se pueden
modificar.

A partir de SQL Server 2012, puede crear roles de servidor definidos por el usuario y agregarles permisos de nivel de servidor.

Puede agregar entidades de seguridad a nivel de servidor (inicios de sesin de SQL Server, cuentas de Windows y grupos de
Windows) a los roles de nivel de servidor.
Cada miembro de un rol fijo de servidor puede agregar otros inicios de sesin a ese mismo rol. Los miembros de roles de servidor
definidos por el usuario no pueden agregar otras entidades de seguridad de servidor al rol.

ROLES FIJOS DE NIVEL DE

DESCRIPCION

SERVIDOR
Sysadmin

Los miembros del rol fijo de servidor sysadmin pueden realizar cualquier actividad en el servidor.

Serveradmin

Los miembros del rol fijo de servidor serveradmin pueden cambiar las opciones de configuracin

Securityadmin

del servidor y apagarlo.


Los miembros del rol fijo de servidor securityadmin administran los inicios de sesin y sus
propiedades.

Administran los permisos de servidor GRANT, DENY y REVOKE.

Tambin pueden administrar los permisos de nivel de base de datos GRANT, DENY y REVOKE si
tienen acceso a una base de datos.

Asimismo, pueden restablecer las contraseas para los inicios de sesin de SQL Server.

Processadmin

Los miembros del rol fijo de servidor processadmin pueden finalizar los procesos que se ejecuten

Setupadmin

en una instancia de SQL Server.


Los miembros del rol fijo de servidor setupadmin pueden agregar y quitar servidores vinculados
mediante instrucciones Transact-SQL.(Se necesita la pertenencia a sysadmin cuando se utiliza

Bulkadmin

Management Studio).
Los miembros del rol fijo de servidor bulkadmin pueden ejecutar la instruccin BULK INSERT.

Diskadmin

El rol fijo de servidor diskadmin se usa para administrar archivos de disco.

dbcreator

Los miembros del rol fijo de servidor dbcreator pueden crear, modificar, quitar y restaurar cualquier

Public

base de datos.
Cada inicio de sesin de SQL Server pertenece al rol de servidor public.Cuando a una entidad de
seguridad de servidor no se le han concedido ni denegado permisos especficos para un objeto
protegible, el usuario hereda los permisos concedidos al rol public para ese objeto.

ROLES DE BASE DE DATOS


Para administrar con facilidad los permisos en las bases de datos, SQL Server proporciona varios roles, que son las entidades de
seguridad que agrupan a otras entidades de seguridad.
Son como los grupos del sistema operativo Microsoft Windows. Los roles de nivel de base de datos se aplican a toda la base de datos
en lo que respecta a su mbito de permisos.
Existen dos tipos de roles de nivel de base de datos en SQL Server: los roles fijos de base de datos, que estn predefinidos en la base
de datos, y los roles flexibles de base de datos, que pueden crearse.
Los roles fijos de base de datos se definen en el nivel de base de datos y existen en cada una de ellas.
Los miembros de los roles de base de datos db_owner y db_securityadmin pueden administrar la pertenencia a roles fijos de base
de datos.

Sin embargo, solo los miembros del rol de base de datos db_ownerpueden agregar miembros al rol fijo de base de
datos db_owner.

Tambin hay algunos roles fijos de base de datos con fines especiales en la base de datos msdb.

ROLES DE NIVEL DE BASE DE DATOS


db_owner

DESCRIPCION
Los miembros del rol fijo de base de datosdb_ownerpueden realizar todas las
actividades de configuracin y mantenimiento en la base de datos y tambin pueden

db_securityadmin

eliminar la base de datos.


Los miembros del rol fijo de base de datosdb_securityadminpueden modificar la
pertenencia a roles y administrar permisos.Si se agregan entidades de seguridad a este
rol, podra habilitarse un aumento de privilegios no deseado

db_accessadmin

Los miembros del rol fijo de base de datosdb_accessadminpueden agregar o quitar


el acceso a la base de datos para inicios de sesin de Windows, grupos de Windows
e inicios de sesin de SQL Server

db_backupoperator

Los miembros del rol fijo de base de datosdb_backupoperatorpueden crear copias de


seguridad de la base de datos.

db_ddladmin

Los miembros del rol fijo de base de datosdb_ddladminpueden ejecutar cualquier


comando del lenguaje de definicin de datos (DDL) en una base de datos.

db_datawriter

Los miembros del rol fijo de base de datosdb_datawriterpueden agregar, eliminar o


cambiar datos en todas las tablas de usuario.

db_datareader

Los miembros del rol fijo de base de datosdb_datareaderpueden leer todos los datos de
todas las tablas de usuario.

db_denydatawriter

Los miembros del rol fijo de base de datosdb_denydatawriterno pueden agregar,


modificar ni eliminar datos de tablas de usuario de una base de datos.

db_denydatareader

Los miembros del rol fijo de base de datosdb_denydatareaderno pueden leer datos de
las tablas de usuario dentro de una base de datos.

GRANT
Crear prueba del usuario

Crear tablas y Permisos

USE TestDB;

Ahora vamos a crear un esquema, un par de mesas, y vamos a conceder a la


posibilidad de seleccionar en contra de la primera tabla.

GO

CREATE SCHEMA Test;

CREATE ROLE TestRole;

GO

GO

CREATE TABLE Test.TestTable (TableID int);

CREATE USER TestUser WITHOUT LOGIN;

GO

GO

GRANT SELECT ON OBJECT::Test.TestTable TO TestRole;

EXEC

sp_addrolemember

@membername = 'TestUser';
GO

@rolename

'TestRole',

GO
CREATE TABLE Test.TestTable2 (TableID int);
GO

PRUEBA DE CONSULTAS
Una vez hecho esto, vamos a usar dos " test harnesses " para poner a prueba la
capacidad del usuario para acceder a las tablas en cuestin. Tenga en cuenta que
con los permisos actuales, el usuario slo debe ser capaz de emitir un SELECT en
contra de la primera tabla.
-- Test Harness to verify how permissions work for Test.TestTable.
EXECUTE AS USER = 'TestUser';
GO
SELECT * FROM Test.TestTable;
GO
REVERT;
GO
-- Test Harness to verify how permissions work for Test.TestTable2.
EXECUTE AS USER = 'TestUser';
GO
-- This should fail initially, as there is no permission for this table
SELECT * FROM Test.TestTable2;
GO
REVERT;
GO

PERMISOS
---Consulta para ver los permisos aplicables
SELECT dp.class_desc, s.name AS 'Schema', o.name AS 'Object', dp.permission_name,
dp.state_desc, prin.[name] AS 'User'
FROM sys.database_permissions dp
JOIN sys.database_principals prin
ON dp.grantee_principal_id = prin.principal_id
JOIN sys.objects o
ON dp.major_id = o.object_id
JOIN sys.schemas s
ON o.schema_id = s.schema_id
WHERE LEFT(o.name, 9) = 'TestTable'
AND dp.class_desc = 'OBJECT_OR_COLUMN'
UNION ALL
SELECT dp.class_desc, s.name AS 'Schema', '-----' AS 'Object', dp.permission_name,
dp.state_desc, prin.[name] AS 'User'
FROM sys.database_permissions dp
JOIN sys.database_principals prin
ON dp.grantee_principal_id = prin.principal_id
JOIN sys.schemas s
ON dp.major_id = s.schema_id
WHERE dp.class_desc = 'SCHEMA';

REMOKE
REVOKE deshace un permiso, ya sea un GRANT o DENY. Si emite el siguiente
REVOKE y luego comprueba los permisos, se le nota que la concesin que estaba
presente para Test.Table1. Despus de emitir la orden de revocacin, vuelva a
ejecutar las consultas del arns de pruebas anteriores en contra de esa mesa y vers
que el usuario no puede consultar la tabla por ms tiempo.
-- Deshacer el permiso utilizando REVOKE;
REVOKE SELECT ON OBJECT::Test.TestTable FROM TestRole;
Recuerde, REVOKE no cancela una subvencin. No bloquea una subvencin. Se
elimina un permiso en el nivel especificado a la entidad de seguridad (usuario o
rol) especificado. Es por eso que decimos que deshace un permiso.

DENY
Denegar el acceso bloques. DENY triunfa sobre otro acceso. Si un usuario tiene tanto un GRANT y un DENY sobre un objeto dado,
por cualquier medio, DENY tendr efecto. Por ejemplo, consideremos el caso de un SELECT GRANT en el esquema de prueba.
Esto dara a la capacidad de emitir un SELECT contra cualquier tabla o vista en el esquema de prueba. Intenta simplemente
aplicando este permiso, vuelva a comprobar el permiso y, a continuacin, las pruebas de acceso del usuario al tanto Test.TestTable y
Test.TestTable2. Usted ver el usuario puede ahora emitir una consulta SELECT contra ambas tablas.
A veces, si usted busca permisos explcitos contra una tabla o un procedimiento almacenado, usted no lo vea. Sin embargo, el
usuario puede ejecutar el SELECT o EXECUTE respectivamente. Si este es el caso, entonces el permiso est en una asegurable que
contiene el objeto. Eso es lo que estamos haciendo aqu. El esquema de prueba contiene las tablas TestTable y TestTable2. As que si
un usuario tiene permisos SELECT contra el esquema de prueba, tambin tiene el permiso SELECT en las tablas y vistas en el
esquema de prueba.

-- Permiso a nivel de esquema


GRANT SELECT ON SCHEMA::Test TO TestRole;
GO
Ahora vamos a aplicar un negar. En este caso estoy aplicando
una denegar explcitamente al usuario de prueba en vez de ir a
travs de un papel. Y yo slo estoy aplicarlo al objeto
Test.TestTable. Ahora volver a ejecutar las consultas del arns
de prueba. Vers se neg el acceso. Sin embargo, todava se
puede consultar Test.TestTable2. No hay un niegan aplicar
contra ella.
-- Especifica DENY y bloqueara el GRANT
DENY SELECT ON OBJECT::Test.TestTable TO TestUser;
Y si vuelve a ejecutar el script permisos, ver todos los
permisos concedidos, para incluir el negar.

A
R

I
C

S
A

Você também pode gostar