| Termin | Definicja |
|---|---|
| FILESTREAM i bezpieczeństwo | FILESTREAM i bezpieczeństwo opisuje mechanizmy ochrony danych przechowywanych poza standardową strukturą bazy. FILESTREAM w SQL Server a ochrona plików poza tabeląFILESTREAM to funkcja programu Microsoft SQL Server przeznaczona do przechowywania dużych obiektów binarnych, takich jak dokumenty, obrazy lub nagrania, w systemie plików NTFS zamiast bezpośrednio w stronach danych bazy. W tabeli pozostaje kolumna typu Bezpieczeństwo wynika z połączenia kontroli bazy danych, uprawnień systemu plików oraz mechanizmów FILESTREAM. Dostęp do danych może odbywać się przez standardowe instrukcje Transact-SQL, a w określonych scenariuszach także przez strumieniowanie plikowe z użyciem interfejsu FILESTREAM. Obie ścieżki muszą respektować uprawnienia nadane użytkownikowi w SQL Server. Sam fakt, że dane fizycznie znajdują się poza głównym plikiem danych, nie oznacza, że stają się niezależnymi plikami dostępnymi dla każdego konta systemowego. Transakcje i dostęp przez interfejs FILESTREAMIntegralność danych jest powiązana z transakcjami SQL Server. Przy dostępie do obiektu przez interfejs Win32 aplikacja korzysta z uchwytu uzyskanego dla wartości FILESTREAM, a operacja musi być związana z odpowiednim kontekstem transakcji. SQL Server udostępnia do tego między innymi funkcję Specjalny mechanizm blokad i transakcji zapobiega sytuacji, w której aplikacja modyfikuje plik bez odzwierciedlenia tej zmiany w bazie. Dostęp do danych przez system plików nie powinien być traktowany jako obejście autoryzacji SQL Server. Aplikacja musi posiadać uprawnienia do tabeli i kolumny, a także wykonać operację w sposób zgodny z protokołem FILESTREAM. Nieprawidłowe użycie ścieżki, uchwytu lub kontekstu transakcji może zakończyć się błędem dostępu albo przerwaniem operacji. Uwierzytelnianie, poziom dostępu i konfiguracjaFILESTREAM może korzystać z dostępu przez Transact-SQL oraz z dostępu plikowego udostępnianego przez usługę FILESTREAM. Konfiguracja tej funkcji odbywa się na poziomie instancji SQL Server i obejmuje włączenie dostępu FILESTREAM oraz określenie, czy dostęp ma być lokalny, czy także zdalny. W przypadku dostępu zdalnego znaczenie ma również udział sieciowy FILESTREAM oraz reguły zapory. Otwarcie dostępu z innych komputerów zwiększa powierzchnię ataku, dlatego powinno być uzasadnione wymaganiami aplikacji i ograniczone regułami sieciowymi. Uprawnienia należy nadawać zgodnie z zasadą najmniejszych uprawnień. Konto aplikacji powinno otrzymać tylko dostęp do wymaganej bazy, tabeli i operacji, bez niepotrzebnych praw administracyjnych w SQL Server ani w systemie Windows. Szczególnej uwagi wymaga konto usługi SQL Server oraz konto usługi FILESTREAM, ponieważ ich uprawnienia są elementem całego łańcucha ochrony. Zmiana lokalizacji kontenera, ręczne ustawianie praw NTFS lub modyfikowanie konfiguracji bez procedury administracyjnej może doprowadzić do utraty dostępności danych. Kopie zapasowe, kontrola kontenera i diagnostykaObiekty FILESTREAM są częścią bazy danych z punktu widzenia kopii zapasowych i odtwarzania. Kopia zapasowa bazy powinna obejmować również dane FILESTREAM, a procedura odtwarzania musi uwzględniać integralność całego zasobu, nie tylko pliku danych MDF. Samodzielne archiwizowanie katalogu kontenera przez kopiowanie jego zawartości nie zastępuje poprawnej kopii zapasowej SQL Server i może prowadzić do niespójności między metadanymi tabeli a plikami na dysku. Podczas diagnostyki problemu należy rozdzielić kilka warstw: uprawnienia użytkownika w SQL Server, stan usługi FILESTREAM, konfigurację dostępu lokalnego lub zdalnego, dostępność udziału, reguły zapory, wolne miejsce na woluminie oraz poprawność transakcji aplikacji. Należy także sprawdzić, czy aplikacja nie próbuje traktować logicznej ścieżki FILESTREAM jak zwykłego katalogu oraz czy nie zamyka uchwytu przed zatwierdzeniem transakcji. Bezpośrednia ingerencja w kontener plikowy jest niewłaściwą metodą naprawy. W środowisku, w którym działają usługi SQL Server, potrzebna jest analiza konfiguracji, logów i kopii zapasowych przed wykonaniem zmian. |