ماذا عن تسرب Alibrian AccessKey ؟ يعلمك كيفية تنظيم تكوين أذونات دور ذاكرة الوصول العشوائي
واجهت العديد من الفرق الفنية مثل هذا "الرعب في منتصف الليل": فجأة تلقيت إخطارًا متسلسلًا بالقتل أو رسالة نصية من Ali Yun ، "اكتشف حسابك مخاطر تسرب AccessKey ، ويتم استدعاء بعض الموارد بشكل غير طبيعي من خلال التردد العالي..."
عند تسجيل الدخول إلى مكتب التحكم ، تم تفجير الفاتورة ، وتم إنشاء الخادم على دفعات من قبل المتسللين للتعدين.
غالبًا ما يكون السبب الجذري لكل هذا هو أن الرسم البياني يوفر المتاعب ، مباشرة في الرمز أو ملف التكوين أو مستودع GitHub العام ، يتم ترميز أعلى الأذونات
الحساب الرئيسي AccessKey(AK/SK)
. AK في الحساب الرئيسي يشبه المفتاح الرئيسي لمنزلك ، وبمجرد تسريبه ، فإن الأصول الموجودة على السحابة بأكملها تعادل الانفتاح الكامل على المتسللين.
اليوم لا تتحدث عن نظريات افتراضية أو هراء. المقبض المباشر يأخذك لبناء خطي دفاع:
أولاً ، توقف النزيف في حالات الطوارئ بعد 5 دقائق من تسرب AK ؛ ثانيًا ، كيفية استخدام دور ذاكرة الوصول العشوائي (Role) للقضاء تمامًا على المخاطر الخفية لـ AK.
المرحلة الأولى: وقف النزيف في حالات الطوارئ! تدفق الطوارئ لمدة 5 دقائق من AccessKey المتسرب
إذا وجدت أو تشك في أن AK قد تسربت ، فلا تتردد في تنفيذ الإجراءات التالية على الفور ، فالتأخير لمدة دقيقة هو خسارة أموال حقيقية.
الخطوة 1: تعطيل أو إزالة AK المعنية على الشبكة بأكملها
قم بتسجيل الدخول إلى Alibaba Cloud Console على الفور وانقر فوق الصورة الرمزية في الزاوية اليمنى العليا $ \ rightarrow $ لتحديد "AccessKey Management".
ابحث عن AccessKey (سواء كان الحساب الرئيسي أو الحساب الفرعي) الذي تم تسريبه.
انقر أولاً على "تعطيل". في هذا الوقت ، ستبلغ جميع طلبات الشبكة الخارجية التي تستخدم AK 403 على الفور.
بعد التأكد من عدم التأثير على أعمال الإنتاج الأساسية ، انقر بشكل حاسم على "حذف".
الخطوة 2: اكتشاف "الباب الخلفي" الذي تركه الهاكر
بعد حصول المتسللين على AK ، غالبًا ما يكون أول شيء هو استخدام البرامج النصية الآلية لإنشاء موارد على دفعات.
انتقل إلى قائمة مثيلات ECS ، وقائمة خوادم التطبيقات خفيفة الوزن ، وقم بالتبديل بين المناطق المختلفة (بكين ، شنغهاي ، شنتشن ، هونغ كونغ ، الولايات المتحدة ، إلخ) لمعرفة ما إذا كانت هناك خوادم إضافية بشكل غير مفهوم. إذا كان هناك ، إطلاق سراح كامل على الفور.
انتقل إلى وحدة التحكم في ActionTrail ، واستفسر عن واجهات برمجة التطبيقات التي تم الاتصال بها من قبل AK في الـ 24 ساعة الماضية ، واستكشف الموارد التي استخدمها المتسللون.
المرحلة الثانية: حل السبب الجذري-تكوين موحد لدور ذاكرة الوصول العشوائي والحد الأدنى من الأذونات
بعد حذف AK ، انهار رمز المشروع القديم مباشرة ، لأنهم يحتاجون إلى إذن للقراءة والكتابة OSS أو الاتصال بالخدمات السحابية الأخرى.
لا يمكننا إنشاء حساب رئيسي جديد AK. الإجراء الصحيح هو:
استخدم دور ذاكرة الوصول العشوائي (RAM Role) للسماح للبرامج التي تعمل على Ali Cloud بالحصول على أذونات مؤقتة تلقائيًا وبدون مفتاح.
فيما يلي نأخذ "دع البرامج الموجودة على ECS للخادم السحابي يمكنها قراءة وكتابة دلو OSS بأمان" كمثال للتكوين القتالي الفعلي.
الخطوة 1: إنشاء شخصية RAM (إنشاء "هوية" من فراغ
)
ابحث في وحدة التحكم وأدخل "التحكم في الوصول إلى RAM".
انقر على "دور" $ \ rightarrow $ "إنشاء دور" في القائمة اليسرى.
حدد نوع الكيان الموثوق به كـ "Alibaba Cloud Services" وانقر على التالي.
نوع الدور: اختر "دور الخدمة العامة".
اسم الشخصية: اسم سهل الفهم ، مثل ECS-OSS-Reader-Role.
اختر خدمة الائتمان: نظرًا لأننا نريد نشر هذا الدور على الخادم السحابي ، فإننا نختار "الخادم السحابي" (ECS) هنا.
انقر على موافق.
الخطوة 2: التفويض الدقيق (لا يعطي أذونات إضافية)
الشخصية التي تم إنشاؤها للتو هي قطعة من الورق الأبيض دون أي أذونات. نحن بحاجة إلى إصدار ترخيص لها وفقا لمبدأ الحد الأدنى من السلطة.
ابحث عن ECS-OSS-Reader-Role الذي تم إنشاؤه للتو في قائمة الشخصيات ، وانقر على "إضافة أذونات" على اليمين.
نطاق التفويض: حدد حساب Alibabi Cloud بالكامل (الافتراضي).
اختيار الاستراتيجية: إذا كنت تحتاج فقط إلى قراءة OSS: البحث ووضع علامة على AliyunOSSReadOnlyAccess (الوصول إلى OSS للقراءة فقط). إذا كنت بحاجة إلى القراءة والكتابة OSS: البحث ووضع علامة على AliyunOSSFullAccess (إدارة OSS).
انقر على موافق.
الخطوة 3: ربط الشخصية بخادم ECS السحابي
هذه الخطوة مهمة للغاية ، فهي تعادل لصق هذا "الترخيص" على باب خادم معين.
أدخل وحدة التحكم "Cloud Server ECS" وابحث عن المثيل الذي يقوم بتشغيل الكود الخاص بك.
انقر على "المزيد" $ \ rightarrow $ "إعدادات المثيل" $ \ rightarrow $ "منح/استعادة دور RAM" على اليمين.
في القائمة المنسدلة ، اختر ECS-OSS-Reader-Role الذي قمت بإنشائه للتو.
انقر على موافق.
المرحلة الثالثة: تحويل الكود-وداعًا تمامًا لـ AK
الآن ، الخادم الخاص بك لديه هوية قانونية. سنعدل رمز المشروع ونضع تلك الأسطر اللعينة
AccessKeyId
و
AccessKeySecret
حذفه تماما.
علي سحابة SDK لديها
حقن دوران القسيمة التلقائي
وظيفة. عندما يتم تشغيل الكود على ECS حيث يتم ربط دور ذاكرة الوصول العشوائي ، تقوم SDK بالوصول إلى عنوان بيانات وصفية محلية خاص داخل الخادم
http
: // 100.100.100.200/latest/meta-data/
الحصول على تلقائية بالكامل
Token المؤقتة التي تنتهي صلاحيتها تلقائيًا كل بضع ساعات
.
حتى لو تسلل أحد المتسللين إلى الخادم وسرق هذا Token ، فسوف يفشل تلقائيًا في غضون ساعات قليلة ولا يمكن استخدامه كباب خلفي دائم.
خذ على سبيل المثال Java SDK للوصول إلى OSS:
الرمز القديم (خطير للغاية❌):
جافا
// ممنوع منعا باتا الكتابة مثل هذا! مرة واحدة على الرمز
بعد نقله إلى منصة استضافة الكود العامة ، يرتفع دلو العائلة على الفور
String accessKeyId = "LTAI5tXXXXXX" ؛
String accessKeySecret = "Pn7yXXXXXX" ؛
OSS ossClient = OSSClientBuilder الجديد ().build(endpoint ، accessKeyId ، accessKeySecret) ؛
رمز جديد (توصية استراتيجية الأمن السحابية الأصلية):
جافا
Import com.aliyun.oss.OSS ؛
Import com.aliyun.oss.OSSClient Builder ؛
Import com.aliyun.credentials.Client ؛
Import com.aliyun.credentials.mo dels. Config؛
// لا تحتاج إلى أي مفتاح نص واضح على الإطلاق!
Config credential Config = Config الجديد () ؛
CredentialConfig. setType("ecs_ram_role") ؛ // حدد نوع القسيمة كدور ذاكرة الوصول العشوائي المرتبط بـ ECS
// إذا تركت فارغًا ، فستبحث SDK تلقائيًا عن اسم الدور المرتبط بالخادم الحالي
// CredentialConfig. setRoleName("ECS-OSS-Reader-Role") ؛
Client credentialClient = Client الجديد (credential Config) ؛
// بناء عميل OSS باستخدام بيانات الاعتماد المؤقتة
OSS ossClient = OSSClientBuilder الجديد ().build(endpoint ، credentialClient) ؛
خط الدفاع النهائي: كيفية وضع حد للتسرب التالي ؟
مطلقًا ، مطلقًا ، لا تقم مطلقًا بتقديم ملف تعريف يحتوي على نص عادي AK في أي قاعدة كود عامة (مثل GitHub و Gitee). حتى المستودعات الخاصة لا تعمل ، فالعديد من التسريبات ترجع إلى أن الموظفين قاموا عن طريق الخطأ بتغيير المستودعات الخاصة إلى عامة.
استخدام جيد. Gitignore. عند تهيئة المشروع ، أضف على الفور ملفات التكوين التي تحتوي على معلومات حساسة مثل application-prod.yml و config.json إلى قائمة التجاهل.
ماذا عن التنمية المحلية ؟ إذا كان الكمبيوتر المحلي يحتاج إلى تصحيح أخطاء AK ، قم بتكوين AK في متغير البيئة لنظام الكمبيوتر الخاص بك (من خلال export ALIBABA_CLOUD_ACCESS_KEY_ID = "xxx") ، في الكود
قراءة من خلال System.getenv(). بهذه الطريقة ، يكون الرمز دائمًا نظيفًا.
لا شيء صغير آمن. الليلة ، تحقق من العناصر التي تحتفظ بها ، واقتل كل الحسابات الرئيسية المرمزة AK!

