Як не отримати чек від Амазон на $10 000, або Поради для початківців з захисту аккаунта

Усім привіт. Мене звати Сергій Журавель. Я допомагаю компаніям розробляти вебзастосунки, студентам — вивчати JS, а коли є трохи вільного часу — пишу статті для DOU. І одного разу навіть злякав читачів. Але щоб заспокоїти тих, хто дійсно злякався і після прочитаного передумав працювати з AWS, хочу вас заспокоїти та поділитися способами, як себе захистити та не потрапити в ситуацію, коли вам дійсно несподівано надійде рахунок на велику суму.

Тож в статті я опишу, як почати працювати з Amazon (AWS) безкоштовно, які мінімальні правила та налаштування для підвищення безпеки свого аккаунта, та які налаштування можна/потрібно зробити, щоб вчасно побачити, що ви можете залишитися без грошей. Сподіваюся, стаття буде цікавою тим, хто починає працювати з AWS або планує (наприклад, хоче вивчити, як працювати з AWS) і не хоче вкладати гроші на початкових етапах. Якщо ж у вас стартап або просто маленький бізнес, якому до 10 років, то ви дізнаєтеся, як отримати до $100 000 в кредитах від AWS.

Як почати працювати з AWS безкоштовно

Сучасну розробку вже важко уявити без такого поняття як хмара або клауд (cloud). Хмарних провайдерів стає все більше, тож конкуренція на цьому ринку зростає. Не дивно, що хмарні провайдери, конкуруючи за свого клієнта та прагнучи збільшити прибутки, розширюють функціонал, роблять його простішим в користуванні, а також дають можливість спробувати їхній товар (сервіс) на безоплатній основі.

Саме тому так сталося, що працювати з AWS (який дехто вважає супер дорогим хмарним провайдером) можна почати абсолютно безкоштовно, навіть свій власний невеликий сервер тримати біля року можна. Також є можливість отримати кредити від Amazon і використовувати не лише ресурси, що доступні для безкоштовного тіру. Але разом з тим, дійсно є можливість отримати сюрприз від Amazon — рахунок на десятки тисяч доларів. Статися це може з кількох причин:

  • проблеми безпеки;
  • помилка користувача.

І хоч думати про це може бути неприємно, або навіть лячно, розказати про це я хочу не для того, щоб вас залякати, а щоб підготувати до можливих неприємностей заздалегідь і тим самим дати вам можливість не зробити стандартних помилок. Але про це ми поговоримо далі, зараз я хочу коротко розказати, як почати працювати з AWS безкоштовно.

Насправді, зробити це дуже легко. Компанія Amazon надає різноманітні знижки та бонуси як новим, так і постійним клієнтам. Так, наприклад, при реєстрації, ви отримуєте рік безкоштовного доступу до великої кількості сервісів та деякий об’єм безкоштовних ресурсів. Ви можете подивитися список безкоштовних сервісів та ресурсів.

Про процес реєстрації, я думаю, вже багато хто писав, тож не буду детально розказувати (якщо кому потрібно, напишіть в коментарях, і я напишу окрему статтю або скину посилання на існуючі матеріали). Та нагадаю, що для реєстрації на Amazon потрібно мати банківську картку. На цій картці тимчасово буде заблокована невелика сума коштів (близько $1), таким чином сервіс перевіряє, що картка справжня. Якщо ви хвилюєтеся за гроші на картці, то ви можете відкрити в банку окрему картку і покласти на неї кілька доларів.

Основи безпеки при роботі з AWS

Тож ви зареєструвалися, отримали рік безкоштовного доступу і невеличку купку ресурсів для практики з сервісами AWS. Що далі? У першу чергу, потрібно подумати про безпеку.

Справа в тому, що акаунт, який ви зареєстрували, має доступ до практично необмежених ресурсів хмарного провайдера, що дозволяє вам за лічені години налаштувати і запустити обчислювальні системи просто космічної потужності. З великою силою приходить і велика відповідальність. Тож, по-перше, вам потрібно пам’ятати, що не все в вашому аккаунті безкоштовне, а по-друге — треба дуже ретельно оберігати свій основний (рут/root) аккаунт та доступи користувачів, яких ви створите.

У чому небезпека? Один з яскравий прикладів нашого часу, який показує небезпеку отримання доступів до вашого AWS аккаунту зловмисниками, це можливість майнінгу на потужностях хмарного провайдера. Оскільки AWS надає вам практично безмежні потужності, то зловмисники можуть їх використати, а вам буде надіслано чек на величезну суму.

Декому може здатися трохи дивним той факт, що першою best practice при роботі з AWS є наступна: не використовувати кореневий акаунт. Взагалі не використовувати його не вийде, тому що його потрібно використовувати для створення інших користувачів (users) та ще для деяких задач (повний список задач). Тож за рекомендацією AWS за допомогою рут аккаунта потрібно одразу створити admin аккаунт з майже максимальным набором доступів. Тобто авторизуємося під root-аккаунтом, створюємо нового користувача, надаємо лише потрібні цьому користувачу права, і виходимо з root-аккаунта. Всіх інших користувачів вже створюємо через admin користувача, який ми створили. А доступ до основного аккаунта потрібно десь зберегти і ретельно охороняти.

