Rola db_backupoperator uprawnia do wykonywania kopii zapasowych bazy bez dostępu do modyfikacji danych.
Zakres roli db_backupoperator w SQL Server
db_backupoperator jest stałą rolą bazodanową w Microsoft SQL Server. Jej członkowie otrzymują uprawnienia przeznaczone do wykonywania operacji tworzenia kopii zapasowych w konkretnej bazie danych. Rola jest definiowana na poziomie bazy, dlatego członkostwo nadane w jednej bazie nie daje automatycznie takich samych uprawnień w innych bazach znajdujących się na tym samym wystąpieniu SQL Server.
Podstawowym zastosowaniem tej roli jest umożliwienie wykonania kopii zapasowej bez nadawania użytkownikowi pełnej kontroli nad bazą. Użytkownik należący do db_backupoperator nie staje się administratorem SQL Server i nie otrzymuje z tego tytułu uprawnień właściwych dla roli db_owner. Sama rola nie służy do zmiany struktury tabel, edycji rekordów ani zarządzania konfiguracją całego wystąpienia.
Wykonanie kopii bazy i dziennika transakcji
W SQL Server operację kopii zapasowej wykonuje się poleceniem BACKUP DATABASE, wskazując nazwę bazy oraz miejsce docelowe urządzenia lub pliku kopii. Przykładowa składnia obejmuje między innymi polecenie BACKUP DATABASE [BazaDanych] TO DISK = N'C:\Backup\BazaDanych.bak'. Rola db_backupoperator jest przeznaczona do takich zadań, ale możliwość zapisania pliku zależy również od uprawnień konta usługi SQL Server do wskazanego katalogu systemu plików.
W bazie działającej w modelu odzyskiwania FULL albo BULK_LOGGED można wykonywać także kopie dziennika transakcji poleceniem BACKUP LOG, jeżeli spełnione są wymagania SQL Server dotyczące modelu odzyskiwania i ciągłości łańcucha kopii dziennika. Kopia pełna bazy oraz kopie dziennika pełnią różne funkcje: pełna kopia zawiera stan bazy z chwili zakończenia operacji, natomiast kopia dziennika obejmuje zapis transakcji od poprzedniej kopii dziennika. Sama obecność użytkownika w roli nie naprawia przerwanego łańcucha logów i nie zastępuje poprawnej strategii kopii zapasowych.
Granice uprawnień i konsekwencje bezpieczeństwa
Członkostwo w db_backupoperator nie jest równoznaczne z prawem do odczytu dowolnych tabel za pomocą instrukcji SELECT. Użytkownik może nie mieć bezpośredniego dostępu do danych przez zapytania, a jednocześnie może utworzyć kopię całej bazy. Jest to istotna różnica między kontrolowanym dostępem do obiektów a możliwością wykonania operacji administracyjnej obejmującej całą zawartość bazy.
Plik kopii zapasowej może zawierać dane aplikacyjne, definicje obiektów oraz informacje potrzebne do odtworzenia bazy. Dlatego przy nadawaniu roli trzeba kontrolować nie tylko członkostwo w bazie, lecz także miejsce zapisu kopii, dostęp do plików .bak i ewentualnych plików kopii dziennika .trn. Rola sama w sobie nie daje prawa do przywracania bazy, usuwania plików z systemu operacyjnego, tworzenia kont SQL Server ani nadawania innym użytkownikom uprawnień. Uprawnienia do odtwarzania, zarządzania urządzeniami kopii lub wykonywania czynności na poziomie serwera wynikają z innych mechanizmów i nie powinny być przypisywane automatycznie.
Nadawanie roli i kontrola poprawności kopii
Użytkownika dodaje się do roli w konkretnej bazie poleceniem ALTER ROLE [db_backupoperator] ADD MEMBER [NazwaUżytkownika]. W starszych skryptach można spotkać procedury systemowe, jednak dla współczesnego SQL Server zalecane jest używanie składni ALTER ROLE. Przed zmianą należy upewnić się, że użytkownik istnieje w tej bazie oraz że konto wykonujące polecenie ma uprawnienia do modyfikowania członkostwa w roli. Po wykonaniu kopii warto sprawdzić jej historię w katalogu systemowym SQL Server oraz przeprowadzić test odtworzenia w odseparowanym środowisku.
Poprawnie wykonane polecenie nie gwarantuje jeszcze użyteczności kopii w każdej sytuacji awaryjnej. Należy zweryfikować dostępność pliku, jego rozmiar, czas utworzenia, typ kopii oraz komunikaty zapisane przez SQL Server. Przy kopiach dziennika trzeba dodatkowo zachować właściwą kolejność plików i ciągłość łańcucha. Podczas diagnostyki komputera, na którym działa narzędzie administracyjne SQL Server, sprawdza się między innymi błędy zapisu, brak miejsca na dysku, uprawnienia systemu plików i dostępność ścieżki docelowej; nie zmienia to jednak zakresu samej roli db_backupoperator.