Pull to refresh
12
-1
Игорь Плехов @igmp

техлид команды, решающей проблемы разработчиков

Send message

Не волнует малое количество ПДн.

Команд много, БД ещё больше. Хвататься за всё и сразу -- плохая идея. С чего начать, что можно отложить? Это вопрос приоритетов. Для ответа на него нужны данные: где, чего и сколько.

В ГД рассматривают поправки к КоАП за утечку ПДн:

  • если произошла утечка данных от 1000 до 10 000 субъектов персональных данных, штраф для юрлиц составит от 3 до 5 млн руб.;

  • за утечку данных 10 000–100 000 субъектов — от 5 до 10 млн руб.;

  • более 100 000 граждан — от 10 до 15 млн руб.

Это не так работает. Никто ничего РКН не доказывает. Но если случится утечка, то компания, которая допустила утечку, должна сообщить об этом.

Чтобы снизить возможность утечки, ПДн хранятся в защищённом хранилище, с особо регламентированным доступом и так далее.

Чтобы начать защищать ПДн, перенести их в защищённое место, прежде всего нужно знать, где чего и сколько.

Мы всей инфраструктурой, включая БД, управляем Ансиблом. Логины и пароли конечно же лежат в одном месте -- в Вольте.

Незачем. И мы их не исключали.

Не расскажу. 🙂 У нас этими делами занимается другая команда -- информационной безопасности.

Ну, если завтра безопасники попросят меня добавить поиск по int, то я в такой YAML

pd_data_types:
  postgresql:
    character varying: "~"
    text:              "~"
    json:  "#>> '{}' ~"
    jsonb: "#>> '{}' ~"
  mysql:
    char:    rlike
    varchar: rlike
    text:    rlike

добавлю строчку типа

    integer: between 70000000000, 89999999999

и всё найдётся в ближайшие выходные.

Не ПДн, а метаданные, что в такой-то БД, в такой-то таблице есть столько-то данных.

Уточню, в России только мобильные номера начинаются с 9. Номера фиксированной связи с нескольких других цифр.

Код оператора отдельно от номера не нужен никому, кроме операторов связи. Для конечного пользователя одно от другого не отделимо.

Номер для удобочитаемости часто пишут со скобками и минусами внутри. Плюс первым символом — это признак номера в международном формате. Строго говоря, номер типа +7(123)456-7889 без плюса должен выглядеть как 8(123)456-78-89. Это внутрироссийский формат.

Сейчас везде применяется тональный набор, а во времена импульсного набора в номере также могли быть буквы: w — подождать гудок, p — сделать паузу.

Какой уж тут int.

Skyeng — компания с историей, давно на рынке. Разрабы приходят и уходят, а БД остаются. Для зрелой компании разумно поддерживать актуальную документацию. Но в первые годы работы об этом мало думали. Да и к ПДн не было такого трепетного отношения, как сейчас. Раньше можно было запросто собирать, скажем телефоны, на каких-нибудь лендингах для холодных рекламных звонков. Сейчас ни-ни. Кто сейчас помнит о лендинге с олимпиадой 2019-го года?

Документация не панацея. В статье мы пишем об этом:

Можно было решить задачу и по-иному. Например, прийти к разработчикам и сказать: «Вот, у вашей команды есть 5 баз данных. Покажите, что вы в них храните, дайте описание или структуру данных».

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

Working software over comprehensive documentation — один из принципов Agile подхода. Никто не любит писать документацию. Разработчики любят разрабатывать, а не писать доки. Документация всегда отстаёт от текущего момента. Она даёт ответ на вопрос «где», но не говорит «сколько». Моё же решение показывает «где», «что» и «сколько», и с лагом не более недели.

Ушли с Github-а на self-hosted Gitlab.

Это похоже на то, как поднимаешься в гору. Неопытные люди часто рвутся и… сдыхают. Чуть-чуть отдохнул, опять рванулся и опять умер. И так далее. Опытные люди идут равномерно. Пусть сначала медленно, но равномерно. И так можно подняться на гору без особых проблем. Особенно чётко эта разница видна на высоте, когда начинает сказываться нехватка воздуха.


То же самое верно про бег на дальние дистанции. У человека есть быстрые и медленные мышечные волокна, которые работают соответственно на углеводах и жирах. Быстрые дают большую мощность, но не больше минуты, а дальше закисляются и перестают работать. Если бежишь марафон, то важны медленные мышечные волокна.


Как вышенаписанное применить в режиме челленджа? Сделать челлендж плановым. Так скоро, насколько возможно. Пусть я буду работать по 12 часов и спать по 5 часов в день. Но это будет по плану. И отдыхать по плану. И тогда всё будет в порядке. Жизненный опыт показывает, что так и будет.

  • TF мои потребности не покрывает. Подробности в статье.
  • Поставленные цели я достиг. :-) Какие они были — читайте там же.
Преимущество терраформа перед ансиблом, шефом и тп для инфраструктуры — состояние, что позволяет управлять полным жизненным циклом обьекта, а не только созданием.

В моём случае другой подход: управляем тем, что записано в конфиге.


  • Репа есть в конфиге? Она управляется.
  • Нет в конфиге? С репой гарантированно ничего не случится.

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


А если сархивировать репу, то её и Terraform не сможет разархивировать обратно.

Там ничего секретного нет. Будет время — выложу куда-нибудь.
У нас всё просто на файловой системе. Так же, как делает certbot.

Vault тоже юзаем. Можно было бы и там хранить.
В нашем случае DNS живёт в Route53, и для управления им используется эта штука:
docs.ansible.com/ansible/latest/modules/route53_module.html

Если бы DNS жил в Гугле, то использовалась бы эта штука:
docs.ansible.com/ansible/latest/modules/gcdns_record_module.html

А для PowerDNS есть масса вариантов.
Мы юзаем AWS Route53. Подойдёт любой провайдер с API.
Интересная идея, не думал об этом.

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

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Date of birth
Registered
Activity