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 el propietario de los esquemas A, B y C.

Hay otra cuenta «minion» que desea tener todos los derechos (actualizar / eliminar / insert / select / alter) en cualquier objeto (tabla / vista) creado bajo los esquemas A, B y C.

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

Responder

Puedes GRANT permisos de esquema que son efectivos para todo lo que existe y todo lo que existirá en ese esquema.

Otorgar 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.

Denegar permisos de objeto

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

Comentarios

  • También use corchetes si el esquema o el nombre de usuario tiene caracteres especiales. Por ejemplo, .... SCHEMA :: [schema] TO [company-name/joshua.duxbury]
  • ¿No ' t funciona en Azure, alguna idea de por qué? (los comandos funcionan, pero SSMS aparece y dice " no eres el propietario de la base de datos … bla, bla, bla. Es posible que no puedas guardar la tabla " y, por supuesto, puedes ' t (concediste TODO a la base de datos (muestra los permisos ' Database ', ' < nombre de la base de datos > ', TheUserId, ' Crear tabla ' y state_desc de ' GRANT ') ¿Se necesita alguna otra magia? ¿O es Azure solo utilizable por Dbo?

Responder

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

Una vez que asigne permisos a la función, puede simplemente agregar usuarios a la función. 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 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *