Elke keer dat je een Compose-bestand deelt, bestaan er twee artefacten: het bestand dat je schreef en het bestand dat een tool rendert nadat variabelen zijn vervangen. Het tweede is vaak gevoeliger dan het eerste, en dat is precies wat mensen zonder lezen in een probleemrapport plakken. Als je alleen het bronbestand beoordeelt, beoordeel je het verkeerde document.

Vergelijk wat elke kopie kan bevatten voordat je bepaalt wat er weg moet.

Het gerenderde model is een ander document

Compose lost omgevingsvariabelen op, voegt override-bestanden samen en produceert een effectieve configuratie die een lezer niet meer kan onderscheiden van handmatig geschreven waarden. Een verwijzing zoals een variabelenaam in de bron wordt in de uitvoer het accounttoken zelf. De structuur die het bestand bruikbaar maakt voor diagnose overleeft die transformatie; alles wat er nooit in had mogen staan overleeft die ook.

Render het bestand zelf voordat je het bijvoegt en behandel die uitvoer als het artefact dat je beoordeelt. Als je het niet kunt renderen, kun je niet weten wat je op het punt staat te publiceren.

Geheimen zitten op meer plaatsen dan in het sleutelveld

Begin met het voor de hand liggende: privésleutels, vooraf gedeelde sleutels, tokens, wachtwoorden en verbindings-URL's met ingebedde inloggegevens. Kijk daarna naar alles waarnaar het bestand verwijst, want een verwijzing is geen redactie. Een omgevingsbestand dat in de service is gemount, een configuratiebestand dat van de host is gebonden, een label met een token en een commando-argument met een wachtwoord reizen allemaal mee met de uitrol, zelfs wanneer de YAML er schoon uitziet. Een sleutel die in een variabele met een geruststellende naam is geplakt, is nog steeds een sleutel.

Hostpaden en servicenamen lekken een tweede soort informatie. Een naam van een thuismap, een interne hostnaam of een netwerkbereik kan een persoon of organisatie identificeren zonder één inloggegeven te bevatten, en die context is om dezelfde reden het verwijderen waard.

Een geheimverklaring is niet het geheim

Compose-geheimobjecten scheiden de verklaring van het materiaal: de service krijgt een pad of een doel, en de inhoud leeft elders. De verklaring behouden terwijl het materiaal wordt vervangen is meestal de juiste ruil, omdat de beoordelaar moet zien dat een geheim bestaat en hoe het is gemount. Wat niet mag overleven, is de inhoud zelf.

Labels en opmerkingen verdienen dezelfde behandeling. Een opmerking die zegt welk kluispad de productiesleutel bevat, vertelt een aanvaller waar die moet kijken, ook al staat er geen sleutel in.

Behoud de vorm zodat het bestand nog diagnosticeert

Een redactie die de netwerkmodus, de image-versie of de capaciteitsinstellingen verwijdert, levert een bestand op waarmee niemand kan debuggen. Vervang de gevoelige waarden en behoud de relaties: welke service wat mount, bij welk netwerk die hoort, welk apparaat die nodig heeft. Dat is het deel dat een lezer gebruikt om een ontbrekende route of een niet-beschikbaar apparaat uit te leggen. Het is ook de versie die een collega kan vergelijken met zijn eigen werkende uitrol.

docker compose -f compose.yaml config > rendered.yaml
grep -nE 'PRIVATE_KEY|PASSWORD|TOKEN|PSK|PrivateKey|passphrase' rendered.yaml
wc -l rendered.yaml

Zet de geredigeerde kopie niet in als ware het het werkende origineel. Het is een beschrijving, en een beschrijving die is bewerkt om veilig te lijken, zal op manieren falen die op configuratiefouten lijken.

Als materiaal is blootgesteld, vervang het

Het verwijderen van de bijlage verwijdert niet de kopieën die anderen al hebben gemaakt, en mirrors en caches houden hun eigen kopieën. Gebruik het intrekkings- en vervangingsproces van de uitgever voor alles wat is gelekt, en werk daarna de uitrol bij. De volgorde is belangrijk, want eerst vervangen en later intrekken laat een venster met twee geldige inloggegevens.

Begin in supportthreads met de exacte fout, de image-versie, de netwerkmodus en de ene niet-geheime instelling die ertoe doet. Die combinatie verklaart een ontbrekend apparaat of een kapotte route veel vaker dan de sleutel.

Gerelateerde artikelen