Je API keys per ongeluk uploaden naar GitHub (en hoe dit te fixen)
Je zit lekker te coderen aan je nieuwe Python trading bot. De backtests lopen soepel, de integratie met je broker API zit snor en je bent bijna klaar voor de live markt.
Dan gebeurt het: je Typt een commando, je ziet een groene vinkje op GitHub en opeens schiet je door een week heen: je hebt je API keys per ongeluk openbaar gemaakt. Je hartslag gaat omhoog. Dit is niet zomaar een bugje; dit is een direct veiligheidsrisico voor je kapitaal.
Gelukkig is dit één van de meest gemaakte fouten onder developers en traders.
Het overkomt de besten. Het goede nieuws? Je kunt het snel fixen, je account beveiligen en je portfolio beschermen. In deze handleiding loop ik je stap voor stap door het herstelproces, specifiek voor algoritmische trading setups met Python, brokers zoals Interactive Brokers of Binance, en backtesting tools zoals Backtrader of Zipline.
Wat je nodig hebt voor de directe actie
Voordat je in de paniek-modus schiet, verzamel je eerst de juiste tools.
Je hebt toegang nodig tot je GitHub account, een terminal of command prompt op je computer, en je broker dashboard. Zorg dat je inlogt met tweefactorauthenticatie (2FA) als je die nog niet hebt aanstaan. Verder is het handig om een notitieblok bij de hand te hebben. Je gaat straks nieuwe keys genereren en oude keys revoken.
Als je deze sleutels kwijtraakt, ben je je toegang tot je API tijdelijk kwijt. Plan ongeveer 30 tot 45 minuten voor deze operatie, inclusief het wachten op bevestigingsmails van je broker. Benodigdheden op een rij:
- Een GitHub account met toegang tot de repository.
- Je broker account (bijv. Interactive Brokers, Binance, of Kraken).
- Een Python-omgeving (lokaal) om je environment variables bij te werken.
- Een terminal (Terminal op macOS, PowerShell of CMD op Windows).
Stap 1: De schade beperken op GitHub
Als je net je API key hebt gecommit, staat die nu in je Git history.
Dit betekent dat niet alleen de huidige versie, maar ook eerdere versies de keys bevatten. De eerste stap is het verwijderen van de keys uit je huidige bestanden en het ontoegankelijk maken van de history.
Open je repository op GitHub. Ga naar het bestand waar de key in staat (vaak een .env bestand, config.py, of requirements.txt). Klik op het prullenbak-icoon om het bestand direct te verwijderen. Commit deze wijziging met de message "Remove exposed API keys".
- Installeer git filter-repo:
pip install git-filter-repo - Clone je repo opnieuw als je hem al had gepulled.
- Run:
git filter-repo --replace-text <(echo "YOUR_API_KEY==>REDACTED")
Dit is een eerste hulp, maar het haalt de keys niet uit je history.
Voor de volledige verwijdering uit je history heb je een tool nodig zoals BFG Repo-Cleaner of git filter-repo. Gebruik de volgende commando's in je terminal (vervang 'YOUR_API_KEY' door de daadwerkelijke key die je per ongeluk hebt geüpload): Dit duurt ongeveer 2 tot 5 minuten, afhankelijk van de grootte van je repository. Veelgemaakte fout: vergeten om je local repo te pullen voordat je de filter runt, waardoor je oude data overschrijft.
Stap 2: De repository forceren en schoonmaken
Nu de lokale geschiedenis is schoongemaakt, moet je deze wijzigingen naar GitHub pushen.
Omdat je de geschiedenis herschrijft, is een geforceerde push nodig. Dit klinkt heftig, maar het is precies wat je nu moet doen. Gebruik dit commando in je terminal: Let op: dit duurt meestal 1 tot 3 minuten.
git push origin --force --all
Als je teamleden hebt, moeten zij hun lokale repo ook opnieuw clonen of rebasen, anders krijgen ze conflicts. Veelgemaakte fout: je teamleden proberen te pushen zonder te weten dat de history is aangepast, waardoor oude keys weer terugkomen.
Controleer daarna direct op GitHub of het bestand echt weg is. Ververs de pagina en check de commits.
Als je de key nog ziet, herhaal dan stap 1 met een exacte match van de key in je filter.
Stap 3: Revoken van je oude API keys bij de broker
GitHub is schoon, maar de key is nog steeds geldig. Iemand met toegang tot je repository (of een fork) kan deze nog steeds gebruiken om trades uit te voeren of data te stelen.
Je moet de key onmiddellijk ongeldig maken. Log in bij je broker dashboard. Voor Interactive Brokers ga je naar User Settings > API Keys. Voor Binance ga je naar API Management.
Zoek de specifieke key die je hebt geüpload en klik op "Revoke" of "Verwijderen". Dit proces is instant bij de meeste brokers, maar het kan 5 tot 10 minuten duren voordat de API calls echt falen.
Veelgemaakte fout: alleen de key verwijderen uit je Python-code zonder deze te revoken.
De key blijft actief totdat je dit handmatig doet. Zorg ook dat je eventuele IP-restricties verwijdert als je die had ingesteld, zodat je geen toegang blokkeert bij het opnieuw instellen.
Stap 4: Nieuwe keys genereren en veilig opslaan
Je oude keys zijn gecompromitteerd, dus tijd voor nieuwe. Ga terug naar je broker dashboard en genereer een nieuwe API Key en Secret Key.
Gebruik geen oude namen; geef ze een unieke label zoals "TradingBot_Production_2024". Sla de nieuwe key direct op in een veilige locatie, zoals een password manager (bijv. 1Password of Bitwarden).
- Voorbeeld inhoud van .env:
API_KEY=nieuwe_key_hier - Voorbeeld inhoud van .env:
API_SECRET=nieuwe_secret_hier
Voor je Python trading bot gebruik je environment variables veilig. Maak een .env bestand aan in je projectmap (voeg het toe aan je .gitignore!). Laad deze in je Python script met de python-dotenv library: load_dotenv().
Dit voorkomt dat keys ooit weer in je code belanden. Tijdindicatie: 5 minuten voor genereren en opslaan.
Stap 5: Je Python-omgeving bijwerken en testen
Met de nieuwe keys is het tijd om je trading bot up-to-date te maken. Open je Python script en vervang de oude keys door de environment variables.
Gebruik geen hardcoded strings meer. Test je setup lokaal met een backtest in een gesimuleerde omgeving.
- Veelgemaakte fout: vergeten om je .env bestand toe te voegen aan .gitignore. Check dit met:
git status. - Veelgemaakte fout: API rate limits niet testen. Je nieuwe key heeft vaak dezelfde limieten, maar controleer dit bij je broker.
Gebruik een tool als Backtrader of een paper trading account bij je broker. Voer een eenvoudige order uit (bijv. een limit order van 0.01 BTC) om te controleren of de authenticatie werkt. Dit duurt 10 tot 15 minuten. Zorg dat je risicomanagement parameters (zoals stop-loss en position sizing) opnieuw valideert met de nieuwe keys, vooral als je bot live gaat.
Stap 6: Verificatie-checklist en preventie voor de toekomst
Om zeker te weten dat alles veilig is, loop je deze checklist af. Dit duurt ongeveer 5 minuten en voorkomt herhaling.
- ✅ GitHub history is schoon: check de commit log op rode vlaggen.
- ✅ Oude keys zijn gerevoked: log in bij je broker en bevestig dat de oude key niet meer werkt.
- ✅ Nieuwe keys zijn gegenereerd en opgeslagen in een password manager.
- ✅ .env staat in .gitignore: voeg het toe als het er niet staat.
- ✅ Python script draait zonder errors op de nieuwe keys.
- ✅ Je team is geïnformeerd (als je samenwerkt) over de force push.
Om dit in de toekomst te voorkomen, installeer je een pre-commit hook die zoekt naar API keys. Gebruik tools zoals git-secrets of truffleHog. Deze scannen je commits voordat ze worden gepushed.
Kosten: gratis, tijd om in te stellen: 15 minuten. Een andere tip: gebruik aparte keys voor development en productie.
Bij brokers zoals Binance kun je meerdere keys maken met verschillende permissions (bijv. alleen lezen voor backtesting). Dit beperkt de schade als er weer iets misgaat. Als je eenmaal bent hersteld, neem even een adem. Dit overkomt iedereen die serieus met algorithmic trading en Python bezig is. Met deze stappen ben je weer veilig en kun je verder met wat echt telt: je strategie verbeteren en winstgevend handelen. Heb je hulp nodig bij de keuze voor een platform? Bekijk dan welke broker de beste documentatie voor Python heeft.
