Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 6
  • 215

W MSSQL 2008 R2 nie ma oficjalnie możliwości nadawania uprawnień na poziomie rekordów - tego już się dowiedziałem. Czy da się rozwiązać w jakiś sposób ograniczenie dostępu użytkownikowi do SELECT-a czy UPDATE-a konkretnych grup rekordów (np. filtrowanych wg. warunku WHERE)?

Przyszedł mi do głowy pomysł tworzenia widoków lub procedur. Jednak dla utrudnienia w moim przypadku korzystam z aplikacji, w której nie mogę wprowadzić zmian. Tak więc ograniczenie musi być przezroczyste dla klienta.

pmichalski
  • Zapytał
  • @ pmichalski | 17.02.2014
    • 19
    • 2
    • 9

Odpowiedź (1)

  • 9

Krótka odpowiedź na to pytanie brzmi: nie ma takiej możliwości. Rozwijając myśl należy oddzielić dwie kwestie : możliwości techniczne oraz wpływ zmian na aplikację. Z punktu widzenia możliwości technicznych na poziomie samej bazy danych jesteśmy w stanie zmodyfikować jej strukturę tak, aby wspierała wymaganą funkcjonalność przy czym podzieliłbym operację na 2 części, czyli Select i Update.

Dla operacji Select istnieją dwa podstawowe rozwiązania:

  1. Podmiana obiektu tabeli na widok o tej samej nazwie wraz z migracją danych
  2. Zastosowanie kluczy szyfrujących na użytkownika

Dla operacji Update istnieje kilka możliwości stworzenia mechanizmu nadawania
uprawnień na poziomie rekordów korzystając np. z:

  1. Wyzwalacza (triggera)
  2. Ograniczenia typu check wraz z funkcją
  3. Kluczy szyfrujących

W pytaniu zostało podkreślone, że baza jest źródłem dla aplikacji, w której nie można wprowadzać zmian - w związku  z tym dowolna modyfikacja możliwa technicznie wprowadza realne zagrożenie dla stabilności aplikacji. W praktyce tego typu modyfikacje, kończą się najczęściej utratą stabilności,  wydajności i zazwyczaj stanowią ingerencję niezgodną z postanowieniami licencji.

Podsumowując, pomimo możliwości technicznych, w praktyce nie ma takiej możliwości bez wpływu na działanie aplikacji.

 

  • Odpowiedział
  • @ | 17.02.2014
  • TRENER ALTKOM AKADEMII