Titkok rejtett megőrzése a Docker rétegekben – Dockerfile Secrets
Minden Docker-build megváltoztathatatlan rétegeket hoz létre. Még ha „töröl” is egy titkos kulcsot, a Docker megőrzi a korábbi réteget a képfájl előzményeiben. Ezért veszélyesek a Dockerfile titkai, és különösen a Dockerfile titkok környezeti változói: a hitelesítő adatai vagy a privát kulcsok beágyazva maradhatnak a régi rétegekbe, amelyek teljes mértékben helyreállíthatók a Docker előzményein vagy az exportált képfájlokon keresztül.
⚠️Nem biztonságos példa, csak oktatási célokra. Ne használja éles környezetben.
FROM ubuntu:20.04 ENV AWS_SECRET_KEY="AKIAXXXXSECRET" RUN echo $AWS_SECRET_KEY > /tmp/key.txt Ez a példa érzékeny adatokat ágyaz be egy Env változó. A titkos kód véglegesen tárolódik a réteg metaadataiban, és a képelőzményekből visszaállítható. Biztonságos verzió:
# Use Docker BuildKit secret mounts # docker build --secret id=aws_key,src=./aws.key . FROM ubuntu:20.04 RUN --mount=type=secret,id=aws_key cat /run/secrets/aws_key > /tmp/key.txt Oktatási megjegyzés: Kerüld a titkos kódok Docker rétegekben való tárolását. Használd a BuildKit-et. -titkos biztonságosan kezelni Dockerfile titkos kód adatok építés közben, nyomok nélkül.
Gyakori fejlesztői buktatók: ARG, ENV és fixen kódolt titkok
A fejlesztők gyakran leak secrets keresztül Dockerfile titkos környezeti változók, .env fájlokat, ill fixen kódolt hitelesítő adatokMiután ezek az értékek beépültek egy képbe, azokat nem lehet biztonságosan eltávolítani.
⚠️Nem biztonságos példa, csak oktatási célokra. Ne használja éles környezetben.
ARG GITHUB_TOKEN=ghp_xxxTOKEN ENV DB_PASSWORD="p@ss123" COPY .env /app/.env Ezek az utasítások közvetlenül a hitelesítő adatokat teszik elérhetővé, és másolják azokat. .NS a képbe, így láthatóvá válik bárki számára, aki kihúzza vagy megvizsgálja. Biztonságos verzió:
# .dockerignore should include .env, secrets/, and config/* FROM mcr.microsoft.com/dotnet/runtime:8.0 COPY app/ /app/ RUN --mount=type=secret,id=db_pass cat /run/secrets/db_pass > /tmp/db.txt Oktatási megjegyzés: A Dockerfile secrets környezeti változóit alapértelmezés szerint nem biztonságosként kell kezelni. .docker figyelmen kívül hagyni hogy kizárja az érzékeny fájlokat és dinamikusan betöltse a hitelesítő adatokat futásidőben, ne pedig buildidőben.
Titkok nyomában CI/CD Pipelines
A titkok gyakran kiszivárognak automatizálás révén. Gyorsítótárak létrehozása, rosszul konfigurált beállításjegyzékek vagy pipeline A naplók határozatlan ideig megőrizhetik a Dockerfile titkos adatait.
⚠️Nem biztonságos példa, csak oktatási célokra. Ne használja éles környezetben.
# Never expose real tokens, credentials, or internal URLs in pipelines - name: Build image run: docker build -t myapp --build-arg TOKEN=${{ secrets.API_TOKEN }} . Ez használ –build-arg, a titkos kód beágyazása a kép metaadataiba. Bárki, aki rendelkezik hozzáféréssel a rendszerleíró adatbázishoz, kinyerheti azt. Biztonságos verzió:
# Functional snippet with control guard - name: Secure build run: docker buildx build --secret id=api_token,src=.secrets/token.txt . Oktatási megjegyzés: Kerüljük –build-arg titkokért. BuildKit titkos biztosítja, hogy a titkokat csak a memóriában használják a build során, soha nem tárolják rétegekben.
Gyakorlati megelőzés: Tiszta buildek és biztonságos titkoskezelés
A tiszta buildek a biztonságos Docker-gyakorlatok alapját képezik. A biztonságos munkafolyamat korán kiküszöböli a titkos adatokat, és megakadályozza a véletlen visszatartást a köztes rétegekben.
Best Practices
- Mindig használd a BuildKit-et -titkos felmászik érzékeny adatokhoz.
- Ne használjon ARG vagy ENV karaktereket hitelesítő adatokként.
- hozzáad .NS, titkok/, config/ nak nek .docker figyelmen kívül hagyni.
- Ideiglenes fájlok törlése a végső képalkotási fázisok előtt.
- Izolált build gyorsítótárak környezetenként a keresztszennyeződés elkerülése érdekében.
Mini megelőző ellenőrzőlista
- Az összes Dockerfile titkos környezeti változó naplózása.
- Győződjön meg arról, hogy nem jelennek meg hitelesítő adatok Env, ARGvagy COPY.
- Használj BuildKit titkos csatolásokat privát adatokhoz.
- Nyomás előtt szkenneld be a képeket.
- érvényesít .docker figyelmen kívül hagyni kizárja a privát fájlokat.
Oktatási megjegyzés: A Docker rétegek megváltoztathatatlanok. Mindig tiszta, rövid ideig használható buildeket kell végrehajtani, és a titkokat a képfájl előzményein kívül kell tartani.
Leleplezett titkok felderítése automatizált szkenneléssel
Az automatikus szkennelés észleli a szivárgást Dockerfile titkok a telepítés előtt. Az olyan eszközök, mint a Trivy, a Xygeni vagy a GitHub Advanced Security, képesek felismerni a képrétegekben található titkokat vagy a nem biztonságos Dockerfile titkok környezeti változóit.
Funkcionális kódrészlet, kontextuális végrehajtási példa
# CI/CD guardrail to detect exposed secrets - name: Scan image run: trivy image myapp: latest --severity HIGH, CRITICAL --ignore-unfixed Adja hozzá ezt a lépést a következőhöz: CI/CD pipelinebiztonsági kapuk részeként.
Oktatási megjegyzés: Kombinálja a statikus elemzést és a konténerszkennelést a fixen kódolt hitelesítő adatok vagy a nem biztonságos Dockerfile utasítások telepítés előtti észleléséhez.
Hogyan segít a Xygeni a build biztonságossá tételében? Pipeline
Xygeni Titkok Biztonság A Docker build védelmét a Docker-fájlok és build-konfigurációk elemzésével erősíti meg Docker-titkok, nem biztonságos ENV/ARG-használat és a képfájl metaadataiban található nyilvánosságra került hitelesítő adatok szempontjából. Integrálódik a következőbe: CI/CD pipelines, tiszta, megfelelő buildek kikényszerítése és a nem biztonságos összetevők blokkolása a kiadás előtt.
Funkcionális kódrészlet, korlát példa
# Secure enforcement example - name: Enforce Dockerfile secret hygiene run: dotnet xygeni enforce --rules dockerfile,secrets,build --fail-on-risk Oktatási megjegyzés: Xygeni automatikusan érvényesíti a biztonságos build higiéniát, segítve a csapatokat a megfelelőség fenntartásában és a Docker rétegekben való titkos információszivárgás megelőzésében.
Következtetés: Állítsa le a Dockerfile Secrets környezeti változóiból származó szivárgásokat
A Docker réteges struktúrája sosem felejt. Ha egyszer beágyaz egy titkos kulcsot, az a „eltávolítás” után is megmarad. A rosszul konfigurált Dockerfile titkos kulcsok, Dockerfile titkos változók és a nem biztonságos Dockerfile titkos környezeti változók bizalmas adatokat csapdába ejtenek a buildekben és a beállításjegyzékekben.
Hogy megvédje a pipelines:
- Soha ne használja ARG or Env hitelesítő adatokért.
- Mindig építs a következőkkel: -titkos.
- Érzékeny fájlok kizárása a következőn keresztül: .docker figyelmen kívül hagyni.
- Integrálja az automatizált szkenneléseket és Xygeni Code Security végrehajtás.
A következő átépítésednek nem szabadna továbbvinnie a titkaidat; védd meg őket, mielőtt azok megmaradnának.