Ок, основний аккаунт ми зберегли, про небезпеку втрати доступів ми дізналися, що далі? Наступна порада також пов’язана з користувачами. Дуже часто, працюючи з хмарними сервісами, ми використовуємо спеціальні ключі доступу (наприклад, API Keys), і до них треба ставитися так само, як і до логіну з паролем до своїх аккаунтів. Найголовніше — ніколи не зберігайте доступи в репозиторіях з кодом, а також в інших відкритих місцях. Отримавши API-ключі, зловмисники так само програмно можуть використати ваші ресурси (без авторизації в консоль AWS).

Ну і ще одна порада: якщо вам потрібно дати комусь доступ, ніколи не давайте доступ до свого аккаунту іншим людям. Створіть новий аккаунт в AWS консолі, налаштуйте лише потрібні доступи, а дайте логін і пароль від цього аккаунту людині, якій потрібен цей доступ. До речі, якщо таких акаунтів у вас вже багато, то для контролю доступів, які вони мають та як вони використовуються, ви можете використати такі інструменти безпеки як IAM Credentials Report та IAM Access Advisor (наприклад ви можете подивитися, коли певний юзер користувався якимось сервісом, і з’ясувати, що, можливо, якісь сервіси йому не потрібні).

Як дізнатися, що щось пішло не так

Найкращі практики у безпеці — це круто, але, на жаль, ніякі практики у безпеці не збережуть нас від нас самих. Мова йде про «помилку користувача». Найпростіший приклад — ви можете випадково запустити сервер, який не входить в безкоштовний пакет (Free Tier), або ви самі вирішили протестувати платний сервіс, а потім просто забули його вимкнути та видалити.

Щоб зменшити ризики випадкового використання платних ресурсів, потрібно, звичайно, контролювати свої дії, а особливо дії інших користувачів, якщо їх у вас багато. Для цього AWS надає декілька інструментів. Основні інструменти знаходяться в безкоштовному сервісі Billing and Cost Management. Тут ми можемо дізнатися поточні витрати і дуже детальні звіти за окремими сервісами та ресурсами. Інформації наскільки багато, що існують такі жарти: «Щоб розуміти білінг AWS, потрібно закінчити Гарвард» :) Насправді розібратися в білінгу не так вже й складно, просто інформації дійсно багато.

Тож використовуючи цей сервіс, ми можемо контролювати свої видатки. Також ми можемо бачити, скільки ми витратили ресурсів, які надані у безкоштовному пакеті (Free Tier). Але робити це вручну не дуже круто, та й не можемо ми це робити постійно і дуже часто. Тож є автоматизована можливість контролю за своїми видатками. Тут нам допоможуть бюджети (budgets).

Щоб вчасно помітити, що ресурси AWS починають витрачати кошти, які ви не планувати витрачати, вам достатньо створити бюджет, який контролює витрати (Cost budget). Якщо ви використовуєте безкоштовний аккаунт і не плануєте витрачати навіть кілька доларів, то можете налаштувати бюджет витрат на $1-2. При налаштуванні бюджету можна додати кілька отримувачів повідомлень (наприклад, через емейл). Тож якщо ви створите платний сервер і забудете його вимкнути — то ви отримаєте повідомлення про те, що у вас почали витрачатися кошти. Цікавий момент з бюджетами: можна налаштувати повідомлення не лише коли гроші вже витрачаються, а навіть і при прогнозованих видатках.

Як отримати додаткові безкоштовні ресурси або знижки

AWS — дуже потужний хмарний провайдер з величезною кількістю сервісів, тому недарма він найпопулярніший на сьогодні. Але, думаю, він також недарма вважається одним з найдорожчих, адже чим більше сервісів та ресурсів ми використовуємо, тим більше платимо. Та й ціна ресурсів іноді буває дорожчою, ніж в інших хмарних чи класичних провайдерів.

Але одночасно AWS можна назвати і найщедрішим хмарним провайдером. І не лише через його безкоштовний аккаунт на 1 рік. Компанія Amazon надає багато різноманітних знижок, наприклад, студентам чи стартапам. Офіційною політикою компанії є довгострокові партнерські відносини, тому дуже часто від них можна отримати безкоштовні додаткові ресурси чи значні знижки.

Наприклад, я брав участь у декількох онлайн-івентах від AWS і вже назбирав кілька сотень доларів кредитів для AWS. Багато платформ для хакатонів надають безкоштовні доступи до AWS, на час хакатону.

Також AWS надає безкоштовні ресурси та знижки неприбутковим організаціям. В одній з них (ADHD America) я беру участь як волонтер. Проєкт розробляє програмне забезпечення для програми, що працює з дітьми з синдромом дефіциту уваги з гіперактивністю (або СДУГ). AWS надає багато безкоштовних ресурсів і знижки цій організації для розробки додатків. Коли я приєднався до цього проєкту — одним з мотиваторів була можливість отримати безкоштовний доступ до великої кількості AWS-ресурсів та попрактикуватися роботі з ним (я тоді саме зацікавився пройти одну з AWS сертифікацій, і так підготовка до сертифікації перетворилася на одну з найяскравіших пригод в моєму професійному житті, але то вже інша історія). Тож варіантів отримати безкоштовні ресурси дуже багато, але більшість з них пов’язані з навчанням. Але і це вже класно.

