Args بنائیں: وہ سہولت جو سیکیورٹی سے سمجھوتہ کر سکتی ہے۔
Docker build args تعمیر کے وقت کنفیگریشن اقدار کو منتقل کرنا آسان بناتا ہے، لیکن وہ اکثر نظر انداز کی جانے والی لاگت کے ساتھ آتے ہیں: وہ دلائل امیج میٹا ڈیٹا اور پرتوں میں برقرار رہتے ہیں۔ ڈویلپرز اکثر یہ فرض کرتے ہیں کہ یہ اقدار تعمیر کے بعد ختم ہو جاتی ہیں، لیکن حقیقت میں، بلڈ آرگس ڈوکر ہدایات انہیں ڈوکر امیج ہسٹری میں شامل کرتی ہیں۔
⚠️غیر محفوظ مثال، صرف تعلیمی مقاصد کے لیے۔ پیداوار میں استعمال نہ کریں۔
FROM node:18 ARG API_KEY=my-secret-key RUN echo "API_KEY=$API_KEY" > /app/config.txt کوئی بھی چل رہا ہے۔ ڈاکر کی تاریخ or ڈاکر معائنہ مل جائے گا API_KEY تصویر کے میٹا ڈیٹا میں سرایت شدہ قدر۔ ایسا اس لیے ہوتا ہے کیونکہ ڈوکر بلڈ بلڈ آرگ انسٹرکشن دیتا ہے۔ commits ہر تعمیراتی قدم ایک مستقل پرت کے طور پر۔
محفوظ ورژن:
# 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 تعلیمی نوٹ: Docker build args کے ذریعے راز کو انجیکشن لگانے سے گریز کریں۔ استعمال کریں۔ -خفیہ حساس ڈیٹا کے لیے BuildKit کے ذریعے فراہم کردہ ماونٹس؛ وہ کبھی بھی تہوں یا میٹا ڈیٹا میں برقرار نہیں رہتے ہیں۔
پرتوں اور میٹا ڈیٹا میں راز کیسے برقرار رہتے ہیں۔
ڈاکر فائل میں ہر ہدایت ایک نئی تصویری پرت بناتی ہے۔ یہاں تک کہ جب آپ فائلوں کو اوور رائٹ یا ڈیلیٹ کرتے ہیں، تو پہلے کی پرتیں کیشے میں رہتی ہیں۔ یہی وجہ ہے کہ ڈوکر بلڈ آرگس یا بلڈ آرگس ڈوکر کے ساتھ لگائے گئے راز غیر معینہ مدت تک برقرار رہتے ہیں۔
⚠️غیر محفوظ مثال، صرف تعلیمی مقاصد کے لیے۔ پیداوار میں استعمال نہ کریں۔
FROM python:3.10 ARG GITHUB_TOKEN=ghp_ABC123TOKEN RUN pip install private-package --extra-index-url https://user:$GITHUB_TOKEN@pypi.example.com کا استعمال کرتے ہوئے ARG اس طرح ٹوکن کو امیج لیئر میں ایمبیڈ کرتا ہے، جس کے ذریعے نظر آتا ہے۔ ڈاکر تصویر کا معائنہ یا کیشے سے نکالا گیا۔ محفوظ ورژن:
# 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 تعلیمی نوٹ: اس کے استعمال میں، حساس اقدار تاریخ میں رہتی ہیں۔ ٹوکنز اور اسناد کی حفاظت کے لیے عارضی خفیہ ماؤنٹس استعمال کریں۔
میں عام غلط کنفیگریشنز CI/CD Pipelines
In جدید pipelines، ڈویلپر اکثر رازوں سے گزرتے ہیں۔ CI/CD Docker args یا مشترکہ کیشز کا استعمال کرتے ہوئے ماحول۔ یہ عادت نوشتہ جات، رنر اور رجسٹری کیچز میں راز کو لیک کرتی ہے۔ میں مشترکہ رنرز کے ساتھ گٹ ہب ایکشنز۔، GitLab CI، یا جینکنز، یہ راز آسانی سے غیر متعلقہ ملازمتوں میں پھیل سکتے ہیں۔
⚠️غیر محفوظ مثال، صرف تعلیمی مقاصد کے لیے۔ پیداوار میں استعمال نہ کریں۔
# Never expose real tokens, credentials, or internal URLs in pipelines - name: Build image run: docker build -t app --build-arg TOKEN=${{ secrets.API_TOKEN }} . راز بلٹ لاگز اور امیج میٹا ڈیٹا میں ختم ہوتا ہے، کم از کم استحقاق کے اصولوں کی خلاف ورزی کرتا ہے۔ محفوظ ورژن:
# Secure build command using BuildKit secret mount - name: Secure Docker build run: docker buildx build --secret id=api_token,src=.secrets/api_token.txt . تعلیمی نوٹ: سے بچیں -بناؤ-آرگ راز کے لئے. میں CI/CD، راز کبھی بھی ماحولیاتی متغیرات یا نوشتہ جات سے نہیں گزرنا چاہئے۔ ہمیشہ عارضی خفیہ پہاڑوں کو ترجیح دیں۔
خفیہ نمائش کو روکنے کے بہترین طریقے
خفیہ نمائش کو روکنا اس بات کو تسلیم کرنے سے شروع ہوتا ہے کہ ڈوکر بلڈ آرگس ڈیزائن کے لحاظ سے عوامی ہیں۔ وہ کنفیگریشن کے لیے بہترین ہیں (جیسے ورژن ٹیگز یا فیچر فلیگ)، لیکن اسناد کے لیے نہیں۔
بہترین طریقوں
- BuildKit استعمال کریں۔ - خفیہ حساس ڈیٹا کے لیے۔
- کبھی بھی ARG یا ENV کے ذریعے راز کی وضاحت نہ کریں۔
- شامل کریں .env, راز/، اور تشکیل/ کو ڈائریکٹریز .dockerignore.
- ملٹی اسٹیج بلڈز کا اطلاق کریں۔ نجی مراحل کو الگ تھلگ کرنا۔
- کیچز کو صاف کریں۔ تعمیر کے حساس مراحل کے بعد۔
- تصویری میٹا ڈیٹا کی توثیق کریں۔ شائع کرنے سے پہلے ڈاکر کی تاریخ کے ساتھ۔
منی پریوینٹیو چیک لسٹ
- کے لیے تمام ڈاکر فائلز کا آڈٹ کریں۔ آرگس ڈوکر بنائیں استعمال
- BuildKit کے ساتھ اسناد کو تبدیل کریں۔ -خفیہ.
- اس بات کا یقین .dockerignore حساس فائلوں کو خارج کرتا ہے۔
- صاف کریں CI/CD ماحولیاتی متغیرات
- تصاویر کو آگے بڑھانے سے پہلے خفیہ اسکیننگ کو خودکار کریں۔
تعلیمی نوٹ: اگر کوئی قدر ڈوکر بلڈ بلڈ آرگ سے گزرتی ہے تو یہ مستقل ہوجاتی ہے۔ حساس ڈیٹا کی حفاظت کے لیے خفیہ ماؤنٹس اور الگ تھلگ تعمیراتی مراحل کا استعمال کریں۔
تعیناتی سے پہلے Build Args کے غیر محفوظ استعمال کا پتہ لگانا
کسی تصویر کو پروڈکشن میں دھکیلنے سے پہلے خطرناک ڈوکر بلڈ آرگس پیٹرن کی شناخت کے لیے خودکار اسکیننگ ضروری ہے۔ جیسے اوزار ٹریوی, Hadolint، اور زیجینی Dockerfiles یا تصویری تہوں میں سرایت شدہ اسناد کا پتہ لگا سکتا ہے۔
سیاق و سباق اور کنٹرول گارڈریل کے ساتھ فنکشنل اسنیپٹ
# CI/CD guardrail: pre-deployment Dockerfile security scan - name: Dockerfile security scan run: trivy config --severity HIGH, CRITICAL --ignore-unfixed. یہ قدم حفاظتی کنٹرول کے طور پر کام کرتا ہے، تعیناتی سے پہلے غیر محفوظ بلڈ آرگس ڈوکر ہدایات کو روکتا ہے۔
تعلیمی نوٹ: Dockerfile اسکیننگ کو لازمی طور پر ضم کریں۔ CI/CD مرحلہ خودکار ٹولز مستقل، محفوظ تعمیراتی حفظان صحت کو نافذ کرنے میں مدد کرتے ہیں۔
Xygeni بلڈ ٹائم سیکرٹ لیکس کے خلاف کیسے حفاظت کرتا ہے۔
زیجینی راز کی حفاظت Docker args کے غلط استعمال کے لیے خصوصی پتہ لگاتا ہے۔ یہ غیر محفوظ ARG تعریفوں کی نشاندہی کرتا ہے، تعمیراتی مراحل میں خفیہ اقدار کا پتہ لگاتا ہے، اور تصویری میٹا ڈیٹا یا کیشڈ پرتوں میں بقایا اسناد کو جھنڈا لگاتا ہے۔ آپ کے ساتھ ضم کر کے CI/CD pipeline، یہ انضمام یا ریلیز سے پہلے ڈوکر بلڈ بلڈ آرگ سیکیورٹی پالیسیوں کو نافذ کرتا ہے۔
فنکشنل اسنیپٹ، سیاق و سباق کے نفاذ کی مثال
# Secure enforcement of Docker build arg usage - name: Xygeni Docker ARG enforcement run: dotnet xygeni enforce --rules dockerfile,secrets,build --fail-on-risk اس نوکری کو اپنی ملازمت میں شامل کریں۔ pipelineمسلسل تحفظ کے لیے توثیق کا مرحلہ۔
تعلیمی نوٹ: Xygeni محفوظ ڈوکر پریکٹس کو خود بخود نافذ کرتا ہے، جو کہ خطرناک بلڈ ٹائم کنفیگریشنز کو ماحول میں راز افشا ہونے سے روکتا ہے۔
پایان لائن: Args Docker کی تعمیر کبھی بھی راز کو ہینڈل نہیں کرنا چاہئے
Docker build args ایک دو دھاری تلوار ہے، ترتیب کے لیے آسان، راز کے لیے خطرناک ہے۔ ہر بلڈ ڈوکر ویلیو جو آپ لگاتے ہیں وہ میٹا ڈیٹا، امیج ہسٹری، یا کیچز میں برقرار رہ سکتی ہے۔
اپنی تعمیرات کی حفاظت کریں بذریعہ:
- BuildKit استعمال کرنا -خفیہ اسناد کے لیے
- ملٹی اسٹیج بلڈز میں حساس ڈیٹا کو الگ کرنا۔
- تعیناتی سے پہلے لیک شدہ اقدار کو اسکین کرنا۔
- کے ذریعے سیکورٹی پالیسیوں کو نافذ کرنا Xygeni Code Security.
آپ کی تعمیر pipeline صرف اتنا ہی محفوظ ہے جتنا وہ راز جو آپ بے نقاب نہیں کرتے۔ ہر Docker build build arg کو ممکنہ انکشاف ویکٹر کے طور پر سمجھیں، اور حملہ آوروں کو تلاش کرنے سے پہلے اسے بند کر دیں۔






