Огляд інциденту, що стався 25 вересня з go.opentelemetry.io
25 вересня о 10:35 UTC ми отримали повідомлення про те, що термін дії SSL-сертифіката go.opentelemetry.io закінчився.
Ця точка доступу є канонічною URL-адресою для більшості модулів Go в організації OpenTelemetry. В результаті завантаження будь-яких модулів з цієї точки доступу стало неможливим.
Що сталося?
Ця точка доступу наразі працює на платформі Google App Engine, а її SSL-сертифікат управляється Google. Це єдина точка доступу в домені opentelemetry.io, яка працює на цій платформі.
У липні минулого року дослідник у галузі безпеки повідомив нас, що кореневий домен OpenTelemetry (opentelemetry.io) не має CAA DNS-записів. Тому ми додали один із LetsEncrypt як єдиного емітента, оскільки це центр сертифікації, який використовується для сертифіката кореневого домену.
Оскільки CA Google не був вказаний як емітент у записі CAA, платформа AppEngine не змогла поновити сертифікат go.opentelemetry.io. Тому 25 вересня о 10:08:10 за UTC, коли термін дії сертифіката закінчився, кожен запит повертав помилку з сертифікатом, термін дії якого закінчився. Це спричинило проблеми в системах побудови та під час перегляду документації пакунків go.opentelemetry.io.
Оскільки це єдиний застосунок, який ми підтримуємо і який працює на цій платформі, лише кілька людей, що проживають у США, мають досвід роботи з ним, тому доки вони не прокинулися, ми мали труднощі з ефективною роботою. О 12:03 UTC ми отримали доступ до консолі Google Cloud, а о 12:14 UTC ми визначили, що проблема повʼязана з записом CAA.
О 12:16 UTC ми розгорнули новий запис CAA, щоб Google міг правильно генерувати сертифікати. Ми припустили, що платформа згенерує нові SSL-сертифікати, як тільки помітить зміни в DNS. Це припущення, здається, є правильним, але оновлення записів CAA платформою може зайняти до одного дня.
До 13:58 UTC ми бачили, що запис DNS поширюється, але сертифікат не був згенерований. На жаль, люди, причетні до інциденту, мали обмежені знання про платформу, і ми не знали, як примусово згенерувати сертифікат.
О 14:54 UTC ми вимкнули та знову увімкнули керовану безпеку на SSL-сертифікаті, що призвело до примусового повторного генерування сертифіката. Через кілька хвилин ми знову почали бачити успішні запити.
Детальний хронологічний огляд
10:08UTC — SSL-сертифікат для go.opentelemetry.io закінчився10:35UTC — Перше повідомлення від користувачів про проблему11:31UTC — Створено [публічний звіт про цей інцидент12:03UTC — Отримано доступ до Google Cloud Console для проєкту golang-imports12:14UTC — Виявлено, що в записі CAA відсутній емітент “pki.goog”12:16UTC — Розгорнуто новий запис CAA з правильним набором емітентів13:58UTC — Підтверджено, що запис CAA поширився, але сертифікат SSL не було оновлено14:54UTC — Вимкнено та увімкнено керовану безпеку на сертифікаті SSL15:16UTC — Підтверджено, що для go.opentelemetry.io було видано новий сертифікат SSL
Засвоєні уроки
Коли ми виявили цей інцидент, кілька людей одразу ж взялися розбиратися, що сталося. Для відкритого проєкту, учасники якого розкидані по всьому світу, це було позитивним моментом.
Нам бракує знань про платформу, на якій працює цей застосунок, через що інцидент тривав набагато довше, ніж потрібно. Однак ми були раді, що трохи більше року тому ми змінили обліковий запис Google, на якому працює цей застосунок, оскільки раніше ми навіть не змогли б самостійно вирішити цю проблему.
Заходи, які необхідно вжити
Ми почали вдосконалювати наші інструкції для доступу до консолі AppEngine, щоб отримати доступ швидше.
Ми повинні переконатися, що цей застосунок більше не є чимось особливим, щоб ми могли керувати ним так само, як і всіма іншими публічними веб-сайтами, які підтримує OpenTelemetry. Тому ми плануємо розглянути можливість переходу з платформи AppEngine на Netlify, платформу, на якій працює веб-сайт opentelemetry.io.
За допомогою одного з користувачів ми також виявили низку невикористовуваних піддоменів opentelemetry.io, які обслуговують сертифікат із закінченим терміном дії. Хоча це не має жодного впливу на наших користувачів, ми розглянемо можливість їх видалення.