Telegram Web Link
#машины_aws

Половину огоньков мы набрали. Пожалуй, этого хватит, чтобы запитать затею на английскую версию произошедшего. 🙂

Вашему вниманию очередной инцидент с AWS, который мне пришлось разобрать.

Вынужден признать, что из-за таких приключений лучшие умы Большого Теха с недоверием относятся к managed service’ам облачных провайдеров.
#машины_разное

Группа черных шапок, известная в определенных кругах как NB65, некоторое время назад сообщила о взломе защищенного периметра Qiwi и утечке платежных данных.

Об этом написали несколько Телеграмм каналов (например), после чего шум быстро поутих. По моей информации из Qiwi ничего не утекало, сами Paysystem Tech какой-либо связи с Qiwi не имеют (сайт у них какой-то мутный вдобавок, они живы вообще?).

Если у вас есть другая информация, поделитесь со мной в ЛС или в комментариях.

NB65 выложил полученные платежные данные в открытый доступ (сами нагуглите). В комментариях тут же набежали оглоеды в надежде получить номер карты, срок действия, CVV и заняться богомерзким фродом, но их ожидает разочарование, ведь CVV там нет.

А все потому что по правилам PCI-DSS, хранение CVV кодов даже в системе токенизации запрещено. :) Утекший номер и дедлайн карточки все еще является критической информацией, он попадает под PCI и PII (персональные) данные, но простому хитрозадому болванчику с ними ничего особо не сделать.

Учитывая вышесказанное, неудивительно, что потуги хакеров не получили никакой реакции, кроме общественной ;)

Если интересно, ставьте огонечки под этим постом, расскажу, как предприятия защищают платежные данные, и почему нынче так мало настоящих дампов платежных карт (по крайней мере в открытом доступе).
#деньги

Возвращаюсь к надежности платежных систем.

Однажды, устав компенсировать чарджбеки за фрод на банковских картах, лучшие умы AmEx, Visa и MasterCard решили создать консилиум под названием PCI (Payment Card Industry) Security Standards Council, в рамках которого начали разрабатывать стандарты безопасности.

PCI-DSS (Data Security Standard), в целом сложен, потому как подразумевает защиту данных на всех уровнях, как программных, так и физических.

Тут надо сделать небольшую паузу и уточнить неочевидное: не вся коммерция, принимающая оплату с помощью платежных карт, подвержена регуляторным требованиям; все зависит от объема платежей через оных. Не скажу наверняка, но "стартовый порог" - 6 миллионов долларов США. Ниже либо вообще ничего не надо делать, либо достаточно заполнить опрос онлайн.

Но это скучно! Куда лучше, когда к тебе приходит ОЦЕНЩИК.

Да-да, PCI терпеть ненавидит слово аудит, и компании проходят так называемую оценку. Семантика здесь играет роль: аудитор ищет нарушения, в то время как оценщик держит в руках список требований и собирает доказательства того, что контора добросовестно выполняет требования. Презумпция невиновности против декларативности.

Такие оценщики называются PCI QSA (Qualified Security Assessor). В конторах с особо крупными объёмами хранимых данных и платежей, есть как внутренние QSA, так и внешние. Внутренние оценщики регулярно следят за порядком и выступают основным контактом во время внешней оценки.

Что касается требований PCI-DSS, то их можно упрощенно разбить на такой список:
- Есть то, что можно хранить, например номер и срок действия карты, и что категорически нельзя, например CVC.
- Все данные шифруются от и до с момента, как данные карточки были введены. Читай, encryption-in-transit и encryption-at-rest.
- В открытом виде данные платежных карт не должны нигде проскакивать, за исключением особых случаев, например, передачи данных гос. органам.
- Компания-обработчик обязуется проводить регулярные испытания на уязвимость.
- Имеется мониторинг безопасности.

Я раскрою подробности в следующем посте, но самое любимое требование - не светить открытыми данными. Вы не поверите, но были времена, когда номера карт в открытом виде валялись в логах.

Зуб даю, где-нибудь и сейчас валяются.
#деньги

Как я уже говорил, PCI-DSS касается не всех. Если вы открыли небольшой магазин плюшевых игрушек, запустили его в сети и принимаете не более 300 тысяч платежей в год, вам и заморачиваться особо не надо. Многие в таком случае отдают процессинг платежей сторонним поставщикам, будь то SberPay, Яндекс.Касса в России, или Adyen, Mollie, Stripe и прочие в ЕС/США.

Мелким товарищам так проще всего и относительно дешево. На больших объемах все куда хуже и очень дорого.

Итак, задача: не допустить утечки платежных данных, чтобы всякие сволочи не получили к ним доступ. Имеем в виду, что каждый год ждем QSA с визитом, за что мы, кстати, сами платим из своего кармана.

