Restringir accesos

Necesito saber como restrinjo los accesos a unas tablas en sql server por ejemplo que juan solo pueda leer y modificar la tabla prestamos de libros.

1 Respuesta

Respuesta
1
Checa el siguiente segmento de ayuda de los libros en línea de sql server:
GRANT
Crea una entrada en el sistema de seguridad que permite a un usuario de la base de datos actual trabajar con datos de la base de datos actual o ejecutar instrucciones Transact-SQL específicas.
Sintaxis
Permisos de la instrucción:
GRANT { ALL | statement [ ,...n ] }
TO security_account [ ,...n ]
Permisos del objeto:
GRANT
{ ALL [ PRIVILEGES ] | permission [ ,...n ] }
{
[ ( column [ ,...n ] ) ] ON { table | view }
| ON { table | view } [ ( column [ ,...n ] ) ]
| ON { stored_procedure | extended_procedure }
| ON { user_defined_function }
}
TO security_account [ ,...n ]
[ WITH GRANT OPTION ]
[ AS { group | role } ]
Argumentos
ALL
Especifica que se conceden todos los permisos aplicables. En el caso de permisos de instrucciones, sólo los miembros de la función sysadmin pueden utilizar ALL. Para los permisos de los objetos, pueden usar ALL los miembros de las funciones sysadmin y db_owner, así como los propietarios de los objetos de base de datos.
Statement
Es la instrucción para la que se concede el permiso. La lista de instrucciones puede contener:
Create database
CREATE DEFAULT
CREATE FUNCTION
CREATE PROCEDURE
Create rule
Create table
Create view
Backup database
Backup log
n
Marcador de posición que indica que el elemento se puede repetir en una lista separada por comas.
TO
Especifica la lista de cuentas de seguridad.
security_account
Es la cuenta de seguridad a la que se aplican los permisos. La cuenta de seguridad puede ser de:
¿Usuario Microsoft® SQL Server?.
Función de SQL Server.
Usuario Microsoft Windows NT®.
Grupo de Windows NT.
Cuando se concede un permiso a una cuenta de usuario de SQL Server o de usuario de Windows NT, la cuenta especificada en security_account es la única afectada. Si se concede un permiso a una función de SQL Server o a un grupo de Windows NT, se concederá a todos los usuarios de la base de datos actual que sean miembros de ese grupo o función. Si hay conflictos de permisos entre un grupo o función y sus miembros, prevalece el permiso más restrictivo (DENY). La cuenta especificada en security_account debe existir en la base de datos actual y no es posible conceder permisos a un usuario, función o grupo de otra base de datos, salvo que ya se haya creado el usuario o se le haya dado acceso a la base de datos actual.
Con GRANT es posible utilizar dos cuentas de seguridad especiales. Los permisos concedidos a la función public se aplican a todos los usuarios de la base de datos. Los permisos concedidos al usuario guest se aplican a todos los usuarios que no disponen de una cuenta en la base de datos.
Al conceder permisos a un grupo local o global de Windows NT, especifique el nombre de dominio o de equipo en el que está definido el grupo, seguido de una barra diagonal inversa y del nombre del grupo. Sin embargo, para conceder permisos a un grupo local integrado de Windows NT, debe especificar BUILTIN en lugar del nombre de dominio o de equipo.
Privileges
Es una palabra clave opcional que se puede incluir para cumplir con SQL-92.
Permission
Se trata de un permiso de objeto que se concede. Cuando se conceden permisos sobre una tabla, una función de valores de tabla o una vista, la lista de permisos puede incluir uno o más de los siguientes permisos: SELECT, INSERT, DELETE, REFERENCES o UPDATE. Es posible suministrar una lista de columnas junto con los permisos SELECT y UPDATE. Si no se suministra una lista de columnas con los permisos SELECT y UPDATE, los permisos se aplican a todas las columnas de la tabla, vista o función de valores de tabla.
Los permisos que se conceden a objetos en un procedimiento almacenado sólo pueden incluir EXECUTE. Los permisos que se conceden a objetos en una función de valores escalares pueden incluir EXECUTE y REFERENCES.
Para tener acceso a una columna en una instrucción SELECT es necesario disponer de permiso para utilizar SELECT en esa columna. Para actualizar una columna mediante una instrucción UPDATE es necesario disponer de permiso para utilizar UPDATE en esa columna.
Para crear una restricción FOREIGN KEY que haga referencia a una tabla es necesario disponer de permiso para utilizar REFERENCES en esa tabla.
Para crear una FUNCTION o VIEW con la cláusula WITH SCHEMABINDING que haga referencia a un objeto es necesario disponer de permiso para utilizar REFERENCES en ese objeto.
Column
Es el nombre de la columna de la base de datos actual sobre la que se conceden los permisos.
Table
Es el nombre de la tabla de la base de datos actual sobre la que se conceden los permisos.
View
Es el nombre de la vista de la base de datos actual sobre la que se conceden los permisos.
stored_procedure
Es el nombre del procedimiento almacenado de la base de datos actual sobre el que se conceden los permisos.
extended_procedure
Es el nombre del procedimiento almacenado extendido sobre el que se conceden los permisos.
user_defined_function
Es el nombre de la función definida por el usuario sobre la que se conceden los permisos.
WITH GRANT OPTION
Especifica que se concede a security_account la capacidad de conceder el permiso de objeto especificado a otras cuentas de seguridad. La cláusula WITH GRANT OPTION sólo es válida con los permisos de objeto.
AS {group | role}
Especifica el nombre opcional de la cuenta de seguridad de la base de datos actual que tiene los permisos necesarios para ejecutar la instrucción GRANT. AS se utiliza cuando se conceden permisos sobre un objeto a un grupo o función, y es necesario que los permisos de objetos se concedan además a otros usuarios que no son miembros del grupo o función. Debido a que sólo un usuario, y no un grupo o función, puede ejecutar una instrucción GRANT, un miembro específico del grupo o función concederá los permisos del objeto bajo la autoridad del grupo o función.
Observaciones
Los permisos entre bases de datos diferentes no están permitidos. Sólo se deben conceder permisos a los usuarios de la base de datos actual y sobre objetos e instrucciones de la base de datos actual. Si un usuario necesita permisos para objetos de otra base de datos, cree la cuenta del usuario en la otra base de datos o conceda a la cuenta del usuario acceso a la otra base de datos y a la base de datos actual.
Nota Los procedimientos almacenados en el sistema son la excepción ya que los permisos EXECUTE ya están concedidos a la función public, lo que permite a cualquiera ejecutarlos. Sin embargo, después de su ejecución, los procedimientos almacenados del sistema comprueban la pertenencia del usuario a la función. Si el usuario no es miembro de la función fija de servidor o de base de datos que corresponda para ejecutar el procedimiento almacenado, éste no continuará.
Se puede utilizar la instrucción REVOQUE para retirar permisos concedidos y la instrucción DENY para evitar que un usuario obtenga permisos mediante la instrucción GRANT referida a su cuenta de usuario.
Un permiso concedido quita los permisos denegados o revocados en el nivel en el que se concede (usuario, grupo o función). Sin embargo, la denegación del mismo permiso en otro nivel, como el de un grupo o función que contenga al usuario, sí prevalece. Aunque sí se aplica la revocación del mismo permiso en otro nivel, ello no impide al usuario el acceso al objeto.
Si un usuario aplica una función de aplicación, el efecto de GRANT es nulo para los objetos a los que el usuario tenga acceso con la función de aplicación. Por ello, aunque es posible conceder a un usuario acceso a un objeto específico de la base de datos actual, si ese usuario utiliza una función de aplicación que no tiene acceso al objeto, él tampoco tendrá acceso mientras esté activada la función de aplicación.
El procedimiento almacenado del sistema sp_helprotect informa de los permisos sobre un objeto de base de datos o de un usuario.
Permisos
Los permisos GRANT dependen de los permisos de instrucción que se conceden y del objeto implicado en los permisos. Los miembros de la función sysadmin pueden conceder cualquier permiso en cualquier base de datos. Los propietarios de objetos pueden conceder permisos sobre los objetos que poseen. Los miembros de las funciones db_owner o db_securityadmin pueden conceder permisos en cualquier instrucción u objeto de su base de datos.
Las instrucciones que requieren permisos son las que agregan objetos a la base de datos o realizan actividades administrativas en ella. Cada instrucción que requiere permisos tiene un conjunto de funciones determinado que automáticamente tiene permiso para ejecutarla. Por ejemplo, de forma predeterminada tienen permiso sobre CREATE TABLE los miembros de las funciones sysadmin, db_owner y db_ddladmin. De forma predeterminada, tienen permisos para ejecutar la instrucción SELECT en una tabla las funciones sysadmin y db_owner, y también el propietario del objeto.
Algunas instrucciones Transact-SQL no se pueden conceder como permisos. La capacidad para ejecutarlas requiere la pertenencia a una función fija con permisos implícitos para ejecutar instrucciones especiales. Por ejemplo, para ejecutar la instrucción SHUTDOWN, hay que agregar el usuario como miembro de la función serveradmin.
Los miembros de las funciones fijas de servidor dbcreator, processadmin, securityadmin y serveradmin sólo tienen permiso para ejecutar estas instrucciones Transact-SQL.
Instrucción dbcreator processadmin securityadmin serveradmin bulkadmin
Alter database x
Create database x
BULK INSERT X
DBCC X (1)
DENY X (2)
GRANT X (2)
KILL X
Reconfigure x
Restore x
REVOKE X (2)
SHUTDOWN POR
(1) Para obtener más información, consulte la instrucción DBCC.
(2) Sólo se aplica a la instrucción CREATE DATABASE.
Nota Los miembros de las funciones fijas de servidor diskadmin y setupadmin no tienen permisos para ejecutar ninguna instrucción Transact-SQL y sólo pueden ejecutar determinados procedimientos almacenados del sistema. Los miembros de la función fija de servidor sysadmin, sin embargo, tienen permisos para ejecutar todas las instrucciones Transact-SQL.
Los miembros de las siguientes funciones fijas de base de datos tienen permisos para ejecutar las instrucciones Transact-SQL que se indican:
Instrucción
db_owner
db_datareader
db_datawriter
db_ddladmin db_backupoperator db_securityadmin
ALTER DATABASE X X
ALTER FUNCTION X X
ALTER PROCEDURE X X
ALTER TABLE X (1) X
ALTER TRIGGER X X
ALTER VIEW X (1) X
BACKUP X X
CHECKPOINT X X
CREATE DEFAULT X X
CREATE FUNCTION X X
CREATE INDEX X (1) X
CREATE PROCEDURE X X
CREATE RULE X X
CREATE TABLE X X
CREATE TRIGGER X (1) X
CREATE VIEW X X
DBCC X X (2)
DELETE X (1) X
DENY X X
DENY en objeto X
DROP X (1) X
EXECUTE X (1)
GRANT X X
GRANT en objeto X (1)
INSERT X (1) X
READTEXT X (1) X
REFERENCES X (1) X
RESTORE X
REVOKE X X
REVOKE en objeto X (1)
SELECT X (1) X
SETUSER X
TRUNCATE TABLE X (1) X
UPDATE X (1) X
UPDATE STATISTICS X (1)
UPDATETEXT X (1) X
WRITETEXT X (1) X
(1) El permiso se aplica también al propietario del objeto.
(2) Para obtener más información, consulte la instrucción DBCC.
Nota Los miembros de la función fija de base de datos db_accessadmin no tienen permisos para ejecutar ninguna instrucción Transact-SQL. Sólo pueden ejecutar determinados procedimientos almacenados.
Las instrucciones Transact-SQL que no requieren permisos para su ejecución (los permisos se conceden automáticamente a public) son las siguientes:
Begin transaction commit transaction
Print raiserror
Rollback transaction sabe transaction
SET
Para obtener más información acerca de los permisos necesarios para ejecutar los procedimientos almacenados del sistema, consulte el procedimiento correspondiente.
Ejemplos
A. Conceder permisos sobre instrucciones
En este ejemplo se conceden diversos permisos sobre instrucciones a los usuarios Mary y John, y al grupo de Windows NT Corporate\BobJ.
Grant create database, create table
TO Mary, John, [Corporate\BobJ]
B. Conceder permisos de objeto dentro de la jerarquía de permisos
En este ejemplo se muestra el orden preferente de los permisos. En primer lugar, se conceden permisos SELECT a la función public. A continuación se conceden permisos específicos a los usuarios Mary, John y Tom. De este modo, todos estos usuarios tienen permisos sobre la tabla authors.
USE pubs
GO
GRANT SELECT
ON authors
TO public
GO
GRANT INSERT, UPDATE, DELETE
ON authors
TO Mary, John, Tom
GO
C. Conceder permisos a una función de SQL Server
En este ejemplo se conceden permisos CREATE TABLE a todos los miembros de la función Accounting.
GRANT CREATE TABLE TO Accounting
D. Conceder permisos con la opción AS
La tabla Plan_Data pertenece al usuario Jean. Jean concede permisos SELECT, con la cláusula WITH GRANT OPTION, sobre Plan_Data a la función Accounting. El usuario Jill, miembro de Accounting, desea conceder permisos SELECT sobre la tabla Plan_Data al usuario Jack, que no es miembro de Accounting.
Como el permiso para conceder a otros usuarios permisos SELECT sobre la tabla Plan_Data se concedió a la función Accounting, y no explícitamente a Jill, Jill no puede conceder permisos sobre la tabla basándose en los permisos que ha recibido por ser miembro de la función Accounting. Jill debe utilizar la cláusula AS para asumir los permisos para conceder pertenecientes a la función Accounting.
/* User Jean */
GRANT SELECT ON Plan_Data TO Accounting WITH GRANT OPTION
/* User Jill */
GRANT SELECT ON Plan_Data TO Jack AS Accounting
Véase también
Conceder permisos
DENY
REVOKE
sp_addgroup
sp_addlogin
sp_adduser
sp_changegroup
sp_changedbowner
sp_dropgroup
sp_dropuser
sp_helpgroup
sp_helprotect
sp_helpuser
©1988-2000 Microsoft Corporation. Reservados todos los derechos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas