Có cách nào để cấp quyền truy cập cho người dùng chỉ cho tất cả các chế độ xem không phải hệ thống của cơ sở dữ liệu không?


9

Trong SQL Server, tôi có một người dùng trong một cơ sở dữ liệu cụ thể và tôi đã được yêu cầu cấp cho họ quyền truy cập vào tất cả các chế độ xem phi hệ thống của cơ sở dữ liệu. Tôi tin rằng điều này có thể được thực hiện bằng cách chỉnh sửa các chế độ bảo mật của chế độ xem loại và cấp quyền chọn cho từng loại, nhưng có rất nhiều, nhiều chế độ xem. Có cách nào hiệu quả hơn để thực hiện điều này?

Câu trả lời:


8

Không cú pháp như

GRANT SELECT ON ALL::Views TO SomeUser 

Bạn có thể cấp GRANT SELECTphép trên các đối tượng riêng lẻ , lược đồ hoặc toàn bộ cơ sở dữ liệu nhưng không được lọc theo loại đối tượng để chỉ bao gồm Chế độ xem. Đối với loại nhiệm vụ adhoc này, tôi có thể tạo một vai trò mới được gọi ViewReader, thêm người dùng vào vai trò đó sau đó trong SSMS chạy

SELECT 'GRANT SELECT ON ' + 
          QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(name) + 
      ' TO ViewReader;'
FROM sys.views
WHERE is_ms_shipped = 0

để tạo một tập lệnh để chạy đến GRANTcác quyền cần thiết.


Cảm ơn bạn cho câu trả lời cực kỳ duyên dáng. Kịch bản hơi quá đầu tôi nên tôi sẽ đọc một chút trước khi thử thực hiện. Cảm ơn một lần nữa.
Christopher Garcia

1
@lush - Kịch bản chỉ cung cấp cho bạn một số lệnh để xem lại, sao chép, dán và chạy. Bạn có thể làm một cái gì đó chi tiết hơn để kết nối kết quả và EXECtôi sẽ không bận tâm cho một nhiệm vụ tắt.
Martin Smith

Tôi hiểu bây giờ, đây là một giải pháp hoàn hảo cho vấn đề này, cảm ơn!
Christopher Garcia

4

Tôi đã thực hiện một cách tiếp cận khác trong trường hợp của tôi. Đây là những gì tôi đã làm:

  1. Tạo một đăng nhập và ánh xạ nó đến một cơ sở dữ liệu.
  2. Đi đến cơ sở dữ liệu, tạo một lược đồ có tên là Public_View chẳng hạn. Chủ sở hữu của lược đồ này phải là cùng chủ sở hữu của các bảng mà các khung nhìn sẽ tham chiếu.
  3. Cấp quyền truy cập người dùng mới vào lược đồ mới.
  4. Tạo nhiều khung nhìn như bạn muốn trong lược đồ mới và người dùng mới sẽ có quyền truy cập vào chúng.

Điều tốt là người dùng mới sẽ không có quyền truy cập vào các bảng, thậm chí anh ta sẽ không thể nhìn thấy các bảng.

Tôi hy vọng nó sẽ giúp.


4
+1 Đối với tôi, điều tốt về giải pháp này đối với tôi là không cần phải gán quyền một cách rõ ràng khi các chế độ xem mới được tạo.
Martin Smith
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.