Щодо знижок: якщо ваш продукт поки що не приносить прибуток, то можна написати в підтримку AWS і попросити обговорити надання знижок (або навіть безкоштовних ресурсів) для вашого проєкту. AWS зацікавлені в довгостроковому партнерстві і в тому, щоб заробляти не на вас, а разом з вами. Тому дуже часто вони йдуть назустріч і можна отримати дуже гарні умови. Навіть якщо у вас комерційний проєкт і ви лише розглядаєте можливість використання AWS, то можна отримати $300 доларів на тестування AWS за програмою AWS Proof of Concept Program, або навіть претендувати на суму до $100 000 в AWS кредитах (AWS credits) за програмою AWS Activate (у розділі FAQ розписано вимоги, яким потрібно відповідати перед подачею заявки на участь в цій програмі).

Висновки

AWS може декого лякати ціною, а може приваблювати величезними можливостями, безкоштовними ресурсами та гарними знижками. У будь-якому разі AWS — це сервіс, який можна і потрібно спробувати. Тим паче, що це можна зробити безкоштовно. Ось ще один з прикладів, коли людина безкоштовно хостить свій сервіс на AWS. Головне — не забувати про безпеку та обачливість. Всім безкоштовних кредитів та високого аптайму.

👍ПодобаєтьсяСподобалось8
До обраногоВ обраному4
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Коментар порушує правила спільноти і видалений модераторами.

Мабудь варто почати з того що в нас не налаштовують

  • AWS Organizations щоб хоча б була ієрархія акаунтів з окремими бюджетами, квотами та платіжними реквізитами
  • AWS Control Towerщоб для організації був Landing Zone як мінімум з CloudTrail, як максимум GuardDuty, з налаштованими квотами
  • Квоти на Consolidated Billing в AWS Organizations

То все можна засунуть в будь який AD та LDAP відповідно, та налаштувати через CloudWatch сповіщення про прогнозоване зростання споживання в Forecast’ах Cost Explorer’a.

Але девопсам зазвичай лінь й вони мають з сотню тупих виправдань власної безвідповідальності та бездіяльності... а рівень зрілості більшості організацій на ринку не дозволяє щось нормально організувати, навіть усвідомити якість поточної організації праці та відповідні бізнес ризики.

Cам отримував рахунки по 10К на зациклених лямбдах, бо розробники «тестують в хмарі, але частіш на проді»... й по розробці безпосередньо в хмарі в мене вже дуже сильно накипіло. Зазвичай підтримка амазона знімає такі випадки, але не більше 2-3 разів на організацію.

До речі, прочитавши заголовок статті, я думав, що мова буде йти якраз про цей набір

Нажаль на то не звертають увагу більшість компаній, а ескалювати бізнес ризики нема куди... бо навіть власники та стейкхолдери зачастіш недостаньо для того відповідальні.

Розумію ваш біль, дякую що поділилися. Стаття більше для розрбників, а по ДевОпсам дійсно відповідальності більше.

Історія із «раптовим» зламом Parler на Амазоні за один день під вибори доводить, що не в хакерах діло. У Амазона у самого рильце в пушку, тому найвірогідніше вони самі тупо виставляють рахунки як «комп′ютерний майстер живу-рядом» в надії потрапити на клієнта, який не розбирається в тому що насправді відбувається, для якого всі налаштування робили інші люди — і повірить що насправді він винен, що його зламали, наприклад пароль був занадто простий чи ще щось.

Таких історій із Амазоном просто валом. Як і факт, що із тими хто не став платити ці маразматичні рахунки на 10-12 кілобаксів нічого не сталося.

Все даже еще хуже)
У них там с выставлениями счетов все предельно херово + ручной пересчет.
Инциденты такие регулярно

На жаль не у космосі, коли там Бєзос був

Зазвичай безвідповідальність, недбалість, низьку кваліфікацію та лінь девопса, з зарплатою в 6-8 кілодолларів нема куди ескалювати...

— «А що як він від нас піде ?»
— «А що як він у нас лишиться ?»

А у вас якось вирішується питання Detraction Escalation ?
Може хоч хтось бути відповідальним за бізнес ризики, та відповідну заподіяну репутаційну та матеріальну шкоду ?

"раптовим"

bruh, ну не треба приплітати змову там де повно ідіотів і некомпетентних

Якщо ту помийку зламали через введення admin:admin, то це не вина амазона

В тому-то й справа що про це пишуть досвідчені адміни серйозних проектів.

0. Адміни — це не специ з безпеки
1. Адміни — це не специ з кодінгу

Як ті адміни пояснили, що дірки показували ще до того?
Як ті адміни пояснили перенесення до рфії?

PS: якщо хтось з aws реально злив доступ, то цей шанс не будуть витрачати на ту помийку
Є прибутковіші цілі

Підписатись на коментарі