Tôi xin lỗi nếu câu hỏi này lặp lại câu hỏi khác đã được hỏi. Tôi đã tìm kiếm trong nhiều giờ và không tìm thấy cái nào phù hợp với hoàn cảnh của tôi.
Kết quả mong muốn
Một người dùng sử dụng xác thực SQL đã thực thi quyền đối với Database1 trên Server1 (ví dụ mặc định) và đó là nó. Người dùng thực thi một thủ tục được lưu trữ, như một phần của quy trình, truy cập Cơ sở dữ liệu 2 trên Server1 \ Instance2. Tôi muốn nó được an toàn và đơn giản (cả hai đều quan trọng).
Thêm thông tin
Thông tin đăng nhập windows của tôi có quyền truy cập vào cả hai phiên bản (trên cùng một máy chủ). Do đó, tôi có thể thực hiện các thủ tục được lưu trữ dưới đăng nhập của mình mà không gặp khó khăn. Tuy nhiên, tôi không muốn cung cấp cho người dùng mức độ truy cập của mình. Tôi cũng cần sử dụng thông tin đăng nhập SQL vì người dùng sẽ không ở trên miền.
Những gì tôi muốn là cung cấp cho thủ tục được lưu trữ mức độ truy cập của tôi chỉ cho thủ tục đó. Vì tôi là một sysadmin, điều đó sẽ cung cấp cho người dùng mọi thứ họ cần cho thủ tục đó. Nếu tôi làm được điều đó, có lẽ tôi sẽ tạo một tài khoản chỉ với mục đích đó thay vì sử dụng tài khoản của tôi, nhưng bằng cách nào đó nó sẽ an toàn vì tôi kiểm soát những gì mà Proc lưu trữ làm.
Tôi đã thử đặt câu lệnh "VỚI EXECUTE AS" trong kho lưu trữ của mình nhưng tôi không thể lấy nó để lấy thông tin đăng nhập windows của mình. Khi tôi đặt nó vào, tôi sẽ gặp lỗi sau khi biên dịch Proc được lưu trữ:
Không thể thực thi dưới dạng 'domain \ jdoe' của người dùng, vì nó không tồn tại hoặc bạn không có quyền.
Người dùng là sysadmin trên cả hai máy chủ, như tôi đã nói, vì vậy tôi không chắc nó cần thêm gì nữa.
Tôi đã xem xét như sau:
- TRUSTED - Tôi thà không để lộ cơ sở dữ liệu của mình và điều này có vẻ đáng sợ
- Máy chủ được liên kết - Tôi không muốn cấp thêm quyền. Tôi không tin tưởng cơ sở dữ liệu khác có quyền truy cập vào cơ sở dữ liệu của mình và tôi không tin cơ sở dữ liệu của mình có quyền truy cập vào tất cả các cơ sở dữ liệu khác.
- Chứng chỉ - Điều này có vẻ phức tạp và khó khăn. Trừ khi tôi có thể tìm ra một cách rất đơn giản để làm điều này và duy trì nó, tôi không chắc nó có giá trị rắc rối không.
- Quyền sở hữu xích - Một lần nữa, đáng sợ. Có vẻ như điều này gây ra nhiều vấn đề bảo mật hơn khi mục tiêu của tôi là ngăn chặn các vấn đề bảo mật.
- Người dùng được nhân đôi - Tôi thậm chí đã tạo cùng một người dùng (rõ ràng là SID khác nhau) trên phiên bản máy chủ khác và cung cấp cho nó cùng một mật khẩu. Không đi.
Tôi cảm thấy như tôi đang thiếu một cái gì đó rõ ràng nhưng tôi không chắc nó là gì. Vì tôi đã đập đầu vào tường cả ngày về điều này, có lẽ tôi đã quá gần để nhìn thấy nó. Tôi sẽ rất trân trọng điều đó nếu ai đó ở đây có thể giúp tôi hoặc chỉ cho tôi đi đúng hướng. Tôi sẽ nói rằng tôi đã đọc rất nhiều bài báo MSDN (cậu bé tôi ghét chúng - dường như chúng không bao giờ nói với tôi những gì tôi muốn biết). Những gì tôi thực sự muốn là một hướng dẫn đơn giản, dễ làm theo hướng dẫn tôi làm thế nào để làm điều này. Nói tóm lại, ngay cả một chỉ dẫn chung về hướng tôi cần đi cũng sẽ hữu ích.
