Tác nhân máy chủ SQL không quan sát thực thi trên mạng như là quyền của


7

Tôi có một vấn đề quyền tò mò. Một cái gì đó gần đây đã xảy ra khiến Công việc Đại lý SQL Server hiện tại được định cấu hình chạy như một Người dùng cụ thể ngừng hoạt động. Họ đã làm việc trước đây; họ hiện đang ném các lỗi cấp phép cơ bản (ví dụ: quyền CHỌN bị từ chối).

Đây là một trường hợp thử nghiệm cụ thể. Người dùng johndoesysadminvai trò cấp máy chủ . Truy vấn sau hoạt động tốt khi được chạy johndoetrong SQL Server Management Studio:

select * from TableA into TableB

Nhưng khi tôi đặt chính xác truy vấn đó vào Công việc Tác nhân Máy chủ SQL một bước, với bước đó được định cấu hình để chạy với tư cách người dùng johndoe, tôi gặp lỗi sau.

Được thực hiện như người dùng: johndoe. Quyền SELECT đã bị từ chối trên đối tượng 'TableA', cơ sở dữ liệu 'MyDatabase', lược đồ 'dbo'. [SQLSTATE 42000] (Lỗi 229). Bước thất bại.

Bất kỳ đề xuất về những gì có thể đã gây ra sự thay đổi dường như tự phát này?


Đề nghị hơi khó hiểu - johndoe có quyền / thành viên nhóm thích hợp msdbđể chạy các công việc Đại lý không?
Simon Righarts

Bạn có nhận được cùng một lỗi cho tất cả các Công việc Đại lý hoặc chỉ những công việc được định cấu hình để chạy như johndoe không? Tôi sẽ tạo một người dùng mới, thêm anh ta vào vai trò sysadmin và thử cùng một thử nghiệm. Ít nhất hãy cố gắng loại trừ tài khoản Dịch vụ đại lý SQL Server là thủ phạm có thể.
Craig Efrein

Theo dõi câu hỏi ban đầu của tôi ... Vấn đề đã biến mất một cách bí ẩn như nó xuất hiện. Tôi nghĩ rằng một cái gì đó đã được làm mới hoặc lưu lại, nhưng tôi không thể nói những gì.
dlh

Câu trả lời:


3

Bạn đã kiểm tra người dùng SQL nào đang thực sự chạy truy vấn chưa? Tùy thuộc vào cấp độ cho phép, Đại lý SQL có thể cho phép người dùng 'mạo danh' một tài khoản cấp cao hơn.

Tạo một công việc với bước T-SQL:

SELECT ORIGINAL_LOGIN(), SUSER_NAME(), USER_NAME();

Làm cho nó ghi nhật ký đầu ra vào một bảng hoặc tệp văn bản và xem lại người dùng nào thực sự đang chạy truy vấn cuối cùng. Nếu đó không phải là người dùng mà bạn nghĩ nó phải như vậy, thì bạn sẽ cần phải quay lại để tìm ra sự mạo danh đến từ đâu.

Tôi đã gặp vấn đề trên cơ sở dữ liệu CRM Dynamics bằng cách sử dụng các chế độ xem được lọc, trong đó người dùng CRM được chỉ định có thể thấy dữ liệu được lọc của họ. Nếu công việc đang sử dụng mạo danh tài khoản hệ thống, nó sẽ không trả lại dữ liệu vì tài khoản hệ thống không tồn tại với tư cách là người dùng CRM.


1

Được thực hiện như người dùng : johndoe

Bối cảnh EXECUETE AS là bối cảnh người dùng , không phải bối cảnh đăng nhập. Do đó, nó nằm trong các hạn chế của EXECUTE AS sandbox, xem phần Mở rộng mạo danh cơ sở dữ liệu bằng cách sử dụng EXECUTE AS :

khi mạo danh hiệu trưởng bằng cách sử dụng câu lệnh EXECUTE AS USER hoặc trong mô-đun phạm vi cơ sở dữ liệu bằng cách sử dụng mệnh đề EXECUTE AS, phạm vi mạo danh được giới hạn trong cơ sở dữ liệu theo mặc định.

Cụ thể, nó sẽ không kế thừa bất kỳ quyền thành viên nhóm máy chủ nào trừ khi cơ sở dữ liệu được đánh dấu là đáng tin cậy . Sự lựa chọn của bạn là một trong hai dấu ấn [MyDatabase]như đáng tin cậy (do đó làm cho bất kỳ thành viên db_owner của [MyDatabase]thành viên de-facto của sysadmin, với tất cả ý nghĩa) hoặc bạn có thể cấp quyền truy cập một cách rõ ràng để sử dụng [johndoe] trong [MyDatabase].

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.