13 най-добри практики за защита на микроуслуги

Архитектурата на микроуслугите осигурява гъвкавост, мащабируемост и възможност за модифициране, добавяне или премахване на софтуерни компоненти, без да се засягат други части на приложението.

В допълнение към по-кратките цикли на разработка на софтуер, по-малките екипи и гъвкавите опции за език за програмиране, той ви позволява да мащабирате или отстранявате проблеми с определени функции или услуги, без да се намесвате в другите компоненти.

Като цяло, микроуслугите позволяват разбиването на големи моногамни приложения на отделни услуги, които могат да се разгръщат независимо. Въпреки това, тези по-малки независими услуги увеличават броя на компонентите, което води до сложността и трудността при осигуряването им.

Изображение на монолитна срещу микроуслуги архитектура Червена шапка

Обикновено типично внедряване на микроуслуги ще има слоеве хардуер, услуга или приложение, комуникация, облак, виртуализация и оркестрация. Всеки от тях има специфични изисквания за сигурност, контроли и предизвикателства.

Предизвикателства пред сигурността, свързани с микроуслугите

Микроуслугите обикновено са широко разпространени системи със сложни правила за достъп, повече трафик за наблюдение и по-голяма повърхност за атака. Освен това повечето облачни микроуслуги работят в облачни среди, които също имат различни конфигурации и контроли за сигурност.

Поради големия брой API, портове и компоненти, които са изложени, традиционните защитни стени може да не осигурят адекватна сигурност. Тези проблеми правят разгръщанията на микроуслуги по-уязвими към различни киберзаплахи като човек по средата, атаки чрез инжектиране, скриптове между сайтове, DDoS и други.

Мрежовата сигурност е друго предизвикателство с микроуслугите. По-специално, контролът на самоличността и достъпа придобива ново ниво на сложност. Други уязвимости включват несигурен код и пропуски в системите за откриване на услуги.

Въпреки че осигуряването на микроуслуги е по-трудно от монолитните приложения, можете да ги защитите ефективно, като създадете добра стратегия и следвате най-добрите практики.

В идеалния случай архитектурата изисква разпределен подход, който трябва да обхваща всички различни компоненти.

Типичните области за адресиране включват

  • Защита на приложения, микроуслуги и потребители
  • Защита на самоличността и управление на достъпа
  • Защита на данните
  • Подобрете сигурността на комуникацията между услугата
  • Мониторинг на микроуслуги и системи за сигурност

Най-добри практики за защита на микроуслуги

Една от най-добрите стратегии е да се използва комбинация от най-добри практики, инструменти и контроли за защита на цялата екосистема. Действителният подход може да се различава в зависимост от вида на услугите, приложенията, потребителите, околната среда и други фактори.

Ако решите да използвате микроуслуги, трябва да сте сигурни, че отговаряте на всички изисквания за сигурност за услугите, връзките и данните.

Нека сега да разгледаме някои ефективни практики за сигурност на микроуслугите.

#1. Изградете сигурност от самото начало 👮

Направете сигурността част от цикъла на разработка. В идеалния случай интегрирайте сигурността в разработката и внедряването на микроуслуги от самото начало. Обръщането към сигурността по този начин е лесен, ефективен и по-евтин подход, отколкото да чакате да я добавите, когато разработката на софтуера е към завършване.

  Коригирайте приложението Disney Plus Hotstar, което не се зарежда

#2. Използвайте механизъм за защита в дълбочина

Защитата в дълбочина (DiP) е техника, при която прилагате няколко слоя за сигурност на вашите услуги и данни. Практиката затруднява нападателите да проникнат през множеството слоеве, като по този начин осигурява силна сигурност за вашите услуги и данни.

За разлика от решенията за сигурност на периметъра като защитните стени, концепцията за защита в дълбочина е различна. Той разчита на комбинация от инструменти като антивирусна програма, защитна стена, управление на корекции, анти-спам софтуер и други, за да осигури множество слоеве за сигурност, разпределени в цялата система.

Защита в дълбочина Многослойна сигурност Изображение: Имперва

С този подход първо трябва да идентифицирате чувствителните услуги, след което да приложите подходящите слоеве за сигурност около тях.

#3. Разположете сигурността на ниво контейнер 📦

Най-често микроуслугите разчитат на контейнерна технология. Като такова, осигуряването на контейнерите, както вътрешно, така и външно, е един от начините за намаляване на повърхността за нападение и рисковете. В идеалния случай стремежът към принципа на сигурност с най-малко привилегии е добра практика и изисква комбинация от стратегии, включително, но не само;

  • Ограничаване на разрешението до необходимия минимум
  • Избягвайте да изпълнявате услуги и всичко друго, като използвате sudo или привилегировани акаунти.
  • Ограничете или контролирайте достъпа и потреблението на наличните ресурси. Например ограничаването на достъпа до ресурсите на операционната система от контейнерите помага за предотвратяване на кражба или компрометиране на данни.
  • Не съхранявайте тайни на контейнерния диск.
  • Използвайте подходящи правила, за да изолирате достъпа до ресурсите.

