Bezpieczne łączenie się z BaząDanych w aplikacji z wieloma uŻytkownikami

0

Szukam potwierdzenia czy dobrze kminie I czy nie narobię sobie potem kłopotów.

Obecnie pracuję nad aplikacją (c# WPF) która będzie urzywana tlyko w wewnętrznej sieci firmy, tylko przez ich pracowników.
Ilość userrów będzie około 50. Aplikacja będzi ekorzystała z serwera na bazie danych SQL.

Zamiast dodawać każdemu urzytkownikowi dostęp do SQLa, to tworzę sobie service accounta i zaszywam go w aplikacji. Wszystkie connection stringi działają na Windows Authentification. Pisząc że zaszywam ServiceAccounta mam na myśli:

  • Wpisuje gdzie w kodzie username do service accounta
  • Hasło do service accounta jest zaszyfrowane w taki sposób, że aby je odszyfrowac trzeba podać specjalny klucz (przepraszam, nie wiem jak to się profesjonalnie nazywa)
  • Zaszyfrowane hasło też umieszam gdzieś w kodzie wraz z algorystmem do odszyfrowania
  • Klucz do odszyfrowania zaszyfrowanego hasła jest podawane jako argument przy odpalaniu exe’ca

W każdym momencie gdzie aplikacja łączy się z bazą to krok wcześniej następuje impersonacja na SA. Po wykonaniu operacji na bazie, jest zrobiony odimpersonowanie.

Ujdzie czy zupełnie do kitu?

1

eeee nie bardzo rozumiem co robisz i po co po stronie aplikacji. Generalnie wygląda to tak, o ile nie polegasz na kontach windowsowych i np. Active Directory a np. na własnych userach w bazie (no bo jednak gdzieś te informacje trzeba trzymać)

  1. Program z bazą łączy się jednym userem i nie powinien to być sa tylko osobny user do tego przeznaczony bez np. możliwości usunięcia bazy.
  2. W bazie masz tabelę z userami (min. pola id, login, password, pole z hasłem to jest np. hash SHA1)
    Przy uruchomieniu programu łączysz się do bazy i pokazujesz okno do logowania. Po wpisaniu przez usera danych i kliknięciu zaloguj sprawdzasz w tabelce, czy jest user z wpisanym loginem i sha1(hasłem) i tyle.
  3. do tego możesz dorobić cały mechanizm uprawnień i edycji userów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1