Ich habe ein Schema in SQL Azure erstellt und einer Datenbankrolle die folgenden Berechtigungen erteilt:
CREATE ROLE myrole AUTHORIZATION dbo;
EXEC sp_addrolemember 'myrole', 'myuser';
CREATE SCHEMA myschema AUTHORIZATION dbo;
GRANT ALTER, CONTROL, DELETE, EXECUTE, INSERT, REFERENCES, SELECT, UPDATE, VIEW
DEFINITION ON SCHEMA::myschema TO myrole;
GRANT CREATE TABLE, CREATE PROCEDURE, CREATE FUNCTION, CREATE VIEW TO myrole;
Über die oben definierten Berechtigungen myuser
kann ein eigenes Schema erstellt / gelöscht werden. Um das Problem zu lösen, habe ich die ALTER ANY SCHEMA-Berechtigung verwendet. Diese Berechtigung verweigert dem Benutzer jedoch auch das Erstellen / Löschen von Tabellen.
Welche Berechtigungen sind erforderlich, damit der Benutzer innerhalb seines eigenen Schemas etwas tun kann, das Schema selbst jedoch nicht erstellen oder löschen kann?
quelle
Da das neue Schema die Berechtigung "dbo" hat, kann der Benutzer indirekt auf alle Datenbankobjekte zugreifen, deren Eigentümer das Schema dbo ist.
Beispiel:
Dies ist die korrekte Funktionsweise des SQL Server-Moduls. Berechtigungen dringen mit derselben Berechtigung in andere Schemata ein. Um diesen Zugriff einzuschränken, gibt es hier eine Option für die Schemaerstellung:
quelle