Също така е жизненоважно да се гарантира, че изображенията на контейнери нямат никакви уязвимости или проблеми със сигурността. Редовното сканиране за сигурност и уязвимост на контейнерите ще помогне да се идентифицират рисковете.

Типичните инструменти за сканиране на изображения включват Клеър, Котваи още.

#4. Внедрете многофакторно удостоверяване 🔒

Активирането на многофакторно удостоверяване подобрява сигурността на предния край.

Потребителите, осъществяващи достъп, ще трябва да предоставят данните за своето потребителско име и парола в допълнение към друга форма на потвърждение, като код, изпратен на техните телефони или посочен имейл адрес. Техниката прави по-труден за нападателите, които може да използват откраднати или хакнати идентификационни данни, за достъп до микроуслугите, тъй като те няма да имат начин да осигурят второто удостоверяване.

#5. Използвайте потребителска идентичност и токени за достъп

При внедряването на микроуслуги голям брой приложения и услуги ще изискват сигурно оторизиране и контрол на достъпа. Рамка за оторизация като OAuth 2.0 и OpenID ви позволява да обработвате сигурно токените, като по този начин защитавате вашите микроуслуги. Следователно това позволява на приложения на трети страни да имат достъп до други услуги или данни от потребители.

При типично внедряване основното приложение ще подкани потребителя да упълномощи услугата на трета страна. След като приеме това, приложението генерира токен за достъп за сесията.

По-специално, OAuth е една от най-ефективните стратегии за потребителска самоличност и контрол на достъпа. Въпреки че има няколко други протокола за оторизация и можете също да създадете свой собствен, най-добрата практика е да използвате OAuth тъй като е по-стандартен, стабилен и широко приет.

  Как да изготвите отчет за проверка на оръжие

#6. Създайте API Gateway

Като цяло микроуслугите се състоят от няколко компонента, разпределени в различни мрежи и достъпни от широк набор от системи и клиенти. Разкриването на микроуслугите увеличава уязвимостите и рисковете за сигурността. Един от начините да ги защитите е да създадете единна и сигурна входна точка, която ви помага да централизирате целия достъп от външни системи и клиенти.

За да постигнете това, внедрите API шлюз, който да проверява всички входящи заявки за проблеми със сигурността, преди да ги насочите към съответните микроуслуги. API шлюзът се намира между клиентските приложения и микроуслугите. След това ограничава излагането на микроуслуги, като същевременно предоставя допълнителни функции за управление на заявки като удостоверяване, SSL прекратяване, превод на протоколи, наблюдение, маршрутизиране на заявки, кеширане и др.

С този подход шлюзът на API насочва всички външни услуги към микроуслугите, като същевременно поддържа принципа на защита в дълбочина на сигурността.

Изображение на шлюза на API за микроуслуги Livebook

Типичните API шлюзове включват NGINX, Конг, Tyk, посланик, AWS API шлюзи още.

За да научите повече за сигурността на API, вижте нашето ръководство защо и как да защитите крайната точка на API.

#7. Профилни API на базата на зоната за разполагане

Приложете ограничения, базирани на роли, като гарантирате, че потребителите имат достъп само до API и услугите, които изискват. Тъй като повечето зловреден софтуер често излага услугата на повече хора, ограничаването на достъпа само до оторизирани потребители намалява рисковете. Една техника за намаляване на експозицията е етикетирането на API въз основа на потребителите, които трябва да имат достъп до тях. Като цяло API могат да бъдат;

  • Ethernet API – За услуги, изложени на външния свят извън центъра за данни.
  • API на корпоративната зона – те са предназначени за вътрешния частен трафик
  • DMZ API – за обработка на трафика, произхождащ от интернет
  • API на хибридна зона – за внедряване на центрове за данни

#8. Осигурете комуникациите услуга-услуга

Ефективните практики включват удостоверяване и оторизиране на заявки, когато две микроуслуги комуникират.

Като цяло има три основни техники, които можете да използвате, за да защитите междусервизните комуникации. Това са Trust the network, JSON Web Token (JWT) и Mutual Transport Layer Security (mTLS или Mutual TLS).

Защита на комуникациите между услугите с JWT Image Livebook

От трите най-популярен е mTLS. При този подход всяка микроуслуга трябва да носи чифт публичен/частен ключ. След това клиентската микроуслуга използва двойката ключове, за да се удостовери пред получаващата микроуслуга чрез mTLS.

По време на удостоверяване всяка микроуслуга генерира сертификат. След това всяка микроуслуга ще използва сертификата от другата, за да се удостовери.

