SQL Server: ¿conceder permisos a un esquema completo frente a un objeto?


25

Soy muy ecológico cuando se trata del mundo de la administración de permisos de bases de datos en SQL Sever.

Mantengamos un ejemplo simple.

Digamos que la cuenta 'admin' es la propietaria de los esquemas A, B y C.

Hay otra cuenta 'minion' que desea tener todos los derechos (actualizar / eliminar / insertar / seleccionar / alterar) sobre cualquier objeto (tabla / vista) creado bajo los esquemas A, B y C.

es posible? ¿O tiene que ejecutar una declaración de concesión cada vez que agrega una tabla / vista bajo estos esquemas? (Me parece un poco tonto).

Respuestas:


36

Puede GRANTesquematizar los permisos que son efectivos para todo lo existente y todo lo que existirá en ese esquema.

Conceder permisos de esquema

GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA :: <schema> TO <user>;

Además de eso, si desea denegar permisos en un determinado objeto dentro de ese esquema, puede hacerlo.

Negar permisos de objeto

DENY INSERT ON OBJECT::<schema>.<object> TO <user>;

1
También use corchetes si el esquema o nombre de usuario tiene caracteres especiales. por ejemplo.... SCHEMA :: [schema] TO [company-name/joshua.duxbury]
Joshua Duxbury el

No funciona en Azure, ¿alguna idea de por qué? (los comandos funcionan, pero aparece SSMS y dice "usted no es el propietario de Db ... bla, bla, bla. Es posible que no pueda guardar la tabla" y, por supuesto, no puede (hizo un Grant ALL a la base de datos (muestra los permisos 'Base de datos', '<db name>', TheUserId, 'Create Table' y state_desc de 'GRANT') ¿Hay alguna otra magia que se necesita? ¿O Azure solo puede ser usado por el Dbo?
Traderhut Games

13

Para simplificar un poco más, puede usar roles para hacer el trabajo que está buscando.

Una vez que asigne permisos al rol, simplemente puede agregar usuarios al rol. De esta manera, no tiene que administrar permisos para usuarios individuales. Los usuarios heredan los permisos otorgados al rol.

A continuación se muestra un ejemplo para comenzar:

 -- Create the database role
CREATE ROLE TableSelector AUTHORIZATION [dbo]
GO
 ---- Grant access rights to a specific schema in the database
GRANT 
      SELECT, INSERT, UPDATE, DELETE, ALTER 

ON SCHEMA::dbo
      TO TableSelector 
GO

-- Add an existing user to the new role created 
EXEC sp_addrolemember 'TableSelector', 'MyDBUser'
GO

-- Revoke access rights on a schema from a role 
DENY ALTER  -- you can customize here ...
ON SCHEMA::dbo
      TO TableSelector 
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.