Mam aplikację do wdrożenia w środowisku produkcyjnym, która korzysta z zabezpieczeń „systemu honoru”. Oznacza to, że wszyscy użytkownicy łączą się z bazą danych przy użyciu poświadczenia użytkownika / hasła SQL, a aplikacja sama zarządza uprawnieniami. Ta ostatnia część nie przeszkadza mi tak bardzo, jak fakt, że obiekt połączenia zawiera osadzone poświadczenia i można go swobodnie kopiować. Próbuję znaleźć sposób na ograniczenie połączeń do bardziej ograniczonego zestawu klientów. Oczywiście mogę tworzyć reguły zapory ogniowej w celu ograniczenia według adresów IP. Czy istnieje sposób „wstępnej kwalifikacji” logowania SQL przez konto komputera lub członkostwo w domenie?
sql-server
sql-server-2012
security
Jeff Sacksteder
źródło
źródło
Odpowiedzi:
Możesz to osiągnąć za pomocą Logon Trigger . W wyzwalaczu logowania możesz mieć logikę, aby wykonać niezbędne kontrole, których szukasz (na przykład nazwę komputera). Niestety nie wierzę, że istnieje sposób na uzyskanie członkostwa w domenie użytkownika, jeśli używasz uwierzytelniania SQL Server.
Możesz skorzystać z funkcji EVENTDATA, aby sprawdzić, czy możesz wyodrębnić inne informacje w celu ustalenia, czy połączenie powinno być dozwolone. Jeśli nie chcesz, aby to konkretne logowanie się powiodło, możesz po prostu przetestować warunkowo i wydać
ROLLBACK
.źródło
Jak wspomniał Thomas, można to zrobić za pomocą LOGON Trigger. Poniżej znajduje się skrypt, który ci pomoże
źródło
Host_Name()
jest bezpieczny i może być łatwo sfałszowany przez prawie każdego. Jest to szczególnie łatwe w programie Excel. Twój byłby o wiele bardziej niezawodny w tym celu.@IPAddress