Czy w programie SQL Server (2008) można przyznać uprawnienia do tworzenia tabel w ramach schematu?


14

Pracując z zabezpieczeniami w SQL Server 2008, próbuję przyznać użytkownikowi uprawnienia CREATE TABLE, ale tylko w ramach określonego schematu. Czy uprawnienie CREATE TABLE ma zastosowanie tylko na poziomie bazy danych?

Czy mogę ograniczyć użytkownika do tworzenia tabeli tylko w ramach schematu?

Próbowałem:

USE [databasename]
GRANT CONTROL ON Schema :: [schemaname] TO [username]
GO

i

USE [databasename]
GRANT ALTER ON Schema :: [schemaname] TO [username]
GO

Ale użytkownik nadal nie może utworzyć tabeli w schemacie docelowym. Dopiero po uruchomieniu tego, użytkownik może utworzyć tabelę:

USE [databasename]
GRANT CREATE TABLE to [username]
GO

DOTACJA

Uprawnienia do bazy danych GRANT

Odpowiedzi:


12

Według pomocy SQL Server 2008:

Wymaga uprawnienia CREATE TABLE w bazie danych i ZMIEŃ uprawnienie do schematu, w którym tworzona jest tabela.

Właśnie przetestowałem to, używając EXECUTE AS w testowej bazie danych, i byłem w stanie utworzyć tabelę w schemacie, który miał uprawnienie ALTER, ale nie w schemacie dbo (dla którego nie przyznałem uprawnienia ALTER). Tak długo, jak długo nie stałeś się zbyt liberalny ze zgodą ALTER na schematy, tak powinno być.


1
Tak, teraz to widzę. Mimo że użytkownik ma uprawnienie „UTWÓRZ TABELĘ” na poziomie bazy danych, nie jest w stanie tworzyć tabel w schematach, w których nie udzielono żadnych innych uprawnień.
RyanW

Zdecydowanie niefortunnie wydaje się, że musisz udzielić uprawnienia „UTWÓRZ TABELĘ” tylko po to, aby włączyć ten scenariusz.
MgSam

6

Udzielenie uprawnienia do tworzenia tabel konkretnemu użytkownikowi w określonej bazie danych wymaga nie tylko uprawnień do TWORZENIA TABELI, ale także ZMIEŃ uprawnienia do schematu, np. DBO.

USE [databasename]
GRANT ALTER ON Schema :: [schemaname] TO [username]
GRANT CREATE TABLE TO [username]
GO

Na przykład;

USE db_mydatabase
GRANT ALTER ON Schema :: DBO TO user_mydatabase
GRANT CREATE TABLE TO user_mydatabase
GO

1

Nie ma nic na temat takiego pozwolenia w dokumentacji uprawnień mających zastosowanie do schematów w 2008 R2: http://msdn.microsoft.com/en-us/library/ms187940.aspx

Dlatego doszłbym do wniosku: nie, nie możesz, tworzenie tabeli może być kontrolowane tylko na poziomie bazy danych (wydaje się, że dotyczy to wszystkich zabezpieczeń).


Dzięki, zgadzam się, nie ma nic na tym poziomie. Jak zauważył @ db2, uprawnienie na poziomie bazy danych „UTWÓRZ TABELĘ” nie jest wystarczające, aby zezwolić użytkownikowi na tworzenie tabeli, jeśli nie ma on innych uprawnień do schematu.
RyanW

0

Oczywiście że możesz. Jeśli masz użytkownika 1, zdefiniuj również jego domyślny schemat jako użytkownik 1. Nadaj temu użytkownikowi uprawnienia CREATE TABLE w bazie danych. Otóż ​​to. użytkownik1 może tworzyć tabele tylko w ramach schematu użytkownik1.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.