Въпреки че TLS осигурява цялост и поверителност на данните в транзит, той също така позволява на клиента да идентифицира микроуслуга. Клиентската микроуслуга обикновено познава другата микроуслуга. Въпреки това, тъй като TLS е еднопосочен, получаващата микроуслуга не може да провери микроуслугата на клиента – и нападателите могат да се възползват от този недостатък. От друга страна, mTLS предоставя средство, чрез което всяка от микроуслугите може да идентифицира другата.

#9. Лимит на 🚏 клиентски трафик

Ограничаването на външния трафик предотвратява проблеми като атаки за отказ на услуга (DoS), както и случаи, при които някои клиенти консумират по-голямата част от честотната лента на приложението. Един подход е да се прилагат различни правила, които могат да наблюдават и контролират скоростта на трафика, изпратен или получен от клиент, въз основа на IP, време и т.н.

  Как да проверите хардуерните спецификации на Chromebook

Конфигурирайте услугите си да забавят, ако открият няколко неуспешни опита за влизане във вашите API или друга подозрителна дейност.

Бавната система би обезсърчила нападателите и вероятно би се отказала от опита им за достъп до услугите. Можете да оцените лимит с помощта на API шлюза, чрез кода или друга техника. Обикновено повечето от SaaS среди имат ограничение на скоростта на API, за да се минимизира злоупотребата от страна на потребителите, както и атаките.

#10. Използвайте мениджъри за оркестрация

Мениджърите на оркестрации ви позволяват да автоматизирате конфигурацията, координацията и други задачи за управление на микроуслуги в допълнение към подобряването на сигурността. Обикновено инструментите ви позволяват да управлявате множество контейнери, да ограничавате достъпа до метаданни, да разделяте натоварванията, да събирате регистрационни файлове и др.

Някои инструменти за оркестрация имат допълнителни функции, които позволяват на разработчиците да съхраняват и споделят чувствителна информация като SSL сертификати, ключове за криптиране, пароли и токени за самоличност.

Двата често използвани метода за ефективна оркестрация на микросервизи са;

  • Кодиране на оркестрацията като микроуслуга
  • Използване на API шлюзовете за предоставяне на слой за оркестрация

Оркестрацията през API шлюза не се препоръчва поради предизвикателства, когато има нужда от мащабиране на услуги.

Слой за оркестриране на микросервизи – Изображение Globallogic

Типичните инструменти за управление на оркестрацията включват Kubernetes, Istio, Услуга Azure Kubernetes (AKS)и т.н.

За да научите повече, разгледайте оркестрацията на контейнери за DeOps.

#11. Наблюдавайте всички ваши системи и услуги

Тъй като микроуслугите разчитат на разпределени системи, трябва да имате надеждна и ефективна стратегия за наблюдение за всички отделни компоненти.

Внедряването на непрекъснато наблюдение ви позволява своевременно да откривате и адресирате рисковете за сигурността. За тази цел има широк набор от решения за наблюдение на микроуслуги, включително Прометей, Statsd, InfluxDB, Logstashи т.н.

Мониторинг вътре в архитектурата на микроуслугите

Използвайте подходящите инструменти за наблюдение на вътрешни системи и услуги. Някои най-добри практики включват;

  • Разрешете регистриране на приложния слой. Можеш Splunk, Графана, ELK стеки други инструменти, които събират регистрационни файлове на ниво приложение, контейнер, мрежа и инфраструктура.
  • Наблюдавайте показателите за използване
  • Използвайте тенденциите в показатели като процесор, памет, времена за реакция, грешки, известия и други, за да откриете необичайни дейности, показващи съществуваща или потенциална атака.
  • Одитирайте регистрационните файлове в области като входящи клиентски заявки, записи в бази данни, контейнери и други, за да идентифицирате несъответствия или необичайни дейности.

#12. Автоматизирайте дейностите по сигурността

Автоматизирайте процесите на сигурност като внедряване на актуализации, сканиране за уязвимости, наблюдение, прилагане на политики и други дейности. Освен това проверете актуализациите, за да сте сигурни, че са защитени и че не въвеждат нови уязвимости.

След актуализации софтуерът за сигурност трябва в идеалния случай да извършва тестове на всички контейнери и микроуслуги, за да види дали може да е имало някои уязвимости или проблеми със сигурността, които са се случили преди.

#13. Защитете 🛡️ данните по всяко време

Защитете данните при пренос и в покой. В идеалния случай наложете използването на HTTPS за всички комуникации, за да защитите данните при пренос и криптиране за всички чувствителни данни в покой. Избягвайте предаването и съхраняването на обикновени текстови пароли, ключове, идентификационни данни и чувствителни данни, които се намират извън кода.

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

Заключение

Микроуслугите разчитат на разпределени компоненти, за да предоставят предимства като повече гъвкавост и опции за внедряване. Въпреки това, когато използват микроуслугите, организациите трябва да коригират политиките и стратегиите за вътрешна сигурност към по-облачен и разпределен подход.

В идеалния случай се стремете към намаляване на повърхността за атака, защита на средата на микроуслугите, API, приложенията и данните.