Przejdź do treści
LightInventory

Przetłumaczono przy użyciu AI z angielskiej wersji z dnia 30 października 2026. Przeczytaj oryginał

Bezpieczeństwo w LightInventory

Gdzie są Twoje dane, o jaki dostęp do Google prosimy, jak działają logowanie, role i historia odporna na manipulacje oraz z jakich dostawców korzystamy.

Ostatnia aktualizacja: 30 października 2026

Twoje dane magazynowe zostają w Twoim własnym arkuszu Google. LightInventory odczytuje i zapisuje ten plik w Twoim imieniu, nie przechowuje kopii jego zawartości na naszych serwerach i zapisuje tylko to, czego potrzebuje do obsługi Twojego konta. Ta strona wyjaśnia dokładnie, jak to działa, przed czym chronimy i gdzie są granice tej ochrony.

Gdzie są Twoje dane

Dane biznesowe (towary, lokalizacje, ruchy magazynowe, ceny, notatki, propozycje do zatwierdzenia oraz wartości przed zmianą i po niej w Twojej historii) znajdują się wyłącznie w arkuszach na Twoim koncie Google. Nasze serwery wczytują wartości komórek do pamięci operacyjnej, aby wyświetlać strony, porównywać zmiany, przygotowywać eksporty i zapisywać Twoje aktualizacje. Wartości te nie są zapisywane w naszej bazie danych, w logach ani w raportach błędów. Zautomatyzowany zestaw testów sprawdza, że żadna tabela, linia logu ani zdarzenie błędu nie zawiera wartości komórek.

Przechowujemy natomiast dane potrzebne do obsługi Twojego konta:

Co przechowujemyDlaczegoOchrona
Użytkownicy, profile, organizacje, członkostwa, role, zaproszenia (tylko skrót każdego tokena zaproszenia)Logowanie i zarządzanie zespołemSzyfrowanie danych w spoczynku po stronie dostawcy bazy danych
Składniki logowania: klucze publiczne kluczy dostępu, sekrety TOTP, zahaszowane kody odzyskiwaniaUwierzytelnianie wieloskładnikoweSekrety TOTP są dodatkowo szyfrowane kopertowo kluczami przechowywanymi w usłudze zarządzania kluczami
Token odświeżania Google dla połączonego arkuszaOdczyt i zapis Twojego plikuSzyfrowanie kopertowe; nigdy nie trafia do przeglądarki ani do logów
Metadane arkusza: identyfikator pliku, identyfikatory kart, wersja schematu, tryb blokadyOdnajdywanie i sprawdzanie Twojego plikuNie zawierają wartości komórek
Odciski wierszy (skróty z kluczem dla każdego wiersza)Wykrywanie zmian wprowadzonych bezpośrednio w arkuszuDzięki kluczowi nie da się z nich odtworzyć wartości
Łańcuch skrótów audytu: numery kolejne, identyfikatory wpisów, skróty, identyfikator autora, typ działania, czasDowód, że Twoja historia nie została zmienionaNie zawiera wartości
Dane rozliczeniowe od naszego operatora płatnościSubskrypcje i fakturyNie zawierają numerów kart
Zdarzenia bezpieczeństwa: próby logowania, nieudane próby dostępu, adres IP, przeglądarkaWykrywanie nadużyćAdres IP usuwany po 90 dniach, zdarzenia usuwane po 1 roku

Nasz własny system działa w Londynie. Baza danych (Supabase, region eu-west-2), serwery aplikacji (Vercel, region lhr1) oraz nasze klucze szyfrowania i kotwice historii (Google Cloud, region europe-west2) są przypisane do tej lokalizacji. Jedynym udokumentowanym wyjątkiem są e-maile transakcyjne, opisane w sekcji Infrastruktura i podmioty przetwarzające.

O jaki dostęp do Google prosimy

LightInventory prosi Google o dwie rzeczy. Przy logowaniu przez Google prosi o Twój podstawowy profil: openid, email i profile. Gdy łączysz arkusz, osobno prosi o jedno uprawnienie do Dysku: drive.file.

Mówiąc prościej, drive.file pozwala aplikacji pracować tylko z plikami, które w niej utworzysz lub dla niej wybierzesz. Google opisuje je jako dostęp do plików, które otwierasz za pomocą aplikacji lub które użytkownik udostępnia aplikacji podczas korzystania z interfejsu Google Picker API (zakresy Google Drive API). Google klasyfikuje go jako zakres niewrażliwy.