Первое и самое умное, что нужно сделать: огородить отдельно тот кусок инфраструктуры, который будет участвовать в платежах, это сильно упростит ежегодную оценку, да и в целом на малых просторах проще применять практики безопасности. Набираем команду, которая присягает на верность PCI-DSS и всеми правдами и неправдами защищает данные. Чаще всего эта команда поднимает инфраструктуру в клавде, который обладает PCI-DSS.

Вот тут надо сделать остановку. PCI-DSS допускает игнорировать часть требований, если вы используете поставщика, который им удовлетворяет. Иными словами, если взять тот же AWS, то никто не будет требовать вас соответствовать требованиям физической безопасности ЦОД, об этом уже позаботился AWS.

Вторая тонкость заключается в разделении ролей. Мы имеем тех, кто имеет доступ к реальным данным, то есть они могут их расшифровать при необходимости, и тех, кто пишет код, работающий с платежными данными. Эти роли не должны пересекаться: либо пиши код, либо кати в прод.

В нашей огороженной инфраструктуре строится сервис жетонизации токенизации, куда на вход приходит зашифрованная на клиенте платежная информация, расшифровывается, зашифровывается уже с другим ключом и кладется в базу. На выход клиенту отдаётся токен - уникальный идентификатор карты, который может и будет использоваться для платежей внутри, но абсолютно бесполезен снаружи. Сама платежная информация все это время хранится в защищенном периметре и не покидает его никогда, за исключением отправки запроса в платежную сеть.

Помимо этого мы имеем ряд других требований: регулярно проводить проверку на проникновение, обновлять пакеты и ядро ОС, вести учет изменений в системе (GitOps в помощь), кучу бумажной и процедуральной волокиты, запрет на трафик куда угодно и мониторинг безопасности.

Последние два момента я раскрою в следующем посте, но тут я хочу подчеркнуть важную деталь.

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

Так что если вы увидите сырые данные карточек в открытом виде, то либо это внутренний слив, либо поставщик платежей абсолютно не следовал требованиям PCI-DSS.
#деньги #машины_разное #машины_aws

Когда мы говорим о запрете трафика куда угодно наружу и внутрь, мы имеем в виду ANY/ANY правила на межсетевых экранах.

PCI-DSS требует жесткого контроля над входящим и исходящим трафиком в безопасный периметр. Удовлетворить это требование можно двумя способами.

Первый способ подразумевает очевидное: прокси и фаерволы; второй же допускает реактивный подход. Вместо того, чтобы разрешать трафик на определенные адреса, мы можем сделать правило, например, разрешающее весь исходящий HTTPS трафик. Однако мы будем держать белый список и проверять весь трафик на соответствие этому списку. В случае подозрительного пакетов, дергаем дежурного, чтобы он пошел и посмотрел, что там такое происходит.

Что использование прокси, что мониторинг трафика несут с собой определенные удобства и неудобства. С прокси суть тот же белый список, что требует дополнительной работы при интеграции с новой платежной системой, особенно если та находится за поставщиком DDOS защиты навроде Akamai. С мониторингом трафика получаем неприятный опыт дежурства.

Мониторинг безопасности сам по себе необходим, и PCI-DSS по сути требует от нас делать то, что мы и так должны делать. Взять к примеру доступ к инфраструктуре, где лежат реальные данные клиентов. Людям/операторам там делать нечего, за исключением случае дешифровки данных по запросу властей, а значит каждый такой доступ должен отправлять уведомление дежурному.

Если мы развернули систему токенизации в облаке, то подобный мониторинг должен быть не только на уровне самих узлов (доступ по SSH), но и на уровне самого клавда - sts:AssumeRole “опасных” ролей или в целом подозрительные API вызовы.

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

В конце концов скомпроментированный сотрудник может просто напросто выключить мониторинг, слить данные, включить мониторинг обратно.
​​#пятничное #машины_разное

Когда тебя спрашивают, чем мониторинг отличается от observability.
#машины_разное

Есть проблема, когда SSD отваливается ровно через 40 000 часов использования.

Есть проблема, когда SSD отваливается ровно через 32 768 часов использования.

И эти проблемы не связаны: While the failure mode is similar, this issue is unrelated to the SSD issue detailed in this Customer Bulletin released in November 2019, which describes an SSD failure at 32,768 hours of operation.

Как хорошо, когда #железопроблемы тебя не касаются.
#машины_разное

"...back in the ‘90s, one of IBM’s Redbooks stated that the “happy path” for any piece of software comprised less than 20 percent of its code; the rest was dedicated to error handling and resilience."

Эти строки из поста про "Отрицательную инженерию" напомнили мне про одну занятную историю с платежными методами.

