উত্পাদনে ডকার চালানোর সময় কোনটি বিবেচনা করা উচিত সর্বোত্তম এবং বিস্তৃত অনুশীলনগুলি?


42

অবশেষে, আপনি ডকারের সাথে এতটাই প্রেমে পড়েছেন যে আপনি আপনার অনলাইন ব্যবসায়-সমালোচনামূলক উত্পাদন সিস্টেমকে সংবেদনশীল গ্রাহক ডেটা সহ ডকার সোয়ারে স্থানান্তরিত করতে চান। কিছু এমনকি ইতিমধ্যে এটি সম্পন্ন হতে পারে। রুট মোডে চলমান উত্পাদন প্রক্রিয়া নিষিদ্ধ করে এমন নীতি দ্বারা অন্য সংস্থা এটি বহন করতে পারে না।

ডকার উত্পাদন পরিবেশের জন্য বিবেচনা করার জন্য বিল্ডিং ব্লকগুলির চেকলিস্ট কী হতে পারে? তাদের সবার প্রয়োজন নেই, তবে তাদের সবার মূল্যায়ন করা গুরুত্বপূর্ণ।

দাবি অস্বীকার: আমি জানি "বৃহত্তর অন্তহীন তালিকাগুলি" এড়াতে একটি এসই নীতি রয়েছে তবে আমি মনে করি এই চেকলিস্টটি এখন খুব বড় হতে পারে না ... এবং এখনই অন্তহীন।

তো - এই বিল্ডিংগুলি কী কী?

  1. যদি ইতিমধ্যে মোতায়েন না করা হয় তবে উন্নত সুরক্ষা সেটিংস - কঠোর কার্নেল, SELinux ইত্যাদি সহ একটি লিনাক্স হোস্ট সিস্টেম চালানোর কথা বিবেচনা করুন
  2. একটি ক্ষুদ্র ডকার বেস চিত্র যেমন আলপাইন, ব্যস্তবক্স বা এমনকি স্ক্র্যাচ ব্যবহার করা বিবেচনা করুন যেমন একটি খালি বেস চিত্র দিয়ে শুরু করুন
  3. রুট ব্যতীত USER সেটিং ব্যবহার করুন
  4. ইতিমধ্যে ধারককে দেওয়া কার্নেল ক্ষমতাগুলির সঙ্কুচিত সেটটিকে আরও কমাতে সাবধানতার সাথে মূল্যায়ন করুন
  5. আদর্শভাবে স্থিতিশীলভাবে যুক্ত, আপনার প্রক্রিয়াটি চালু করতে প্রতি কন্টেইনারটিতে কেবলমাত্র একটি নির্বাহযোগ্য বাইনারি থাকার কথা বিবেচনা করুন
  6. শেল অ্যাক্সেস পেতে যারা আপনার সিস্টেমটি ভাঙতে চান তারা ভাবতে পারেন তারা আপনার ধারকটিতে সমস্ত শেল অক্ষম রয়েছে কিনা তা জানতে পারেন
  7. মাউন্ট পঠনযোগ্য কেবলমাত্র খণ্ড যেখানে সম্ভব

প্রশ্ন: আর কি?


আমি এটি খুব বিস্তৃত মনে। তবে একই সাথে আমি প্রশ্নটি পছন্দ করেছি। সুতরাং, আমি সম্প্রদায়কে এটি সম্পর্কে সিদ্ধান্ত নিতে দেব :)
ডওয়ানি 33

ট্যাগ devsecopsমানে কি?
030

ঠিক আছে আকর্ষণীয় - devsecops.org/blog/2015/2/15/hat-is-devsecops
030

আপনি ব্যাখ্যা করতে পারেন কেন এটি Consider using a tiny Docker base image, like alpine, busybox or even scratch e.g. start with an empty base imageসুরক্ষা বাড়ায়?
030