Co to oznacza dla Ciebie:

  • LightInventory nie może wyświetlać listy plików, otwierać ani przeszukiwać reszty Twojego Dysku Google. Plik, który nie został utworzony w LightInventory ani wybrany w selektorze plików Google, jest dla niego niewidoczny.
  • Nigdy nie prosimy o szerszy zakres spreadsheets ani o żaden zakres obejmujący cały Dysk.
  • Po każdym przyznaniu uprawnień sprawdzamy, czy Google zwróciło dokładnie taki dostęp, o jaki prosiliśmy.
  • Dostęp możesz w każdej chwili usunąć w ustawieniach konta Google. Zobacz Odbieranie LightInventory dostępu do konta Google.

Dostęp przyznaje tylko osoba, która łączy arkusz, i musi ona być właścicielem pliku. Członkowie Twojego zespołu nigdy nie są dodawani do pliku w Google. Pracują w aplikacji, w ramach ról, które im nadasz.

Logowanie i sesje

Każdy użytkownik loguje się za pomocą dwóch składników, w każdym planie i przy każdym rozpoczęciu sesji.

  1. Pierwszy składnik: logowanie przez Google albo adres e-mail i hasło. Hasło musi mieć co najmniej 12 znaków i jest sprawdzane na listach haseł, które wyciekły. Logowanie przez Google liczy się wyłącznie jako pierwszy składnik, nigdy jako oba.
  2. Drugi składnik: klucz dostępu, który jest opcją domyślną i jest odporny na phishing, albo kod TOTP z aplikacji uwierzytelniającej. Każdy użytkownik rejestruje co najmniej dwie metody i otrzymuje 10 jednorazowych kodów odzyskiwania.

W przypadku Właścicieli i Administratorów domyślnie wymagane jest logowanie odporne na phishing, więc TOTP jest dla tych ról wyłączone, chyba że właściciel zmieni to ustawienie. Sprzętowe klucze bezpieczeństwa działają jako klucze dostępu. Link w e-mailu pozwala zresetować hasło, ale nigdy nie zastępuje drugiego składnika.

Uwierzytelnianie wieloskładnikowe jest sprawdzane w dwóch niezależnych miejscach: w kodzie naszego serwera i w regułach dostępu samej bazy danych. Sesja, która przeszła tylko pierwszy składnik, nie może niczego odczytać, nawet jeśli odwołuje się bezpośrednio do bazy danych.

Ustawienie sesjiWartość
Wylogowanie po okresie bezczynności60 minut
Maksymalna długość sesji24 godziny
Świeże potwierdzenie drugim składnikiem przy działaniach wrażliwychW ciągu ostatnich 5 minut
Nieudane próby drugiego składnika przed blokadą10, z opóźnieniami od 30 sekund do 1 godziny

Działania wrażliwe obejmują zmiany ról, zmiany rozliczeń, łączenie i odłączanie arkusza, eksporty, zbiorcze cofanie zmian, zmiany metod logowania i usunięcie organizacji. Możesz zobaczyć swoje aktywne sesje i zakończyć dowolną z nich. Wysyłamy Ci e-mail, gdy loguje się nowe urządzenie, gdy metoda logowania zostaje dodana lub usunięta oraz gdy zostaną użyte kody odzyskiwania.

Role, lokalizacje i zatwierdzanie

Każda organizacja ma pięć ról: Właściciel, Administrator, Zatwierdzający, Edytujący i Przeglądający. Edytujących i Przeglądających można ograniczyć do wybranych lokalizacji, dzięki czemu zespół sklepu widzi i zmienia tylko własne zapasy.

UprawnienieWłaścicielAdministratorZatwierdzającyEdytującyPrzeglądający
Wyświetlanie towarów, stanów i historiiTakTakTakWłasne lokalizacjeWłasne lokalizacje
Rejestrowanie ruchówTakTakTakWłasne lokalizacjeNie
Zatwierdzanie próśbTakTakTak, ale nie własnychNieNie
Zbiorcze cofanie zmianTakTakNieNieNie
Zarządzanie członkamiTakTakNieNieNie
Łączenie arkusza, usuwanie organizacjiTakNieNieNieNie