Средний пользователь имеет 2, максимум 3, подключенных платежных метода, будь то банковская карта, Apple/Google Pay и иже с ним. Спроектировать систему работы с платежными инструментами не так уж сложно, ориентируясь на такой профиль пользователя.

Но со временем появляется тот мизерный процент пользователей с невероятным количеством методов, уникальными способами оплаты с разных мест и прочие corner case'ы, которые предусмотреть невозможно, заложить в систему избыточно...

А чинить и доводить до ума все равно надо.

Пост выше - хороший набор аргументов для продавливания повыше в беклоге задач по оплате технического долга и доведении систем до ума. Пользуйтесь на здоровье.
#машины_разное

Многие кандидаты валятся на интервью, когда не могут продемонстрировать полное понимание работы предлагаемых инструментов. Проще говоря, если предлагаешь Kafka в роли брокера сообщений, то будь добр понимать внутреннее устройство со всеми его приколами.

Такая придирчивость не только к кандидатам, но и коллегам во время архитектурных разборов. Хуже системы, поведение и принцип работы которой никому не понятен, в эксплуатации не найти.

Отсюда же недоверие к managed хранилищам. К примеру, архитектура той же DynamoDB еле описана в документации и одноименной научной работе. Все что мы, по сути, знаем, что это Leader-Follower СУБД с шардированием по ключу партиции. Каким именно образом работает шардирование, и сколько мы имеем шардов на старте, и как именно распределяются capacity units по шардам, мы не знаем.

С open-source СУБД все гораздо проще, открыл код, да посмотрел и ничего не понял. Для тех, кто не хочет смотреть в код и ничего не понимать, есть отличная литература по кишкам. Одно время я запоем читал Database Internals, а теперь с таким же удовольствием читаю про внутренности Postgres 14-ой версии.

Потому что с autovacuum шутки плохи!
#люди

https://www.infoworld.com/article/3669477/devs-don-t-want-to-do-ops.html

"You build it - you run it" рискует свернуть совсем не туда. Если изначально идея заключалась в том, чтобы строить надежные системы, потому что кому как не тебе в ночи потом это чинить, то теперь люди хотят просто комфортно что-то строить, а чинить это будет пусть кто-то другой.

Колесо Сансары сделало еще один оборот.
#машины_aws

Мимо меня прошло две новости, которые заслуживают отдельного внимания и разбора.

Начну с новости меньшей. Теперь можно импортировать данные из S3 в новую таблицу DynamoDB. Использований у этого масса: как механизм Disaster Recovery, так и дешевый экспорт/импорт данных для временной обработки.

Другой анонс куда интереснее и называется IAM Role Anywhere. С "ролями везде" можно расширить функциональность сторонних сервисов "подружив" ее с AWS'ным контролем доступа, или даже сделать свои собственные Service-to-Service модели доступа.

Я распишу этот релиз подробно в отдельном посте (обещаю лонгрид на Медиуме), потому что новость просто пушка.
#люди

Удивительно взаимоисключающие, но сосуществующие факторы моей нынешней работы:
1. Надо проектировать/разрабатывать из расчета, что ты будешь поддерживать это годами.
2. Надо проектировать/разрабатывать из расчета, что через месяц это отдадут кому-то другому.
#машины_aws

Разочарования пост.

У меня были довольно большие ожидания от IAM Role Anywhere. Я прочитал анонс криво и решил, что речь идет о своей собственной внутренней аутентификации и авторизации.

Проще говоря, мы могли бы регистрировать свои собственные сервисы в IAM, создавать свои Actions, Principals и так далее. Какие возможности открываются.

Оказалось, что вместо этого мы получаем еще один способ выполнить sts:AssumeRole используя mTLS в качестве управления доступом.

Это тоже имеет свою пользу, нам больше не нужно заводить отдельного IAM пользователя, генерировать ему API ключ и секрет и скармливать его on-premise приложениям… Но скучно.

В итоге забросил писать блог об этом. Да, я обещал вам лонгрид, но я обещал вам годный контент, а не переписанный блог от AWS.

А отсутствие контента лучше плохого контента.
#деньги

Я только что сдал экзамен по PCI Fundamentals, и одним из вопросов там был: “С какой целью PCI SSC проводит ежегодные встречи сообщества?

Варианта “А на кой шиш мне это знать?” в списке ответов не было.
#деньги #машины_разное

В стандарте PCI-DSS есть одна фишка, которая делает его моим любимым стандартом на рынке. Эта фишка называется Compensating Controls (далее СС), и она позволяет переиначить любое из 12 требований, разумеется, в разумных пределах.

