AWS
AWS — це хмарна платформа Amazon і найстарша з великих хмар, і це видно у двох речах: у неї найбільше сервісів, і вона змушує розібратися з правами доступу, перш ніж дозволить зробити щось корисне. Це той самий факт: неявно не дозволено нічого, а акаунт — єдина межа, що справді стримує помилку. На цій сторінці — як насправді авторизується запит, чому кілька акаунтів є типовою відповіддю на ізоляцію, чим ви торгуєте, підіймаючись драбиною керованих сервісів, і які рядки роблять рахунок несподіванкою.
- Типова відповідь
- Заборонено
- Межа
- Акаунт
- Облікові дані
- Приймають, не зберігають
Акаунт — це радіус ураження
Новачки зазвичай вважають акаунт способом виставляти рахунки й намагаються розділяти середовища домовленостями про назви та тегами всередині одного. Це не тримається. Теги не спиняють скрипта, префікс у назві не спиняє права, а випадкове видалення у спільному акаунті дістає до всього, що бачив той, хто викликав. Акаунт — це жорстка межа: окремі ресурси, окремі типові ліміти, окремі облікові дані й жодної неявної довіри в обидва боки. Тож відповідь на питання «як уберегти прод від стейджингу» зазвичай — ще один акаунт, а створити його — це хвилини роботи.
Organizations — це шар, що робить багато акаунтів керованими, а не хаотичними. Акаунти лежать у дереві організаційних одиниць, рахунок консолідується нагорі, а service control policy застосовуються до одиниці й до всього під нею. Ці політики — єдиний механізм, що спиняє адміністратора акаунта, і саме тому це правильне місце для правил, які мають триматися незалежно від того, хто питає: жодних ресурсів поза дозволеними регіонами, жодного вимкнення журналювання аудиту, жодного видалення інструментів безпеки. Усе решта — хто що може робити щодня — належить самим акаунтам.
Географія — інша межа, і вона конкретніша, ніж здається. Регіон — це окремий набір дата-центрів із власною копією більшості сервісів; ресурс в одному регіоні не існує в іншому, і більшість сервісів регіональні, навіть коли консоль показує їх глобальними. Усередині регіону зона доступності — це незалежний домен збою з окремим живленням і мережею, і рознесення на дві-три зони — це те, що дає сервісу пережити проблему дата-центру. Тут же живе й цінова несподіванка: трафік між зонами тарифікується, часто в обидва боки, тож балакучий сервіс, рознесений по зонах заради стійкості, платить за цю стійкість погігабайтно.
Вибір серед двохсот сервісів
Каталог — це те, що людей приголомшує, і корисне спрощення таке: майже будь-яка робота існує на трьох рівнях абстракції. Можна орендувати машину й робити все самому; можна взяти керовану версію, де постачальник тримає операційну систему, латання, бекапи й перемикання при збої; або взяти безсерверну, де немає чого розмірювати взагалі, а платите ви за запит. Ті самі три рівні існують для обчислень, баз, черг і майже всього іншого, і рух угору драбиною міняє контроль і переносимість на експлуатаційну роботу, якої ви більше не робите.
| Рівень | Що перестаєте робити | Чого це коштує |
|---|---|---|
| Орендувати машину | Нічого: ви володієте латанням, бекапами, перемиканням, потужністю й черговими змінами. | Найменшого замикання й найбільшої роботи. Правильно, коли вимога справді потребує контролю. |
| Керований сервіс | Операційної системи, оновлення версій, реплікації й більшої частини історії відновлення. | Надбавки за годину й обмежень конфігурації, які не перевищити. Зазвичай правильна відповідь. |
| Безсерверний | Планування потужностей узагалі: немає чого розмірювати й нічого не працює в простої. | Оплати за запит, що на масштабі обертається проти вас, холодних стартів і найглибшого замикання. |
Дві чесні засторови щодо цієї широти. Перша: AWS майже нічого не прибирає, тож каталог містить кілька поколінь тієї самої ідеї, а консоль радо запропонує вам найстаріше — перевіряйте, коли сервіс зʼявився і що його замінило, перш ніж брати. Друга: кількість сервісів не є підставою використовувати багато з них: кожен доданий — це модель прав, яку треба зрозуміти, режим збою, який треба вивчити, ліміт, у який упреться, і рядок у рахунку. Систему з шести добре зрозумілих сервісів експлуатувати легше, ніж із двадцяти ледь зрозумілих, — і саме її хтось зможе тримати, коли автор піде.
Як це виявляється в реальній поставці
Рахунок — це схема архітектури, якої ніхто не малював навмисне, і несподіванки зазвичай не в обчисленнях. Дані, що виходять із хмари, тарифікуються погігабайтно, і саме цей рядок перетворює функцію відео чи експорту на бізнесову проблему. Трафік між зонами доступності тарифікується, тож у стійкості є ціна за гігабайт. Керований шлюз трансляції адрес бере і погодинну ставку, і ставку за дані, — тому приватна підмережа, що говорить з інтернетом, може коштувати більше за інстанси в ній. А все, що виділили й забули — відʼєднаний диск, простійний балансувальник, зарезервована адреса, знімок після міграції, — тарифікується за повною ставкою, доки існує.
Дві звички не дають цьому перетворитися на щорічну паніку. Тегуйте все власником і призначенням із першого ж ресурсу, бо тег, доданий пізніше, ніколи не покриває того, що існувало до нього, а нетегований рахунок нікому не приписати. І створюйте ресурси з коду — репозиторій, перегляд, застосування конвеєром, — а не з консолі. Консоль — правильне місце, щоб дивитися на речі, і хибне, щоб їх робити: ресурс, створений клацанням, не має історії, не відтворюється в іншому акаунті й невидимий для наступної людини, доки не зʼявиться в рахунку.
Нарешті, знайте, де закінчується відповідальність постачальника. AWS тримає залізо, гіпервізор, фізичну безпеку й нутрощі керованого сервісу; ви володієте конфігурацією, правами, латанням усього, що встановили, і передусім своїми даними. Кожен гучний «хмарний злам» останнього десятиліття був на клієнтському боці цієї межі: бакет, лишений публічним, закомічений ключ, роль із більшими правами, ніж їй було треба. Постачальник не врятує вас від політики, яку написали ви, а типові налаштування — це відправна точка, а не стан безпеки.
Де це вироджується
- Один акаунт на всі середовища, розділені домовленостями про назви, які не спиняють нічого.
- Довгоживучі ключі доступу в CI, на ноутбуках і в репозиторіях замість прийнятих ролей.
- Політика із зірочкою, написана, щоб розблокувати першу годину, і ніколи потім не звужена.
- Журнали аудиту, записані в той самий акаунт, що й навантаження, яке вони мають аудитувати.
- Ресурси, створені в консолі: нічого не переглянути, не відтворити й не пояснити.
- Нетеговані ресурси: рахунок нікому не приписати, і прибирання не має власника.
- Балакучий сервіс, рознесений по зонах доступності, платить погігабайтно за власну балаканину.
- Сервіс старого покоління, взятий тому, що консоль запропонувала його першим.
- Двадцять сервісів там, де витягли б шість, і в кожного власний режим збою.
Коли це застосовувати
Застосовуйте, коли
- Коли потрібен сервіс, якого більше ніде немає, — це досі найчастіша чесна причина обрати AWS.
- Суворі вимоги ізоляції, де межа акаунта й стелі рівня організації роблять справжню роботу.
- Команди, що під це наймають: найглибший пул людей і написаних відповідей — справжній експлуатаційний актив.
- Навантаження, яким потрібно багато регіонів, де важать географія й зрілість у кожному регіоні.
Уникайте, коли
- Мала команда, де нікому володіти правами: модель стає витратою раніше, ніж захистом.
- Один застосунок, який керована платформа підніме за десяту частину налаштування й пʼяту частину понять.
- Продукти з великим вихідним трафіком — відео, завантаження, експорти, — доки ви не змоделювали ціну за гігабайт.
- Вибір за замовчуванням, без питання, що ваша організація вже експлуатує і що вже знає.
Було корисно?
Поділіться з тим, хто працює над тією ж задачею.