Uprawnienia są odczytywane na bieżąco przy każdym żądaniu, więc usunięcie kogoś lub zmiana jego roli działa od jego następnego działania. Każde żądanie jest odrzucane, chyba że zezwala na nie jakaś reguła. Każda rola jest opisana na stronie Zespół i role.

Zatwierdzanie jest opcjonalne. Gdy jest włączone, organizacja może wymagać zatwierdzenia takich zmian jak edycja cen czy korekty stanów. Proponowana zmiana jest zapisywana na chronionej karcie w Twoim arkuszu i nikt nie może zatwierdzić własnej prośby. Więcej informacji znajdziesz w omówieniu ścieżki audytu.

Historia odporna na manipulacje

Każda zmiana wprowadzona w LightInventory jest zapisywana jako wpis historii na chronionej karcie Log w Twoim arkuszu, w tej samej aktualizacji Google co sama zmiana. Stan magazynowy nigdy nie jest edytowany jako liczba. Jest obliczany z listy ruchów, do której można tylko dopisywać, a cofnięcie zmiany to nowy, przeciwny wpis, a nie usunięcie.

Odporność na manipulacje oznacza, że jeśli ktoś zmieni lub usunie wcześniejszy wpis, weryfikacja to wykaże. Nie oznacza, że taka zmiana jest niemożliwa. Działa to tak:

  • Łańcuch z kluczem. Każdy wpis otrzymuje kod obliczony z jego zawartości i kodu poprzedniego wpisu za pomocą HMAC-SHA256 i tajnego klucza Twojej organizacji, który ma wyłącznie LightInventory. Zmiana jednego wpisu przerywa łańcuch od tego miejsca. Ponieważ klucz jest tajny, nikt nie może po cichu przeliczyć kodów po zmianie.
  • Kopia łańcucha bez wartości. Kody łańcucha, nigdy Twoje wartości, przechowujemy w tabeli bazy danych, która odrzuca aktualizacje i usunięcia.
  • Dzienne kotwice poza naszą bazą danych. Raz dziennie pojedynczy odcisk najnowszej pozycji łańcucha każdej organizacji jest zapisywany w zasobniku Google Cloud Storage z zablokowaną zasadą przechowywania na 7 lat. Po zablokowaniu tej zasady nie można skrócić ani usunąć. Atakujący, który zdołałby zmienić naszą bazę danych, nadal nie mógłby przepisać tych kotwic.
  • Nocna weryfikacja. Każdej nocy, a także na żądanie właściciela, ponownie obliczamy łańcuch na podstawie Twojej karty Log i porównujemy go z naszą kopią i najnowszą kotwicą. Jeśli coś się nie zgadza, każdy członek widzi ostrzeżenie o integralności, a Właściciel i Administratorzy dostają e-mail.

Granicą jest własność pliku. Właściciel pliku Google zawsze może go edytować, odblokować, skopiować lub usunąć; Google nie pozwala nikogo z tego wykluczyć. Łańcuch nie może temu zapobiec, ale sprawia, że staje się to widoczne. Google rejestruje też zapisy naszej aplikacji pod kontem właściciela, ponieważ zapisujemy dane na podstawie uprawnień właściciela. Nasza karta Log wskazuje faktycznego członka zespołu.

Zmiany wprowadzane bezpośrednio w arkuszu

Domyślnie zarządzane karty są chronione tak, że w Arkuszach Google może je edytować tylko właściciel, a edytujący plik nie mogą udostępniać go dalej. Opcjonalna ścisła blokada sprawia, że plik jest w Google tylko do odczytu, dopóki właściciel celowo go nie odblokuje.

Ponieważ właściciel zawsze może wprowadzać zmiany, LightInventory również je wykrywa. Za każdym razem, gdy aplikacja odczytuje Twój arkusz, porównuje każdy wiersz z zapisanym odciskiem. Kontrola w tle działa też dla organizacji, których nikt akurat nie przegląda. Gdy wiersz zmienił się poza aplikacją, aplikacja rejestruje to wraz z możliwie najlepszym przypisaniem autora na podstawie danych o wersjach z Google, a następnie stosuje zasadę Twojej organizacji: blokuje zmianę, dopóki Właściciel lub Administrator jej nie przyjmie albo nie przywróci poprzedniego stanu, akceptuje ją i zapisuje w logu albo wstrzymuje do zatwierdzenia. Zmiany wcześniejszych ruchów lub wpisów historii są zawsze oznaczane.