3
@ 030 আপনি যত কম ইনস্টল করেছেন, অপ্রয়োজনীয় পরিষেবাদি / সফ্টওয়্যারগুলির থেকে সুরক্ষিত করতে পারেন যা নীচে রক্ষণাবেক্ষণ করা হয় এবং / অথবা সম্ভাব্য শোষণযোগ্য। খালি সর্বনিম্নে নামা সর্বদা আরও ভাল কাজ করবে যেহেতু প্রতিটি ধারক একটি একক পরিষেবা পরিবেশন করতে ব্যবহৃত হবে বলে মনে করা হচ্ছে।
লিওন

উত্তর:


23

যে হোস্টটিতে পাত্রে চালানো হচ্ছে

ডকারের পাত্রে চালিত প্রতিটি নোডে ডকার সুরক্ষা বেঞ্চ চালান https://github.com/docker/docker-bench- সুরক্ষা

ডক পাত্রে চালিত নোডে নিম্নলিখিত কমান্ডটি চালানো:

docker run -it --net host --pid host --cap-add audit_control \
    -e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST \
    -v /var/lib:/var/lib \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v /usr/lib/systemd:/usr/lib/systemd \
    -v /etc:/etc --label docker_bench_security \
    docker/docker-bench-security

চেকগুলির একটি তালিকা ফেরত দেয়:

[INFO] 1 - Host Configuration

[WARN] 1.1  - Ensure a separate partition for containers has been created

[NOTE] 4.2  - Ensure that containers use trusted base images

[PASS] 4.6  - Ensure HEALTHCHECK instructions have been added to the container image

সংগ্রহস্থল README থেকে উদ্ধৃতি:

সুরক্ষার জন্য ডকার বেঞ্চ একটি স্ক্রিপ্ট যা ডকার পাত্রে উত্পাদনে মোতায়েনের আশেপাশে কয়েক ডজন সাধারণ সেরা-অনুশীলনগুলি পরীক্ষা করে। পরীক্ষাগুলি সমস্ত স্বয়ংক্রিয় হয় এবং সিআইএস ডকার সম্প্রদায় সংস্করণ সংস্করণ বেঞ্চমার্ক v1.1.0 দ্বারা অনুপ্রাণিত হয় ।

সুরক্ষা বেঞ্চের দ্বারা প্রতিবেদন করা কিছু সমস্যা সরকারী ডকার সুরক্ষা নিবন্ধটি পড়ে এবং নীচের বিষয়গুলিও গুরুত্বপূর্ণ যে প্রশ্নে সংজ্ঞায়িত বুলেটের সাথে এটির তুলনা করে সমাধান করা যেতে পারে :

  • এসএসএল প্রয়োগ করে ডকার ডেমন সকেটকে সুরক্ষা দিন
  • নোটারি এবং DOCKER_CONTENT_TRUSTভেরিয়েবল ব্যবহার করে সামগ্রী বিশ্বাস

7

ডকারটি এখনও চলছে in

ইন ডেভ বাগগুলি যেমন ঘটবে তেমনি অনিরাপদ বৈশিষ্ট্য যুক্ত হতে পারে, সেখানে স্থাপত্য ত্রুটি থাকতে পারে যা সুরক্ষা লঙ্ঘনের দিকে পরিচালিত করে। এটিকে অবমূল্যায়ন করবেন না! আপনার সিস্টেমটি আজ পুরোপুরি নিরাপদ হতে পারে, তবে পরের সপ্তাহের প্যাচটির সাথে কেউ একটি বাগ খুঁজে পেয়েছে, একটি শোষণ লিখেছেন, এবং হঠাৎ আপনার সিস্টেমটি সম্পূর্ণ উন্মুক্ত।

আপনার অবশ্যই অবধি, সর্বশেষ সংস্করণে আপডেট করবেন না। পরিবর্তে সর্বশেষতম পরীক্ষিত সংস্করণটি ব্যবহার করুন।

ডকার কোনও ভার্চুয়ালাইজেশন নয়

যদি কেউ ডকারের ধারক থেকে পালিয়ে যায় তবে আক্রমণকারী তত্ক্ষণাত্ আসল মেশিনে রয়েছে। ভার্চুয়ালাইজেশনের মতো দ্বিতীয় গেট নেই যা লঙ্ঘন রোধ করবে।

