2011 подписчиков
🔥 Uber один из самых больших пользователей Kafka в мире.
Как же они защищают свою систему?
В основе mTLS и строгие правила авторизации.
Uber моделирует свою производственную среду как сеть с нулевым уровнем доверия. Поскольку любой хост может быть скомпрометирован, они полагаются на сильные криптографические примитивы для установления доверия между сервисами. 🥷
uPKI - это платформа идентификации Uber, основанная на Spire. Она отвечает за выпуск недолговечных, автоматически изменяющихся пар криптографических ключей. Эти пары состоят из X.509-SVID, закрытого ключа и связки доверия. 🔐
При такой настройке система автоматически обновляет (ротирует) свои сертификаты, когда срок их действия подходит к концу.
Агент Spire держит долговременное соединение с сервером Spire и проактивно генерирует новый сертификат, когда наступает подходящий момент.
Это очень важно, поскольку позволяет Uber выпускать очень недолговечные сертификаты, что ограничивает время, необходимое злоумышленникам для использования утечки учетных данных.
mTLS обеспечивает Uber аутентификацию, конфиденциальность с помощью шифрования и целостность данных. 👍
Как при регистрации на рейс после проверки вашего удостоверения личности (вы тот, за кого себя выдаете) - следующая проверка:
✋ действительно ли вам разрешено лететь этим рейсом? (есть ли у вас билет с нужными разрешениями).
Для этого в Uber есть сервис под названием Charter. Подобно AWS IAM, это фреймворк, позволяет вам определять, кто и что может получить доступ к определенным сервисам и ресурсам.
В Kafka есть подключаемый фреймворк авторизации, в котором вы можете настроить пользовательский класс авторизатора, который будет выполнять аутентификацию за вас (`имя_класса_авторизатора`).
Этот авторизатор вызывается как часть любого потока запросов. В конфигурации Uber он вызывается с помощью пары actor, resource и operation.
Актор (actor) - сущность, которая является объектом принятия решения об авторизации (например, вы в аэропорту). Также называется KafkaPrincipal в Kafka.
🪨 Ресурс (resource), на основе которого принимается решение об авторизации (например, рейс).
🔧 Операция ( operation), выполняемая над ресурсом (например, посадка). Также называется ACLOperation в Kafka
Авторизатор совершает удаленный RPC-вызов к Charter, чтобы выяснить решение по данной паре, и далее кэширует результат.
1 минута
4 декабря 2023