docker ndërtoj args - ndërtoj args docker - docker ndërtoj ndërtoj arg

Docker Build Args: Vektori i Fshehur për Rrjedhjet Sekrete në Imazhe

Ndërto Args: Komoditet që mund të kompromentojë sigurinë

Argumentet e ndërtimit të Docker e bëjnë të lehtë kalimin e vlerave të konfigurimit në kohën e ndërtimit, por ato vijnë me një kosto që shpesh anashkalohet: këto argumente vazhdojnë në meta të dhënat dhe shtresat e imazhit. Zhvilluesit shpesh supozojnë se këto vlera zhduken pas ndërtimit, por në realitet, udhëzimet e ndërtimit të argumenteve të Docker i përfshijnë ato në historikun e imazhit të Docker.

⚠️Shembull i pasigurt, vetëm për qëllime edukative. Mos e përdorni në prodhim.

FROM node:18 ARG API_KEY=my-secret-key RUN echo "API_KEY=$API_KEY" > /app/config.txt 

Kushdo që vrapon historia e dockerit or inspektimi i dokerit do të gjejë API_KEY vlera e ngulitur në meta të dhënat e imazhit. Kjo ndodh sepse udhëzimi i Docker build build arg commitçdo hap ndërtimi si një shtresë e përhershme.

Versioni i sigurt:

# Use Docker BuildKit secrets instead of ARG # docker build --secret id=api_key,src=./api.key . FROM node:18 RUN --mount=type=secret,id=api_key cat /run/secrets/api_key > /app/config.txt 

Shënim edukativ: Shmangni injektimin e sekreteve përmes argumenteve të ndërtimit të Docker. Përdorni –sekrete montimet e ofruara nga BuildKit për të dhëna të ndjeshme; ato nuk qëndrojnë kurrë në shtresa ose meta të dhëna.

Si vazhdojnë sekretet në shtresa dhe meta të dhëna

Çdo udhëzim në një Dockerfile krijon një shtresë të re imazhi. Edhe kur mbishkruani ose fshini skedarët, shtresat e mëparshme mbeten në memorien e përkohshme. Kjo është arsyeja pse sekretet e injektuara me Docker build args ose build args Docker vazhdojnë për një kohë të pacaktuar.

⚠️Shembull i pasigurt, vetëm për qëllime edukative. Mos e përdorni në prodhim.

FROM python:3.10 ARG GITHUB_TOKEN=ghp_ABC123TOKEN RUN pip install private-package --extra-index-url https://user:$GITHUB_TOKEN@pypi.example.com 

Përdorim ARG në këtë mënyrë e ngulisim tokenin në shtresën e imazhit, të dukshme përmes inspektimi i imazhit të dockerit ose të nxirren nga memoria e përkohshme. Versioni i sigurt:

# Secure alternative using BuildKit secrets # docker build --secret id=gh_token,src=.secrets/token.txt . FROM python:3.10 RUN --mount=type=secret,id=gh_token pip install private-package --extra-index-url https://pypi.example.com 

Shënim edukativ: Në përdorimin e tij, vlerat e ndjeshme mbeten në histori. Përdorni montime sekrete kalimtare për të mbrojtur tokenët dhe kredencialet.

Keqkonfigurime të zakonshme në CI/CD Pipelines

In modern pipelines, zhvilluesit shpesh kalojnë sekrete përmes CI/CD mjedise që përdorin argumente Docker ose memorje të përbashkëta. Ky zakon zbulon sekrete në log-e, ekzekutues dhe memorje të regjistrit. Me vrapues të përbashkët në Veprimet GitHub, GitLab CI, ose Jenkins, këto sekrete mund të përhapen lehtësisht në punë të palidhura.

⚠️Shembull i pasigurt, vetëm për qëllime edukative. Mos e përdorni në prodhim.

# Never expose real tokens, credentials, or internal URLs in pipelines - name: Build image   run: docker build -t app --build-arg TOKEN=${{ secrets.API_TOKEN }} . 

Sekreti përfundon në regjistrat e ndërtimit dhe metadatat e imazheve, duke shkelur parimet e privilegjit më të vogël. Versioni i sigurt: 

# Secure build command using BuildKit secret mount - name: Secure Docker build   run: docker buildx build --secret id=api_token,src=.secrets/api_token.txt . 

Shënim edukativ: Shmangni –ndërtimi-arg për sekrete. Në CI/CD, sekretet nuk duhet të kalojnë kurrë përmes variablave ose regjistrave të mjedisit. Gjithmonë preferoni montimet sekrete të përkohshme.

Praktikat më të Mira për të Parandaluar Ekspozimin Sekret

Parandalimi i ekspozimit sekret fillon duke pranuar që argumentet e ndërtimit të Docker janë publike nga dizajni. Ato janë të shkëlqyera për konfigurim (si etiketat e versionit ose flamujt e veçorive), por jo për kredencialet.

Praktikat më të mira

  1. Përdorni BuildKit — sekret për të dhëna të ndjeshme.
  2. Mos i përcaktoni kurrë sekretet nëpërmjet ARG ose ENV.
  3. Shtoj .zili, sekretet/dhe konfiguro/ drejtoritë për të .dockerignore.
  4. Zbatoni ndërtime me shumë faza për të izoluar fazat private.
  5. Pastro memorjet e përkohshme pas fazave të ndjeshme të ndërtimit.
  6. Validoni metadatat e imazhit me historinë e Docker para publikimit.

Lista e Kontrollit Mini Parandaluese

  • Auditoni të gjitha skedarët Docker për ndërtimi i argumenteve Docker Përdorimi.
  • Zëvendësoni kredencialet me BuildKit –sekrete.
  • Siguroj .dockerignore përjashton skedarët e ndjeshëm.
  • Sanitize CI/CD variablat e mjedisit.
  • Automatizoni skanimin sekret përpara se të dërgoni imazhe.

Shënim edukativ: Nëse një vlerë kalon nëpër një argument ndërtimi të Docker, ajo bëhet e përhershme. Përdorni montime sekrete dhe faza ndërtimi të izoluara për të mbrojtur të dhënat e ndjeshme.

Zbulimi i përdorimit të pasigurt të Build Args para vendosjes

Skanimi i automatizuar është thelbësor për të identifikuar modelet e rrezikshme të ndërtimit të argumenteve të Docker përpara se një imazh të shtyhet në prodhim. Mjete si I parëndësishëm, Hadolintdhe Xygeni mund të zbulojë kredencialet e ngulitura në Dockerfiles ose shtresa të imazhit.

Fragment funksional, me kontekst dhe parmakë kontrolli

# CI/CD guardrail: pre-deployment Dockerfile security scan - name: Dockerfile security scan   run: trivy config --severity HIGH, CRITICAL --ignore-unfixed. 

Ky hap vepron si një kontroll parandalues, duke bllokuar udhëzimet e pasigurta të ndërtimit të argumenteve të Docker para vendosjes.

Shënim edukativ: Integroni skanimin e Dockerfile si një detyrë të detyrueshme CI/CD fazë. Mjetet e automatizuara ndihmojnë në zbatimin e higjienës së ndërtimit të qëndrueshme dhe të sigurt.

Si mbron Xygeni nga rrjedhjet e sekreteve gjatë kohës së ndërtimit

Xygeni Sekretet e Sigurisë Ofron zbulim të specializuar për keqpërdorimin e argumenteve të Docker. Ai identifikon përkufizimet e pasigurta të ARG-së, gjurmon vlerat sekrete në të gjitha fazat e ndërtimit dhe sinjalizon kredencialet e mbetura në meta të dhënat e imazhit ose shtresat e ruajtura në memorje. Duke u integruar me tuajin CI/CD pipeline, ai zbaton politikat e sigurisë së ndërtimit të arg-ut të Docker para bashkimeve ose lëshimeve.

Snipazh funksional, shembull i zbatimit kontekstual

# Secure enforcement of Docker build arg usage - name: Xygeni Docker ARG enforcement   run: dotnet xygeni enforce --rules dockerfile,secrets,build --fail-on-risk 

Shto këtë punë në listën tënde të punës pipelineFaza e validimit për mbrojtje të vazhdueshme.

Shënim edukativ: Xygeni zbaton automatikisht praktikat e sigurta të Docker, duke parandaluar që konfigurimet e rrezikshme në kohën e ndërtimit të rrjedhin sekrete nëpër mjedise.

Përfundimi: Docker i Build Args nuk duhet të trajtojë kurrë sekrete

Argumentet e ndërtimit të Docker janë një shpatë me dy tehe, të përshtatshme për konfigurim, por të rrezikshme për sekretet. Çdo vlerë e Docker-it që injektoni mund të vazhdojë në meta të dhëna, historikun e imazheve ose në memorjet e përkohshme.
Mbroni ndërtimet tuaja duke:

  • Duke përdorur BuildKit –sekrete për kredencialet.
  • Izolimi i të dhënave të ndjeshme në ndërtime me shumë faza.
  • Duke skanuar për vlera të rrjedhura para vendosjes.
  • Zbatimi i politikave të sigurisë përmes Xygeni Code Security.

Ndërtimi juaj pipeline është aq i sigurt sa sekretet që nuk i ekspozoni. Trajtoni çdo argument ndërtimi të Docker si një vektor të mundshëm zbulimi dhe mbylleni atë përpara se sulmuesit ta gjejnë.

mjetet-e-për-përbërjes-së-softuerit-sca-tools
Përparësoni, korrigjoni dhe siguroni rreziqet e softuerit tuaj
Merrni Llogarinë tuaj Falas.
Nuk kërkohet kartë krediti.

Siguroni Zhvillimin dhe Ofrimin e Softuerit tuaj

me Xygeni Product Suite