Pomoc

Podłączanie danych

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 ServerKonto A4G ConnectHasło
na tym samym komputerzekonto usługi Windows NT SERVICE\A4GConnectbrak — logowanie zintegrowane Windows
na innym komputerzelogin SQL a4g_connectlosowe, 32 znaki, zaszyfrowane na komputerze z Connectem (Windows DPAPI)

To konto:

  • nie należy do żadnej roli (ani db_owner, ani db_datareader);
  • dostaje tylko uprawnienie SELECT na konkretnych tabelach — po jednym GRANT SELECT na tabelę;
  • nie ma uprawnień INSERT, UPDATE, DELETE, ALTER, EXECUTE ani ż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:

ObszarTabele
Dokumenty i pozycjedok__Dokument, dok_Pozycja
Kontrahencikh__Kontrahent, adr__Ewid, sl_GrupaKh (opcjonalnie)
Towary, ceny, stanytw__Towar, tw_Cena, tw_Parametr, tw_Stan
Słownikisl_GrupaTw, sl_Magazyn, sl_StawkaVAT, sl_FormaPlatnosci
Użytkownicy (tylko identyfikatory)pd_Uzytkownik
Ustawienia firmy (minimalna marża)su_Parametr (opcjonalnie)
Rozrachunkinz__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.exe z 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.