Wczoraj zadałem to pytanie dotyczące zmiany dbo wielu baz danych, które mam. Zmiana ma sens, ale chcę to wyjaśnić.
Czy jest jakiś dobry powód lub okoliczność, dla której nie powinienem ustawiać dbo bazy danych na [sa]?
Wczoraj zadałem to pytanie dotyczące zmiany dbo wielu baz danych, które mam. Zmiana ma sens, ale chcę to wyjaśnić.
Czy jest jakiś dobry powód lub okoliczność, dla której nie powinienem ustawiać dbo bazy danych na [sa]?
Odpowiedzi:
Uczynienie SA właścicielem bazy danych faktycznie upraszcza i / lub rozwiązuje wiele rzeczy, ale może mieć pewne konsekwencje dla bezpieczeństwa.
W szczególności pamiętaj, że jeśli SA jest właścicielem bazy danych, to dbo = 'SA'
. Oznacza to, że między innymi wszelkie procedury w schemacie [dbo] (które są domyślne), które zawierają „WYKONAJ jako właściciela”, w rzeczywistości są wykonywane jako SA. Nie jest to wcale takie złe, jak się wydaje, ponieważ o ile nie zaznaczysz bazy danych jako PRAWDOPODOBNIE, SQL Server nie pozwoli sesji lub zadaniu wyjść z bazy danych za pomocą personifikowanej nazwy głównej na poziomie serwera.
Co powoduje kolejny punkt: nigdy nie oznaczaj takich baz danych jako TRUSTWORTHY, chyba że naprawdę , naprawdę jesteś pewien, że jest bezpieczny. Ponieważ każdy, kto ma możliwość tworzenia procedur w schemacie [dbo], może wykonać jako SA na całym serwerze, jeśli chce.
Może pojawić się kolejny problem, ponieważ wiele produktów i aplikacji, które mają własną bazę danych SQL Server, często określają, że login aplikacji musi być DBO bazy danych. Oczywiście można to rozwiązać, logując się do aplikacji jako „SA”. Mamy nadzieję, że jest również oczywiste, że nigdy nie powinieneś tego robić, chyba że SQL Server Instancja nie jest używana do niczego innego (nawet wtedy odradzałbym to).