خلاصه
بین ساعت 4:00 بعد از ظهر تا حدوداً 5:36 بعد از ظهر سهشنبه، 23 نوامبر، ما در اکثر سیستمهای تولید کوینبیس دچار اختلال شدیم. در طول این قطع، کاربران با استفاده از وبسایتها و برنامههای ما نمیتوانستند به Coinbase دسترسی پیدا کنند و بنابراین نمیتوانستند از محصولات ما استفاده کنند. این پست برای توصیف آنچه رخ داده و علل آن و بحث در مورد چگونگی برنامه ریزی ما برای جلوگیری از چنین مشکلاتی در آینده است.
این حادثه
در 23 نوامبر 2021، ساعت 4:00 بعدازظهر PT (24 نوامبر 2021 ساعت 00:00 UTC) یک گواهی SSL برای نام میزبان داخلی در یکی از حسابهای خدمات وب آمازون (AWS) ما منقضی شد. گواهینامه SSL منقضی شده توسط بسیاری از متعادل کننده های بار داخلی ما استفاده می شد که باعث شد اکثر ارتباطات بین سرویسی از کار بیفتند. با توجه به این واقعیت که لایه مسیریابی API ما از طریق زیر دامنههای این نام میزبان داخلی به سرویسهای باطن متصل میشود، حدود 90 درصد از ترافیک ورودی API خطاها را برمیگرداند.
زمانی که توانستیم همه متعادل کننده های بار را به یک گواهی معتبر منتقل کنیم، نرخ خطا به حالت عادی بازگشت.
زمینه: گواهی ها در کوین بیس
ارائه برخی اطلاعات پس زمینه در مورد نحوه مدیریت گواهینامه های SSL در Coinbase مفید است. در بیشتر موارد، گواهینامه ها برای نام های میزبان عمومی مانند coinbase.com توسط Cloudflare مدیریت و ارائه می شوند. برای گواهینامههای نام میزبان داخلی که برای مسیریابی ترافیک بین سرویسهای پشتیبان استفاده میشوند، ما از لحاظ تاریخی از گواهینامههای سرور AWS IAM استفاده میکردیم.
یکی از نقاط ضعف گواهینامه های سرور IAM این است که گواهی ها باید خارج از AWS تولید شده و از طریق تماس API آپلود شوند. بنابراین سال گذشته، تیم زیرساخت ما از گواهیهای سرور IAM به مدیر گواهینامه AWS (ACM) مهاجرت کرد. ACM مشکل امنیتی را حل می کند زیرا AWS هر دو مؤلفه عمومی و خصوصی گواهی را در ACM تولید می کند و نسخه رمزگذاری شده را در IAM برای ما ذخیره می کند. فقط سرویسهای متصل مانند Cloudfront و Elastic Load Balancer به گواهیها دسترسی خواهند داشت. انکار کردن acm:Export Certificate مجوز همه نقشهای AWS IAM تضمین میکند که نمیتوان آنها را صادر کرد.
علاوه بر مزایای امنیتی اضافه شده، ACM همچنین به طور خودکار گواهی ها را قبل از انقضا تمدید می کند. با توجه به اینکه گواهینامه های ACM قرار است تمدید شوند و ما مهاجرت انجام دادیم، چطور این اتفاق افتاد؟
بررسی دلیل ریشه ای
پاسخ دهندگان حادثه به سرعت متوجه شدند که گواهی منقضی شده یک گواهی سرور IAM است. این غیرمنتظره بود زیرا مهاجرت ACM فوق الذکر به طور گسترده در کانال های ارتباطی مهندسی در آن زمان منتشر شده بود. بنابراین ما با این فرض کار میکردیم که منحصراً بر روی گواهیهای ACM اجرا میشدیم.
همانطور که بعداً متوجه شدیم، یکی از انتقالهای گواهی طبق برنامه پیش نرفت. گروهی از مهندسین که بر روی مهاجرت کار می کنند یک گواهینامه جدید IAM را آپلود کردند و بقیه مهاجرت را به تعویق انداختند. متأسفانه، تأخیر آنچنان که باید به طور گسترده اطلاع رسانی نشد و تغییرات در ساختار تیم و پرسنل منجر به تکمیل نادرست پروژه شد.
به کنار وضعیت مهاجرت، ممکن است همان سوالی را که از خود پرسیدیم بپرسید: "چرا به ما در مورد این گواهی در حال انقضا هشدار داده نشد؟" پاسخ این است: ما بودیم. هشدارها به یک گروه توزیع ایمیل ارسال میشد که متوجه شدیم فقط از دو نفر تشکیل شده است. این گروه در ابتدا بزرگتر بود، اما با خروج اعضای تیم کوچکتر شد و با پیوستن افراد جدید به تیم، هرگز به اندازه کافی دوباره جمعیت نشد.
به طور خلاصه، گواهینامه حیاتی به دلیل هر سه عامل اجازه انقضا یافت:
- انتقال IAM به ACM ناقص بود.
- هشدارهای انقضا فقط از طریق ایمیل ارسال می شد و فیلتر یا نادیده گرفته شد.
- فقط دو نفر در لیست توزیع ایمیل بودند.
وضوح و بهبود
برای حل این حادثه، ما همه متعادلکنندههای بار را که از گواهی منقضی شده IAM استفاده میکردند، به گواهی تمدید خودکار موجود ACM که بهعنوان بخشی از طرح مهاجرت اولیه ارائه شده بود، منتقل کردیم. این به دلیل تعداد بار متعادل کننده های درگیر و احتیاط ما در تعریف، آزمایش و اعمال تغییرات زیرساختی مورد نیاز، بیشتر از حد مطلوب طول کشید.
برای اطمینان از اینکه دوباره با مشکلی مانند این مواجه نمی شویم، مراحل زیر را برای رسیدگی به عوامل ذکر شده در بخش RCA در بالا انجام داده ایم:
- ما انتقال به ACM را کامل کردهایم، دیگر از گواهیهای سرور IAM استفاده نمیکنیم و برای کاهش نویز، گواهیهای قدیمی را حذف میکنیم.
- ما نظارت خودکار را اضافه می کنیم که به سیستم هشدار و صفحه بندی ما متصل است تا هشدارهای ایمیل را تقویت کند. این موارد در انقضای قریبالوقوع و همچنین زمانی که گواهیهای ACM از واجد شرایط بودن تمدید خودکار خارج میشوند، صفحه میشوند.
- ما یک گروه نام مستعار دائمی به لیست توزیع ایمیل اضافه کرده ایم. علاوه بر این، با پیوستن و خروج کارکنان به شرکت، این گروه به طور خودکار به روز می شود.
- ما در حال ساخت یک مخزن از عملیات اصلاح حادثه هستیم تا زمان تعریف، آزمایش و اعمال تغییرات جدید را کاهش دهیم.
ما بهروزرسانی و عملکرد زیرساختهای خود را بسیار جدی میگیریم و سخت تلاش میکنیم تا از میلیونها مشتری که Coinbase را برای مدیریت ارز دیجیتال خود انتخاب میکنند، پشتیبانی کنیم. اگر علاقه مند به حل چالش هایی مانند موارد ذکر شده در اینجا هستید، بیا با ما کار کن.
حادثه پس از مرگ: 23 نوامبر 2021 در ابتدا منتشر شد وبلاگ کوین بیس در Medium، جایی که مردم با برجسته کردن و پاسخ دادن به این داستان به گفتگو ادامه می دهند.
- "
- &
- دسترسی
- معرفی
- آمازون
- آمازون خدمات وب
- API
- برنامه های
- خودکار
- AWS
- مزایای
- بنا
- صدا
- علت
- ایجاد می شود
- گواهی نامه
- گواهینامه ها
- کانال
- CloudFlare را
- coinbase
- ارتباط
- ارتباطات
- شرکت
- گفتگو
- کریپتو کارنسی (رمز ارزها )
- مشتریان
- تاخیر
- DID
- کشف
- قطره
- پست الکترونیک
- کارکنان
- مهندسی
- مورد تأیید
- آینده
- گروه
- اینجا کلیک نمایید
- چگونه
- HTTPS
- قریب الوقوع
- اطلاعات
- شالوده
- گرفتار
- IT
- پیوستن
- فهرست
- ذکر شده
- بار
- اکثریت
- متوسط
- اعضا
- نظارت بر
- سر و صدا
- عملیاتی
- عملیات
- سفارش
- قطع شدن
- مردم
- کارایی
- پرسنل
- خصوصی
- تولید
- محصولات
- پروژه
- عمومی
- نرخ
- كاهش دادن
- REST
- مسیر
- دویدن
- در حال اجرا
- تیم امنیت لاتاری
- خدمات
- کوتاه
- So
- گواهی SSL
- وضعیت
- پرده
- پشتیبانی
- سیستم
- سیستم های
- آزمون
- تست
- زمان
- ترافیک
- us
- کاربران
- ساعت محلی UTC تنظیم شده اند
- وب
- خدمات وب
- وب سایت
- در داخل
- مهاجرت کاری
- سال