dockerfile secrets - dockerfile secrets környezeti változók

Dockerfile titkok: Miért őrzik meg a rétegek örökre az érzékeny adatait?

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

  1. Mindig használd a BuildKit-et -titkos felmászik érzékeny adatokhoz.
  2. Ne használjon ARG vagy ENV karaktereket hitelesítő adatokként.
  3. hozzáad .NS, titkok/, config/ nak nek .docker figyelmen kívül hagyni.
  4. Ideiglenes fájlok törlése a végső képalkotási fázisok előtt.
  5. 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.

sca-tools-software-composition-elemző-eszközök
Szoftverkockázatok rangsorolása, elhárítása és biztosítása
Szerezd meg az ingyenes fiókodat.
Nem szükséges hitelkártya.

Biztosítsa szoftverfejlesztését és -szállítását

az Xygeni termékcsomaggal