অন্য কোনও প্রোগ্রামের মতো একটি ডকার পাত্রে আচরণ করুন। সর্বনিম্ন সম্ভাব্য ব্যবহারকারীর অধিকার নিয়ে চালান, প্রয়োজনীয় নয় এমন সমস্ত নেটওয়ার্ক ট্র্যাফিক ব্লক করুন, পারফরম্যান্স অনুমতি দিলে পুরো ডকার হোস্টকে ভার্চুয়ালাইজ করুন।

ডকার কোনও সুরক্ষা নেই

ডকারের ধারকগুলির ভিতরে যা কিছু কোড চলছে তা ডকারের প্রশ্ন ছাড়াই চালানো হয়। যে কোনও আক্রমণকারী কেবল তার সফ্টওয়্যারটি ধারকটির ভিতরে ইনস্টল করতে পারে এবং ডকার অন্য যে কোনও কোডের মতো চালাতে পারে।

প্রশ্নটিতে আপনি উল্লিখিত জিনিসগুলি বাদ দিয়ে, কোনও ডকার চিত্র যদি অদ্ভুত কাজ করে তবে অবহিত হওয়ার জন্য মেট্রিক্স এবং সতর্কতাগুলি ব্যবহার করে বিবেচনা করুন। হঠাৎ, চলমান সিপিইউ স্পাইক কি আছে? প্রোগ্রামটি হঠাৎ নেটওয়ার্ক পোর্টগুলি স্ক্যান করছে? সন্দেহজনক ডিস্ক অ্যাক্সেস আছে? এর মধ্যে যদি কিছু ঘটে থাকে তবে আপনার একটি বিজ্ঞপ্তি পাওয়া উচিত। এই জিনিসগুলি পরিমাপ করার জন্য অনেকগুলি সরঞ্জাম উপলব্ধ রয়েছে, আপনার সেগুলি ব্যবহার করা উচিত।


7

ডকার ইমেজ নিজেই

ক্লেয়ার ব্যবহার করা একটি অতিরিক্ত বিকল্প ।

অ্যাপ্লিকেশন ধারকগুলির (বর্তমানে অ্যাপসি এবং ডকার সহ) দুর্বলতার স্থিতিশীল বিশ্লেষণের জন্য ক্লেয়ার একটি ওপেন সোর্স প্রকল্প।

নিয়মিত বিরতিতে, ক্লেয়ার উত্সের একটি কনফিগার করা সেট থেকে দুর্বলতা মেটাডেটা যুক্ত করে এবং এটি ডেটাবেসে সঞ্চয় করে।

ক্লায়েন্টরা তাদের ধারক ইমেজ সূচক করতে ক্লেয়ার এপিআই ব্যবহার করে; এটি চিত্রটিতে উপস্থিত বৈশিষ্ট্যগুলির একটি তালিকা তৈরি করে এবং সেগুলি ডাটাবেসে সংরক্ষণ করে।

ক্লায়েন্টরা নির্দিষ্ট ইমেজের দুর্বলতার জন্য ডাটাবেসটিকে জিজ্ঞাসা করতে ক্লেয়ার এপিআই ব্যবহার করে; দুর্বলতা এবং বৈশিষ্ট্যগুলি সম্পর্কিত প্রতিটি অনুরোধের জন্য ইমেজগুলি পুনর্নবীকরণের প্রয়োজনীয়তা এড়াতে করা হয়।

দুর্বলতা মেটাডেটা আপডেট হলে, সতর্কতা সিস্টেমে একটি পরিবর্তন প্রেরণে একটি বিজ্ঞপ্তি পাঠানো যেতে পারে।

আমাদের লক্ষ্য ধারক ভিত্তিক অবকাঠামোগত সুরক্ষার আরও স্বচ্ছ দৃষ্টিভঙ্গি সক্ষম করা। সুতরাং, ফরাসি শব্দটির পরে প্রকল্পটির নাম ক্লেয়ার নামকরণ করা হয়েছিল যা পরিষ্কার, উজ্জ্বল, স্বচ্ছ অনুবাদ করে।


5

এই থ্রেডের পয়েন্টগুলি ছাড়াও; নিম্নলিখিতটি আমার সুপারিশ হবে:

  • বোবা-ইডি দিয়ে ডকার পিআইডি 1 এর উপর নিয়ন্ত্রণ পান
  • ধারক অর্কেস্টেশন সিস্টেম ব্যতীত উত্পাদনে ডকার চালাবেন না
    • কুবেরনেটস, মেসোস, সোর্ম ইত্যাদি থেকে আপনার বাছাই করুন
  • ব্যবহার করুন gosu একটি Docker ইমেজ ভিতরে ব্যবহারকারী নিয়ন্ত্রণের জন্য
  • 12 টি ফ্যাক্টর অ্যাপের দৃষ্টান্তটি অনুসরণ করুন, আপনি যদি ধারকগুলিতে স্থিতিযুক্ত অ্যাপ্লিকেশন চালাচ্ছেন তবে এটিকে পরিবর্তন করুন।
  • হ্যাশিকর্প ভল্ট / কনসুলের মতো সরঞ্জামগুলি সহ শক্তিশালী গোপন / কনফিগারেশন পরিচালনা করুন
  • ডেভস দ্বারা তৈরি সিআই পাইপলাইনের মাধ্যমে প্রোড করতে একই কন্টেইনারটি শিপ করুন যা এটি স্টেজিং, ইন্টিগ্রেশন-পরীক্ষার মাধ্যমে পুরোপুরি গ্রহণ করে।
  • সিভিই এবং প্যাচগুলির চারপাশে বিজ্ঞপ্তি তৈরি করুন, প্যাচ-বিজ্ঞপ্তিতে ট্রিগার তৈরি করে
  • চলমান ধারকটির অন্তর্দৃষ্টি পেতে ব্যাপক লগিং করুন, আপনি হোস্ট বা কনটেইনারগুলির মধ্যে কোনও ডিভস এসএসএইচ অ্যাক্সেস দিতে চান না
    • সুপারিশ: অনর্গল
  • ধারক এবং হোস্ট উভয়ই মেট্রিক থাকে
    • সুপারিশ: প্রমিথিউস + নোড-এক্সপোর্টার

2

আপনি যদি sedকমান্ডগুলি সহ আপনার ডকার প্রবেশের স্থানটি পূরণ করছেন তবে এই অনুশীলনটি বিবেচনা করুন:

  • আপনার ডকার ইমেজ কনফিগারেশন ফাইলগুলি পরিচালনা করতে এবং সেগুলি আপডেট রাখার জন্য কনডের মতো একটি সরঞ্জাম ব্যবহার করুন

কনফিড বহু সমর্থিত কী-মান স্টোর থেকে ডেটা পড়বে এবং কনফিগারেশন টেম্পলেটগুলি গতিশীলভাবে রেন্ডার করবে।


0

নির্দিষ্ট কিছু জিনিস বিবেচনায় নেওয়ার সময় কেউ ডকারের ছবিতে একটি অ্যাপ বেক করতে A2D ব্যবহার করতে পারে , যেমন- রুটহীন, অনুমতি এবং অ্যাপ্লিকেশনটির অবস্থান:

docker run -v $PWD:/projectName utrecht/a2d:1.0.0 \
       -projectName someProjectName -dockerfile /projectName/Dockerfile

আয়:

FROM golang:1.12.4-alpine as builder
COPY . ./someProjectName/
WORKDIR someProjectName
RUN adduser -D -g '' someProjectName && \
    apk add git && \
    CGO_ENABLED=0 go build && \
    cp someProjectName /someProjectName && \
    chmod 100 /someProjectName

FROM scratch
COPY --from=builder /etc/group /etc/group
COPY --from=builder /etc/passwd /etc/passwd
COPY --from=builder --chown=someProjectName:someProjectName /someProjectName /usr/local/someProjectName
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
USER someProjectName
ENTRYPOINT ["/usr/local/someProjectName"]
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.