Podłączenie Subiekta GT — dlaczego to bezpieczne
Najczęstsze pytanie przed podłączeniem: „czy A4G może coś zepsuć w Subiekcie?”. Krótka odpowiedź: nie ma jak. A4G Connect łączy się z bazą kontem, które SQL Server pozwala wyłącznie czytać wybrane tabele. To ograniczenie nakłada i egzekwuje sam SQL Server — nie zależy od tego, jak napisany jest program.
Konto bazy z prawem tylko do odczytu
Instalator tworzy dla A4G Connect osobne konto w SQL Server:
| Gdzie działa SQL Server | Konto A4G Connect | Hasło |
|---|---|---|
| na tym samym komputerze | konto usługi Windows NT SERVICE\A4GConnect | brak — logowanie zintegrowane Windows |
| na innym komputerze | login SQL a4g_connect | losowe, 32 znaki, zaszyfrowane na komputerze z Connectem (Windows DPAPI) |
To konto:
- nie należy do żadnej roli (ani
db_owner, anidb_datareader); - dostaje tylko uprawnienie
SELECTna konkretnych tabelach — po jednymGRANT SELECTna tabelę; - nie ma uprawnień
INSERT,UPDATE,DELETE,ALTER,EXECUTEani żadnych uprawnień serwerowych; - łączy się z bazą szyfrowanym połączeniem.
Do utworzenia konta instalator jednorazowo używa uprawnień administratora SQL, które podajesz w trakcie instalacji. Tych danych nie zapisuje — używa ich tylko do założenia konta i nadania uprawnień, a potem je zapomina.
Bezpieczeństwo
Nawet gdyby program A4G Connect zawierał błąd, nie może zrobić w bazie nic ponad odczyt tych tabel: SQL Server odrzuci każdą próbę zapisu, bo konto nie ma do tego uprawnień.
Jakie tabele czyta A4G Connect
Uprawnienie do odczytu dostaje dokładnie 16 tabel:
| Obszar | Tabele |
|---|---|
| Dokumenty i pozycje | dok__Dokument, dok_Pozycja |
| Kontrahenci | kh__Kontrahent, adr__Ewid, sl_GrupaKh (opcjonalnie) |
| Towary, ceny, stany | tw__Towar, tw_Cena, tw_Parametr, tw_Stan |
| Słowniki | sl_GrupaTw, sl_Magazyn, sl_StawkaVAT, sl_FormaPlatnosci |
| Użytkownicy (tylko identyfikatory) | pd_Uzytkownik |
| Ustawienia firmy (minimalna marża) | su_Parametr (opcjonalnie) |
| Rozrachunki | nz__Finanse |
Nigdy nie dostaje dostępu do tabel kas, rachunków bankowych, płatności, innych dokumentów magazynowych niż PZ ani do niczego spoza tej listy. Co z tych tabel faktycznie trafia do A4G, a co zostaje w firmie, opisuje Zakres danych.
Czego A4G Connect nigdy nie robi
- Nie zapisuje niczego w bazie Subiekta i nie tworzy w niej żadnych obiektów (tabel, wyzwalaczy, procedur).
- Nie zmienia ustawień SQL Server ani konfiguracji Subiekta.
- Nie blokuje pracy — czyta porcjami, nie czeka na blokady i robi przerwy, gdy baza jest zajęta (szczegóły: A4G Connect — jak działa).
- Nie wystawia bazy do internetu — łączy się tylko na zewnątrz, do A4G.
Informacja
A4G Connect ma też opcjonalny tryb natychmiastowego wychwytywania zmian, który wymagałby instalacji obiektów w bazie. Jest domyślnie wyłączony, a utworzone przez instalator konto i tak nie ma uprawnień, by go zainstalować. Włączenie go wymagałoby świadomej decyzji, osobnych uprawnień nadanych przez administratora i testu na kopii bazy.
Jak to sprawdzić samemu
Twój administrator może w każdej chwili sprawdzić uprawnienia konta A4G Connect w SQL Server Management Studio (Zabezpieczenia → Loginy → konto A4G Connect → Mapowanie użytkowników / Zabezpieczane) albo zapytaniem:
-- uprawnienia użytkownika A4G Connect w bazie Subiekta (podstaw nazwę użytkownika)
SELECT permission_name, state_desc, OBJECT_NAME(major_id) AS tabela
FROM sys.database_permissions
WHERE grantee_principal_id = USER_ID('NT SERVICE\A4GConnect');
-- role, do których należy (powinno być pusto)
SELECT r.name FROM sys.database_role_members m
JOIN sys.database_principals r ON r.principal_id = m.role_principal_id
WHERE m.member_principal_id = USER_ID('NT SERVICE\A4GConnect');
Wynik powinien zawierać wyłącznie SELECT / GRANT na tabelach z listy powyżej i żadnej roli. Polecenie
A4G.Connect.exe check sprawdza to samo od strony programu i ostrzega, gdy czegoś brakuje.
Odebranie dostępu
Dostęp odbierasz w każdej chwili, bez udziału A4G:
- zatrzymanie usługi:
Stop-Service A4GConnect; - odebranie uprawnień: usunięcie użytkownika i loginu A4G Connect w SQL Server;
- pełne odinstalowanie:
Setup.exez opcją odinstalowania (usuwa też konto z bazy, gdy wskażesz serwer i bazę).
Wpływ na wydajność
Odczyt odbywa się porcjami, z przerwami, gdy Subiekt lub inne programy (np. Sello) intensywnie korzystają z bazy. Pełny odczyt wszystkich danych odbywa się w nocy, a w ciągu dnia co 20 minut czytane są tylko ostatnie zmiany. Na stronie Źródła danych widać, czy i jak często Connect robił przerwy.