SQL Server - cấp quyền cho toàn bộ lược đồ so với đối tượng?


25

Tôi rất xanh khi nói đến thế giới quản lý quyền cơ sở dữ liệu trong SQL Sever.

Hãy giữ một ví dụ đơn giản.

Nói tài khoản 'admin' là chủ sở hữu của lược đồ A, B và C.

Có một tài khoản 'minion' khác mà bạn muốn có toàn quyền (cập nhật / xóa / chèn / chọn / thay đổi) trên bất kỳ đối tượng nào (bảng / chế độ xem) được tạo trong các lược đồ A, B và C.

Điều này có thể không? Hoặc bạn có phải thực thi một câu lệnh cấp mỗi lần bạn thêm một bảng / khung nhìn dưới các lược đồ này không? (có vẻ hơi ngớ ngẩn với tôi).

Câu trả lời:


36

Bạn có thể cấp GRANTphép lược đồ có hiệu lực cho mọi thứ hiện có và mọi thứ sẽ tồn tại trong lược đồ đó.

Cấp quyền Schema

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

Hơn nữa, nếu bạn muốn từ chối quyền trên một đối tượng nhất định trong lược đồ đó, bạn có thể làm.

Từ chối quyền

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

1
Cũng sử dụng dấu ngoặc vuông nếu lược đồ hoặc tên người dùng có các ký tự đặc biệt. ví dụ.... SCHEMA :: [schema] TO [company-name/joshua.duxbury]
Joshua Duxbury

Không hoạt động trong Azure, có ý tưởng nào tại sao không? (các lệnh hoạt động, nhưng SSMS xuất hiện và nói "bạn không phải là chủ sở hữu Db .. blah blah blah. Bạn có thể không lưu được bảng" và chắc chắn, bạn không thể (đã cấp Grant ALL cho cơ sở dữ liệu (chương trình cho phép 'Database', '<db name>', TheUserId, 'Tạo Bảng', và state_desc của 'CẤP') có một số ma thuật khác đó là cần thiết Hoặc là Azure chỉ có thể sử dụng bởi dbo?
Traderhut Games

13

Để đơn giản hóa hơn một chút, bạn có thể sử dụng các vai trò để thực hiện công việc mà bạn đang tìm kiếm.

Khi bạn gán quyền cho vai trò, bạn chỉ có thể thêm người dùng vào vai trò. Bằng cách này, bạn không phải quản lý quyền cho người dùng cá nhân. Người dùng kế thừa quyền được cấp cho vai trò.

Dưới đây là một ví dụ để giúp bạn bắt đầu:

 -- 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 
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.