Hogyan működnek a Docker titkai, és hol használják vissza őket a fejlesztők?
A Docker titkait az olyan érzékeny adatok biztonságos kezelésére vezették be, mint az API-kulcsok, adatbázis-jelszavak és tokenek. Ezek úgy működnek, hogy a titkokat fájlokként csatolják a /run/titkok egy konténeren belül, csak a konténeres szolgáltatás számára elérhető. Ez a mechanizmus legalábbis elméletben távol tartja a titkokat a környezeti változóktól és a naplóktól. A probléma akkor kezdődik, amikor a fejlesztők megkerülik ezt a mechanizmust. A Docker Compose titkos kódok használata helyett a megfelelő funkciót, a titkos kódok gyakran fixen be vannak kódolva dockerfile, commitGitbe mentve, vagy környezeti változókon keresztül injektálva. Ezek a gyorsbillentyűk sebezhetővé teszik a titkos kódokat a véletlenszerű naplókon, konténerrétegeken vagy verzióelőzményeken keresztüli kiszivárgással szemben.
# Risky ENV DB_PASSWORD=mysecretpassword ⚠️ Nem biztonságos példa, ne használja éles környezetben
Miután ez a sor hozzáadásra került, beépül a képbe. Bárki, aki hozzáfér a képhez (build cache, registry vagy CI/CD naplók) kinyerhetik. Ami még rosszabb, ez a minta gyakran észrevétlen marad az értékelések során, mert „egyszerűen működik”.
Docker Compose titkok és a megosztott konfigurációk rejtett kockázatai
A Docker Compose leegyszerűsíti a többkonténeres alkalmazásokat, de Docker Composite titkok rejtett kockázatokkal jár. A fejlesztők gyakran megosztják Docker Compose.yml or .NS fájlok csapatok és környezetek között Git, Slack vagy megosztott meghajtók segítségével.
services: app: image: myapp secrets: - db_password secrets: db_password: file: ./secrets/db_password.txt ⚠️ Szemléltető példa, ne tartalmazzon valódi titkokat a verziózott fájlokban
A probléma? Ezek Docker Compose titkok A hivatkozások helyi fájlokat feltételeznek, de a gyakorlatban ezek a fájlok nem biztonságosan verziózottak vagy terjesztettek. A titkok beszivárognak a Git repókba, megjelennek a pull requests, vagy más mappákba másolódnak. Az a feltételezés, hogy „mindannyian tudjuk, hogy nem szabad commit A „titkok” nem biztonsági irányelv.
Még rosszabb, hogy az olyan környezetek, mint a színpadra állítás és a gyártás, újra felhasználhatják ugyanazt a dokkoló-compose.yml, ami hamis elkülönülési érzetet kelt. Az egyik rosszul van konfigurálva .NS fájlt, és az éles titkokat egy tesztkörnyezetbe injektálják.
CI/CD Pipelines: Ahol a Docker titkos kezelése hibás
In CI/CD, Docker titkok szétesik, ha nem elszigetelt. A titkok gyakran kiszivárognak három helyen: naplókban, képrétegekben és megosztott futtatókban.
Naplók: CI lépések nyomtatása echo $TITKOS_KEY a problémák hibakereséséhez. De ezeket a naplókat tárolják, néha nyilvánosan is. Eszközök, mint például GitHub-műveletek or GitLab naplók napokig vagy hetekig történő tárolása.
KéprétegekHa egy Dockerfile titkos kódot ad hozzá a build során:
RUN echo "$SECRET_KEY" > /app/config.txt ⚠️ Nem biztonságos példa, ez felfedi a képrétegekben található titkokat
Hogy Docker titok most egy képréteg része. Még ha később törli is a fájlt, az előző réteg megmarad a képelőzményekben.
Megosztott futók: Sok CI/CD A platformok megosztott futtatókat használnak. Ha a titkok hatóköre nincs megfelelően meghatározva vagy megtisztítva, más buildek hozzáférhetnek hozzájuk. Ami még rosszabb, a titkok néha alapértelmezés szerint környezeti változóként kerülnek átadásra az összes lépésnek.
Docker biztonságossá tétele kódban, Pipelineés nyilvántartások
Lezárni Docker titkoka fejlesztőcsapatoknak rétegzett védelemre van szükségük:
- Használjon titkos menedzsereket mint például az AWS Secrets Manager, a HashiCorp Vault vagy a Doppler. Ezek az eszközök rotálnak és biztonságosan injektálnak titkos kódokat a konténereidbe futásidőben.
- Hatókörök korlátozásaSoha ne tegyen közzé éles titkokat fejlesztési/tesztelési környezetekben. Használjon szerepköralapú hozzáférés-vezérlést (RBAC) annak korlátozására, hogy kik adhatnak be vagy olvashatnak titkokat.
- Kerüld az ENV változókat a titkos értékekhez. Használat Docker titok köteteket vagy csatolási titkokat explicit módon fájlokként.
- Építések tisztításaGyőződjön meg arról, hogy a titkos kódok nincsenek beépítve a képekbe, vagy köztes fájlokban maradnak.
- Konténerek és adattárak szkenneléseHasználjon olyan eszközöket, amelyek képeket, git előzményeket és CI/CD kiszivárgott titkok konfigurációi.
A Docker titkos kódjának kiszivárgásának megakadályozására vonatkozó legjobb gyakorlatok
- Efemer titkok: Egyszer használatos titkos kódok generálása a CI futtatása során. Ezek lejárnak, és ellopás esetén nem használhatók fel újra.
- Lepecsételt titkokHasználj Kubernetes Sealed Secrets vagy SOPS titkosítást a Gitben található titkok titkosításához. Ez biztosítja a titkok biztonságos verziózását.
- CI/CD Politikák: Olyan szabályok betartatása, mint például nincsenek titkok a Dockerfile-ban, a titkos észlelésen alapuló blokképítések és a naplóhasználat Docker titkok mert pipeline.
- Pre-commit hooksBlokk committitkokkal olyan eszközök használatával, mint git-titkok or detect-secrets.
- Változatlan infrastruktúraNe módosítsa a titkos kódokat a konténerekben. Építse újra és telepítse újra az újjal. Docker titkok helyette.
Összegzés
Amikor helytelenül használják, Docker titkok biztonsági elem helyett kötelezettséggé válik. Docker Composite titkok szivárog a YAML fájlokon keresztül CI/CD pipelineHa naplókban vagy rétegekben található titkokat fedünk fel, a kockázatok valósak és megelőzhetők.
Olyan eszközök használatával, mint pl Xygeni, a csapatok képesek észlelni a kitettségeket titkok korai bevezetése, titkoskezelési szabályzatok érvényesítése, valamint biztonsági eltérések keresése a kódban, a konténerekben és a pipelines. Kényeztesd a D-detocker titok stratégia kritikus infrastruktúraként. Biztosítsa úgy, ahogy gondolja.