Szyfrowanie i sekrety

  • Podczas przesyłania: cały ruch korzysta z HTTPS. Przeglądarki otrzymują polecenie używania wyłącznie HTTPS (HSTS z preload), a nasze strony stosują ścisłą politykę Content Security Policy.
  • W spoczynku: nasza baza danych jest szyfrowana w spoczynku przez jej dostawcę. Twój arkusz przechowuje i szyfruje Google.
  • Tokeny i klucze: tokeny odświeżania Google, sekrety TOTP i klucze historii każdej organizacji są szyfrowane algorytmem AES-256-GCM z nowym kluczem dla każdego rekordu. Ten klucz jest z kolei chroniony kluczem głównym w Google Cloud KMS w Londynie, który nigdy nie opuszcza KMS i jest co roku rotowany. KMS działa w osobnym projekcie chmurowym z własną kontrolą dostępu, a nasze serwery łączą się z nim bez żadnych zapisanych długoterminowych danych uwierzytelniających.
  • Brak dostępu wsparcia do Twojego arkusza. Nie ma funkcji, która pozwalałaby naszym pracownikom logować się jako Ty, ani narzędzia wsparcia, które otwierałoby Twój arkusz. Dostęp do naszej produkcyjnej bazy danych wymaga udziału dwóch osób i jest rejestrowany.

Infrastruktura i podmioty przetwarzające

DostawcaRolaRegion
SupabaseBaza danych i uwierzytelnianie (wyłącznie dane systemowe)Londyn (eu-west-2)
VercelHosting aplikacji i zapora sieciowa; sieć dostarczania treściFunkcje w Londynie (lhr1); globalny CDN
Google CloudZarządzanie kluczami i kotwice historii (wyłącznie dane systemowe)Londyn (europe-west2)
ResendE-maile transakcyjne (zaproszenia, powiadomienia o bezpieczeństwie i rozliczeniach)Stany Zjednoczone
StripeRozliczenia i płatnościBez przypisanego regionu
CloudflareDNS z DNSSEC oraz CAPTCHA w formularzach logowaniaSieć globalna

Interfejsy API Arkuszy i Dysku Google przetwarzają Twój arkusz jako Twój własny dostawca. E-maile, które wysyłamy, nigdy nie zawierają Twoich danych magazynowych. W przypadku dostawców z siedzibą w USA przekazywanie danych odbywa się na podstawie ramowych zasad ochrony danych UE-USA (EU-US Data Privacy Framework) z rozszerzeniem dla Wielkiej Brytanii albo standardowych klauzul umownych.

Nasza umowa powierzenia przetwarzania danych (Data Processing Agreement) jest skonstruowana tak, aby klienci otrzymywali co najmniej 30 dni wcześniej powiadomienie o nowym podmiocie przetwarzającym i mieli prawo sprzeciwu. Pełna lista podmiotów przetwarzających i sama umowa zostaną opublikowane w dniu startu.

Zgłaszanie podatności

Jeśli znajdziesz problem z bezpieczeństwem, wyślij e-mail na adres support@lightinventory.com z opisem kroków pozwalających go odtworzyć. Prosimy nie uzyskiwać dostępu do danych innych osób, nie zakłócać działania usługi i kontaktować się z nami przed jakimikolwiek aktywnymi testami, ponieważ nasz regulamin nie zezwala na testy bezpieczeństwa bez zgody. Nasze dane kontaktowe dla badaczy bezpieczeństwa są też opublikowane w formie czytelnej maszynowo w pliku security.txt. Pełna polityka odpowiedzialnego ujawniania podatności zostanie opublikowana przed startem.

Status

LightInventory przygotowuje się do startu. Plan przewiduje, że przed startem przeprowadzimy zewnętrzny test penetracyjny obejmujący logowanie, izolację klientów, autoryzację Google, webhooki i wstrzykiwanie danych do arkusza, a także pełną samoocenę według standardu OWASP Application Security Verification Standard 5.0. Gdy te niezależne oceny będą gotowe, dodamy je do tej strony. Do tego czasu strona opisuje projekt, a nie certyfikację.

Pełną listę znajdziesz na stronie Co przechowuje LightInventory, a informacje o tym, co obejmuje każdy plan, w cenniku.