Twój workflow ma dostęp do Gmaila, CRM, konta bankowego, API płatności. Jedno wycieknięcie credentials = katastrofa. n8n traktuje bezpieczeństwo poważnie – ale konfiguracja leży po Twojej stronie. Ten artykuł pokazuje co zrobić.
TL;DR
- Credentials w n8n są szyfrowane (AES-256-CBC) – nie zapisuj kluczy API w node'ach
- Encryption key – ustaw
N8N_ENCRYPTION_KEYprzy pierwszym uruchomieniu. Bez niego = dane w bazie niezabezpieczone - RODO – self-hosting na polskim serwerze = pełna kontrola. Cloud = serwery w EU (Niemcy)
- Reverse proxy + SSL – obowiązkowe na produkcji
- Backup – credentials nie eksportują się z workflow, backup bazy = jedyna kopia
Nie masz n8n? Zainstaluj bezpiecznie. Kontekst: kompletny poradnik n8n.
Credentials – jak n8n chroni Twoje klucze
Jak działa szyfrowanie
n8n szyfruje credentials algorytmem AES-256-CBC. Klucz szyfrujący to N8N_ENCRYPTION_KEY – zmienna środowiskowa, którą ustawiasz przy instalacji.
# Docker – dodaj do environment
N8N_ENCRYPTION_KEY=twoj-losowy-klucz-min-24-znaki
Bez N8N_ENCRYPTION_KEY nie odszyfrujesz credentials z bazy danych. Utrata klucza = utrata WSZYSTKICH credentials. Zapisz go w bezpiecznym miejscu (menedżer haseł, nie w repo).
Czego NIE robić z credentials
1. Nie wklejaj kluczy API bezpośrednio w node'y
Źle:
HTTP Request → Header: Authorization: Bearer sk-1234567890
Dobrze:
HTTP Request → Authentication: Predefined Credential Type → OpenAI API
n8n Credentials: szyfrowane, centralne zarządzanie, łatwa rotacja. Klucz w node: plaintext w workflow JSON, eksportuje się z workflow, widoczny dla każdego z dostępem.
2. Nie eksportuj workflow z credentials
Workflow JSON nie zawiera credentials (celowo). Ale mogą zawierać dane, które leciały przez node'y – sprawdź przed udostępnieniem.
3. Nie używaj $credentials w expressions
$credentials.xxx.yyy nie działa w n8n expressions (blokada bezpieczeństwa). Jeśli potrzebujesz wartości credential w wyrażeniu – użyj Edit Fields do przepisania wartości.
Bezpieczeństwo instancji n8n
1. SSL/HTTPS – obowiązkowe
Bez HTTPS dane lecą plaintextem – w tym credentials i dane workflow. Na produkcji HTTPS jest obowiązkowe.
Rozwiązanie: Caddy jako reverse proxy (automatyczny SSL). Instrukcja instalacji z Caddy.
2. Uwierzytelnianie
n8n domyślnie wymaga loginu. Upewnij się, że:
- Hasło jest silne (min. 16 znaków)
- Nie używasz domyślnych danych
N8N_BASIC_AUTH_ACTIVE=truejest ustawione
3. Zmienne środowiskowe
Przechowuj wrażliwe dane jako zmienne środowiskowe, nie w workflow:
# docker-compose.yml
environment:
- N8N_ENCRYPTION_KEY=twoj-klucz
- OPENAI_API_KEY=sk-xxx
- SLACK_TOKEN=xoxb-xxx
W n8n użyj tych zmiennych w Credentials lub przez $env.VARIABLE_NAME.
4. Firewall
Ogranicz dostęp do n8n:
- Port 5678: tylko przez reverse proxy
- SSH: tylko z Twojego IP
- API n8n: uwierzytelnianie wymagane
5. Aktualizacje
n8n regularnie łata luki bezpieczeństwa. Aktualizuj przynajmniej co miesiąc:
docker compose pull && docker compose up -d
RODO i przetwarzanie danych
Self-hosting: pełna kontrola
Self-hosting na polskim serwerze (np. Mikrus) = dane nie opuszczają Polski. Najlepsza opcja dla firm z wymaganiami RODO.
n8n Cloud: serwery w EU
n8n Cloud działa na AWS eu-central-1 (Frankfurt, Niemcy). Dane w EU – zgodne z RODO, ale poza Polską.
Co n8n przetwarza
| Dane | Gdzie | Jak długo |
|---|---|---|
| Credentials | Baza n8n (szyfrowane) | Do usunięcia |
| Execution data | Baza n8n | Konfigurowalne (domyślnie: zawsze) |
| Workflow JSON | Baza n8n | Do usunięcia |
| Dane przetwarzane | RAM (w trakcie) + baza (po execution) | Konfigurowalne |
Rekomendacje RODO
- Retencja execution data – ustaw automatyczne usuwanie:
EXECUTIONS_DATA_MAX_AGE=168 # 7 dni - Nie loguj danych wrażliwych – wyłącz save execution data dla workflow przetwarzających PESEL, dane zdrowotne
- Umowa powierzenia – jeśli przetwarzasz dane klientów przez n8n Cloud, potrzebujesz DPA z n8n GmbH
- Dokumentacja – opisz n8n w rejestrze czynności przetwarzania (art. 30 RODO)
Self-hosting to jedyna opcja dająca 100% kontroli nad danymi. Wiesz dokładnie gdzie są, kto ma dostęp, jak długo są przechowywane. Dla firm przetwarzających dane wrażliwe – jedyna sensowna opcja.
Backup i disaster recovery
Co backupować
- Baza danych n8n – credentials (szyfrowane), workflow, execution data
- Encryption key – bez niego baza jest bezużyteczna
- Docker volumes –
/home/node/.n8n - Docker compose + Caddyfile – konfiguracja
Automatyczny backup (cron)
# Backup co noc o 2:00
0 2 * * * docker run --rm -v n8n_data:/data -v /backup:/backup alpine \
tar czf /backup/n8n-$(date +\%Y\%m\%d).tar.gz /data
Restore
# Zatrzymaj n8n
docker compose down
# Przywróć backup
docker run --rm -v n8n_data:/data -v /backup:/backup alpine \
tar xzf /backup/n8n-20260218.tar.gz -C /
# Uruchom n8n
docker compose up -d
Test restore
Rób test restore co miesiąc. Backup, którego nie przetestowałeś, nie istnieje.
Checklist bezpieczeństwa
Zanim pójdziesz na produkcję:
-
N8N_ENCRYPTION_KEYustawiony i zapisany w bezpiecznym miejscu - HTTPS/SSL skonfigurowany (Caddy/Nginx)
- Silne hasło do n8n (min. 16 znaków)
- Firewall – port 5678 zamknięty (tylko przez reverse proxy)
- Credentials w node Credentials (nie w hardcode)
- Execution data retention ustawione (7-30 dni)
- Automatyczny backup skonfigurowany (codziennie)
- Test restore wykonany
- Aktualizacje n8n – plan co miesiąc
FAQ
Czy credentials wyciekną przy eksporcie workflow?
Nie – n8n celowo nie eksportuje credentials w pliku JSON workflow. Ale execution data może zawierać dane, które przepływały przez workflow. Sprawdź przed udostępnieniem.
Czy n8n jest bezpieczny dla danych firmowych?
Self-hosted z właściwą konfiguracją – tak. n8n to oprogramowanie open source, audytowane przez społeczność. Bezpieczeństwo zależy od Twojej konfiguracji (SSL, firewall, backup, encryption key).
Co jeśli stracę Encryption Key?
Wszystkie credentials stają się nieodszyfrowane. Musisz je skonfigurować ponownie. Workflow działają, ale każdy node z credentials wymaga ponownej konfiguracji.
Czy n8n loguje dane, które przez niego przepływają?
Tak – execution data zawiera input/output każdego node'a. Ustaw retencję (EXECUTIONS_DATA_MAX_AGE) i rozważ wyłączenie save data dla wrażliwych workflow (EXECUTIONS_DATA_SAVE_ON_SUCCESS=none).