Что сами по себе означают СС? СС позволяют подойти к одному или нескольким требованиям PCI-DSS иначе. Взять к примеру требование 1.1.4 Requirements for a firewall at each Internet connection and between any demilitarized zone (DMZ) and the internal network zone, которое в простонародье означает “никаких ALLOW 0.0.0.0 в интернеты, даже на порты 80 и 443!

Следовать этому требованию можно, но далеко не всем и всегда. Если у вас используются поставщики платежей, обслуживающие транзакции для карточек, и они живут за CDN, то у вас есть несколько вариантов:
1. Добавить все IP адресы CDN в разрешенный список фаерволла.
2. Поставить прокси-сервер, чтобы тот фильтровал только на определенные доменные имена.

Ни то, ни другое целиком требование 1.1.4 не закрывает, прокси-сервер все еще имеет выход в сеть, а за сетью CDN живет не только ваш поставщик, мало ли кому там трафик уйдет. И тут на помощь приходят СС: а давайте мы разрешим трафик наружу, но будем следить за тем, куда этот трафик идет (я об этом уже писал тут).

У СС есть ряд определенных ограничений, ведь регулятор не дурак, и шатать свой стандарт никому не даст. Краткий (но не полный!) список нюансов таков:
1. Смысл в СС в соблюдении требований, а не обходе.
2. Нельзя использовать одно требование в качестве CC для другого (например использовать шифрование паролей в качестве СС для простых паролей).
3. Нельзя применить СС, если QSA указал на грубое несоблюдение требования
4. Каждый СС надо документировать, поясняя почему именно нельзя удовлетворить требование как есть.

Ну и так далее. Очень крутой стандарт, гибкий как резинка, крепкий как паутина. Сейчас еще на PCI ISA доучусь, вообще интересные вещи узнаю.
#машины_aws

Удивительная компания AWS все-таки. Смотришь анонс какого-нибудь re:Invent или саммита, видишь сплошные bleeding edge технологии и сплошной serverless.

Думаешь: "Ну все, индустрия сделала огромный рывок, legacy в головах выветрилось, луддиты вышли на пенсию, костяк индустрии - 25-летние смузихлебы, программирующие на Lambda'ах и YAML'ах."

А потом видишь анонс, как в консоли можно в один клик подружить виртуалку и RDS экземпляр.

В КОНСОЛИ, Карл, мы все еще меняем что-то в КОНСОЛИ.

AWS ругать тут не за что, раз сделали это, Babelfish и даже App2Container, значит ЦА с криптостартапов полностью освоена, и очередь дошла до малоподвижного enterprise сектора, который очень хочет модный клавд, но все предпочитает держать при себе штат облачных эникеев.

А AWS-то что, они как никак customer obsessed, про их уклон в сторону толстых Старых Денег я и раньше писал (пост никак не найду, но моя OG аудитория все помнит).
​​#пятничное

Волею судьбы оказался на пианинном концерте, от которого получил колоссальное удовольствие.

И дело даже не в акустике или классике, не в композициях и экспрессии, но в интересном опыте.

Перфоманс давали два пианиста Анна Федорова и Йорун фан Вейн. Играли они преимущественно по очереди Рахманинова, Шопена и Эйнауди, но некоторые композиции играли практически в унисон, а их парная игра была не синхронная...

Асинхронная. Какую-то партию отыгрывает Анна, за которой подхватывает Йорун, какую-то наоборот она же поддакивает. По ощущениям получился диалог не двух музыкантов, а двух персонажей произведения, которое я, притаившись за спинкой сидения, слушал.

Очень интересный опыт, который надеюсь повторить.
#машины_разное

В качестве дополнительной загруженности я помогаю студентам Яндекс.Практикума проходить обучение на курсе backend-разработки на Python.

Частью работы является чтение лекций, и вот на одной из лекций меня спросили о перспективах российского рынка труда для выпускников. Если убрать за рамки нюансы, нам и так известные, то вытекает вопрос: насколько Python в целом востребованный язык для коммерческой разработки?

Статистика говорит, что да, востребованный. Вакансий на рынке все еще хватает, на языке написано много, поддерживается тоже много, специализация у языка есть. Казалось бы, все нормально, иди да пиши.

С другой стороны, большие игроки активно инвестируют и развивают Go и Rust, в связи с чем предугадать, куда повернет голову свежий ветер смузи-трендов, сложно. Но тут мне вспомнилось одно обещание Гвидо Ван Россума сделать “родной” движок языка в два раза быстрее.

К чему я это в очередной раз вспомнил? Да к тому, что релиз 3.11 запланирован сегодня, а сами разработчики намерены устроить из этого шоу.

Надеюсь и верю, что это обновление даст второе дыхание на гонке за свое место под солнцем индустрии.
2024/07/01 16:47:46
Back to Top
HTML Embed Code: