شحن سحابة الأمازون: كيفية إدارة مرآة Docker الخاصة بك بأمان مع AWS ECR (مرآة حاوية مرنة)

سحابة 2026-05-29 阅读 9
cloud

اليوم ، مع بنية السحابة الأصلية والخدمات الصغيرة السيئة ، لطالما كانت مرآة Docker حاوية قياسية لرمز التسليم.

عندما بدأت العديد من الفرق في الانخراط في الحاويات لأول مرة ، من أجل توفير المتاعب ، قاموا بإلقاء الصور الداخلية للشركة مباشرة على Docker Hub العامة ، أو قاموا بإعداد سجل بسيط للغاية مفتوح المصدر على الخادم بأنفسهم. نتيجة لذلك ، تم تسريب رمز العمل الأساسي إما بسبب عدم كفاية سلطة المستودع العام ، أو بسبب نقص الصيانة في المستودع الذي تم بناؤه ذاتيًا ، والذي كان عالقًا بشكل مباشر عندما واجه تسديلًا عالي التزامن ، وحتى فحص ثغرة المرآة لا يمكن القيام به.

في بيئة AWS (Amazon Cloud Technology) ، هذه الأعمال القذرة والمتعبة المستخدمة خصيصًا لإدارة المرآة ، تسمى

Amazon ECR (قاعدة بيانات Elastic Container ، مستودع مرآة الحاويات المرنة)

. لا يقتصر الأمر على فتح نظام أذونات الأمان (IAM) بشكل طبيعي لـ AWS فحسب ، بل يأتي أيضًا بمسح نقاط الضعف على مستوى المصنع الكبير وقدرات النسخ المتماثل العالمية.

اليوم ، نحن لسنا هراء ، ونقطع مباشرة من القتال الفعلي ، ونعلمك كيفية استخدام مواصفات السلامة الخاصة بالمصنع الكبير لحام حاوية خاصة غير قابلة للتدمير على AWS ECR.

المرحلة الأولى: فهم المفهوم الأساسي على مستوى المؤسسة لـ ECR

قبل تحريك تيار الدفع اليدوي (Push) ، يجب عليك معرفة أساس شبكة ECR. لا تصطدم مثل ذبابة مقطوعة الرأس ، هيكل ECR واضح جدًا ، ويتكون بشكل أساسي من المستويات الأساسية الثلاثة التالية:

التسجيل: هذا هو معسكر القاعدة الخاص بك. يحتوي كل حساب AWS على سجل خاص افتراضي واحد فقط في كل منطقة. عادةً ما يكون اسم نطاق الوصول الخاص به على شكل 123456789012.dkr.ecr.us-east-1.amazonaws.com (الرقم السابق هو معرف حساب AWS الخاص بك).

مستودع (Repository): هذا هو "مستودع المرآة" المحدد. على سبيل المثال ، يسمى تطبيقك user-service ، وعليك إنشاء مستودع يسمى user-service أسفل السجل ، والذي يحتوي على جميع النسخ المتطابقة لهذه الخدمة من v1.0 إلى v2.5.

استراتيجية IAM وإدارة دورة الحياة: هذا هو حارس الأمن وعمال النظافة. حدد من يمكنه سحب التدفق ، ومن يمكنه دفع التدفق ، وعدد المرات التي يتم فيها تنظيف المرآة التاريخية التي انتهت صلاحيتها تلقائيًا.

المرحلة الثانية: التمرين القتالي الفعلي 1-إنشاء مستودع خاص آمن

سجّل دخولك إلى حسابك

وحدة تحكم AWS

، ابحث وادخل

ECR

الخدمة. انقر على "المستودعات" في القائمة اليسرى-> انقر

"إنشاء مستودع (Create repository)"

.

المعلمات الرئيسية لحام التكوين (تحديد مستوى أمان المرآة):

إعدادات الرؤية: لا تتردد في اختيار Private

) ". ما لم ترغب في إجراء توزيع مفتوح المصدر ، لا يُسمح مطلقًا بالصورة الداخلية للمؤسسة للجمهور.

علامة عدم قابلية التغيير: يوصى بشدة بتشغيل "غير قابل للتغيير". تاريخ داتشانغ لتجنب الدماء والدموع: إذا تم الحفاظ على "متغير" الافتراضي ، فسيقوم المختبرون بدفع صورة معكوسة بعلامة latest ، وسيتم تغطية النسخة الثابتة من latest على الخط السابق. بعد الفتح غير قابل للتغيير ، بمجرد أن يشغل v1.0 الحفرة ، لا يرغب أي شخص في تغطيتها بعلامة تحمل الاسم نفسه. يمكن للإصدار فقط زيادة رقم الإصدار بأمانة (مثل v1.1) ، ومن المصدر ، تم تغيير صورة المرآة عبر الإنترنت عن طريق الخطأ.

Scan on push: افتح بشكل حاسم. بعد الفتح ، في كل مرة تقوم فيها بدفع صورة المرآة إلى ECR ، ستتصل خلفية AWS تلقائيًا بمكتبة الثغرات الأمنية للسلطة مفتوحة المصدر (أو Amazon Inspector المتقدمة) لمسح مكونات نظام التشغيل في المرآة بعمق ، سواء كانت هناك ثغرات أمنية خطيرة معروفة (CVE) ، وأعطيك تحذيرًا باللون الأحمر والضوء الأصفر في وحدة التحكم.

المرحلة الثالثة: التمرين القتالي الفعلي 2-دوكر المحلي يفتح بالكامل ECR

تم بناء المستودع (بافتراض أن الاسم هو

My-app

) ، كيف يمكننا إرسال صورة Docker المعبأة على الكمبيوتر المحلي بأمان إلى السحابة ؟

سيصادف الكثير من الناس أول حفرة كبيرة هنا: التنفيذ المباشر

Docker login

أدخل كلمة مرور حساب AWS ، والنتيجة هي رفض تسجيل الدخول. لأن

لا يتعرف ECR على كلمة مرور AWS العادية على الإطلاق ، فهو يستخدم الرمز المميز الذي تم إنشاؤه ديناميكيًا (Token)

.

تأكد من تكوين الكمبيوتر المحلي الخاص بك

AWS CLI (أداة سطر الأوامر)

ولها سلطة IAM القانونية. افتح المحطة الطرفية ، ثلاث خطوات سريعة:

الخطوة 1: الحصول على رمز تسجيل الدخول الديناميكي وحقن محرك Docker

قم بتنفيذ السطر التالي من الأوامر المركبة (استبدل معرف الحساب والمنطقة الخاصة بك):

باش

Aws ecr get-login-password-region us-east-1 | docker login-username AWS-password-stdi n 123456789012.dkr.ecr.us-east-1.amazonaws.com

إذا قفزت من الشاشة

Login Succeeded

، اشرح أن Docker المحلي الخاص بك قد حصل على تصريح أمان لمدة 12 ساعة ونجح في مواجهة السحابة بعلامة سرية.

الخطوة 2: إعطاء المرآة المحلية "الوشم" (علامة التبويب)

لنفترض أن لديك صورة طبق الأصل تم تجميعها للتو

Local-app:v1.0

. يجب عليك إعادة تسميتها بالاسم السحابي القياسي وفقًا لمواصفات ECR ، وإلا فلن يتمكن Docker من العثور عليها

الطريق:

باش

Docker tag local-app:v1.0 123456789012.dkr.ecr.us-east-1.amazonaws.com/my-app:v1.0

الخطوة 3: دفع التيار بكل قوة

باش

Docker pus h 123456789012.dkr.ecr.us-east-1.amazonaws.com/my-app:v1.0

جنبا إلى جنب مع مألوفة على المحطة

Pushed

شريط التقدم ، لقد عبرت صورة المرآة الخاصة بك الشبكة ، وهي مستلقية بثبات في أعماق التخزين الآمن الموزع لـ AWS.

المرحلة الرابعة: طريقة اللعب المتقدمة على مستوى المؤسسة-إدارة المستودع بأقل ميزانية وأعلى مستوى من الأمان

إن دفع صورة المرآة إلى الأعلى ليس سوى الخطوة الأولى. في بيئة الإنتاج الحقيقية ، عادة ما يضيف مهندسو النقل والصيانة خطين للدفاع:

1. استئجار عمال نظافة مجانيين: استراتيجية دورة الحياة (Lifecycle Policy)

يقوم فريق التطوير ببناء صور مرآة بشكل متكرر كل يوم ، وفي كل مرة يتم إصدارها ، سيتم إنتاج العديد من المرايا التاريخية غيغابايت. إذا لم تكن هناك قيود ، فإن الصور المرآة في ECR تتراكم مثل الجبل ، ويمكن أن تجعلك فاتورة تخزين AWS في نهاية الشهر تؤلمك.

التكوين المكسور: في صفحة تفاصيل مستودع ECR ، انقر فوق "سياسات دورة الحياة"-> إنشاء قواعد.

منطق القاعدة: إنشاء قاعدة "لتنظيف المرآة القديمة". على سبيل المثال: "بالنسبة للمرايا المؤقتة التي لا تحتوي على ملصق إصدار معين (غير محدد) ، يستغرق الأمر أكثر من 14 يومًا للتدمير المادي تلقائيًا" ؛ أو "احتفظ فقط بأحدث 30 نسخة من المرآة ، والمسح التلقائي القديم".

يمكن أن يساعد السماح للنظام بالخروج تلقائيًا في توفير قدر كبير من نفقات التخزين للأصول السحابية للشركة.

2-الاستنساخ التلقائي عبر المناطق

إذا تم توزيع عملك في جميع أنحاء العالم (من طوكيو وفيرجينيا لديها مجموعات حاويات EKS تعمل). إذا كان على مجموعة طوكيو عبور المحيط إلى ECR في الولايات المتحدة للحصول على عدد قليل من المرايا الكبيرة غيغابايت في كل مرة ، فإن تأخير الشبكة ورسوم المرور عبر المناطق ستكون مرتفعة للغاية بحيث تنهار.

عملية عالية المستوى: في إعدادات سجل ECR ، افتح "النسخ عبر المناطق".

القصة الداخلية الأساسية: يمكنك تهيئتها على النحو التالي: طالما أنني أدفع المرآة إلى مستودع us-east-1 في الولايات المتحدة ، فإن العمود الفقري السفلي لـ AWS سيقوم تلقائيًا بمزامنة الصورة المرآة في المستودع الذي يحمل نفس الاسم في ap-northeast-1 طوكيو بسرعة كبيرة في الخلفية. المجموعات على كلا الجانبين "تسحب التدفق القريب" في غرفة الكمبيوتر المحلية ، وزادت السرعة عشرة أضعاف ، كما تم إلغاء رسوم المرور عبر الوطنية باهظة الثمن للشبكة العامة.

المرحلة الخامسة: سجل دامٍ من الأخطاء الشائعة في العمليات اليومية والدروس المستفادة منها

ECS / EKS سحب أذونات البث للإبلاغ عن الخطأ (ImagePullBackOff): عند خدمة الحاويات الخاصة بك في AWS (مثل ECS أو EKS)

) عند نشر التطبيق ، غالبًا ما تواجه خطأ أن العقدة لا يمكنها سحب صورة ECR. 99 ٪ من السبب هو أنك لم تمنح ECS Task Role أو EKS Node Role أذونات IAM الخاصة بـ AmazonEC2ContainerRegistryReadOnly. تذكر أنه حتى داخل AWS ، يتم بناء كل خدمة افتراضيًا بجدران عالية وغير متصلة ببعضها البعض ، ويجب تفويرها بشكل صريح.

مقايضة تشفير مفتاح KMS: ستقوم ECR بتخزين صورة المرآة الخاصة بك بشكل مشفر من طرف إلى طرف افتراضيًا. إذا كان لديك متطلبات عالية للغاية للامتثال ، يمكنك التبديل إلى تشفير مفتاح AWS KMS (CMK) مخصص. ومع ذلك ، تجدر الإشارة إلى أنه إذا كنت تستخدم مفتاحًا مخصيصًا ، فعندما تقوم حسابات أو خدمات أخرى بسحب الصور عبر الفريق ، فلن يتم فتح أذونات ECR فحسب ، بل يجب أيضًا فتح أذونات فك التشفير لمفاتيح KMS بالمناسبة ، وإلا فسيظل السحب يفشل.

الخلاصة

في عصر السحابة الأصلية ، كان مستودع المرآة هو ترسانة الأسلحة الخاصة بك. باستخدام AWS ECR لإدارة صورة Docker ، يكمن السر الأساسي في ثلاث نقاط:

استخدم علامة غير قابلة للتغيير (علامة غير قابلة للتغيير) للحفاظ على الخط السفلي للإصدار ، واستخدم استراتيجية دورة الحياة (سياسة دورة الحياة) لتشديد الحزام لتوفير المال ، وأخيراً استخدم إستراتيجية IAM والمستودع لإيقاف الوصول.

قم بلحام هذه المجموعة من المواصفات في خط التجميع الآلي CI/CD الخاص بك. من الآن فصاعدًا ، بغض النظر عن كيفية توسع عملك أو رميها عالميًا ، فإن أصول الكود الخلفية الخاصة بك ستكون مستقرة مثل الصخرة.

1
← 返回新闻中心