Как хранить пароли и ключи в коде проектов? Всё о переменных окружения. Пример с Django

Мой курс «Хардкорная веб-разработка» - course.to.digital
Книжный клуб Ботаним!, где мы читаем хорошие ИТ-книги: botanim.to.digital/
Telegram: t0digital.t.me
Сказать спасибо за это видео можно здесь - boosty.to/digitalize.team
Поговорим о том, где, как и почему нужно хранить в коде проектов конфиденциальные данные - API ключи, пароли и прочие чувствительную к утере информацию. Рассмотрим виды переменных окружения и способы работы с ними.
0:00 Постановка вопроса
1:06 Простейший вариант хранения
2:25 Усовершенствованный вариант
3:45 Лучший вариант
4:49 Уровни переменных окружения, примеры
11:08 Shell файл с переменными окружения, выводы
#ityoutubersru
/****************** about ******************/
Меня зовут Алексей Голобурдин, я программирую с 2004 года и на этом канале делюсь своим опытом. Я основатель и руководитель компаний:
- Диджитализируй digitalize.team, разрабатываем сложные IT системы для бизнеса;
- Salesbeat salesbeat.pro, комплексный модуль доставки для интернет магазинов.
Если у вас есть проект на разработку, пишите нам на hi@digitalize.team.
С другими предложениями, а также если вам нужна одна или несколько индивидуальных консультаций/уроков по разработке (3000 руб/час), пишите мне на alexey@salesbeat.pro.
Telegram канал - t.me/t0digital
ВК - digitalize.team
RuTube - rutube.ru/channel/24802975/ab...
Дзен - dzen.ru/id/6235d32cb64df01e6e...

Пікірлер: 308

  • @t0digital
    @t0digital5 ай бұрын

    Мой курс «Хардкорная веб-разработка» - course.to.digital Вжух!

  • @deepbooster
    @deepbooster3 жыл бұрын

    Вот побольше таких best practices И музыка отличная

  • @t0digital

    @t0digital

    3 жыл бұрын

    Спасибо!

  • @user-dz9oq7ct2o

    @user-dz9oq7ct2o

    2 жыл бұрын

    Знаете, музыка похожа на музыку из торгового дома из Вай Сити

  • @senatortre7326
    @senatortre73263 жыл бұрын

    Спасибо, что прислушиваешься к запросам в комментариях! То что просил - получил 🥳 Респект. Предыдущее видео по Джанго тоже доставило. 👍🏻

  • @t0digital

    @t0digital

    3 жыл бұрын

    Спасибо :)!

  • @dabuge
    @dabuge3 жыл бұрын

    Прекрасно! Спасибо огромное. На старости лет, просто для себя, учу Питон (в детстве программировал на Паскале). А началось все с вашего канала. )

  • @t0digital

    @t0digital

    3 жыл бұрын

    Рад, что полезно! Спасибо!

  • @RamanTseshau
    @RamanTseshau3 жыл бұрын

    Да, а ещё можно хранить в разных хранилках типа Hashicorp Vault, Azure KeyVault и других системах менеджмента секретов, особенно если это не api ключи, а креды (юзернейм, пароль и т.п.). В гитхабе вроде есть возможность хранить секреты и вызывать их из кода в ci/cd пайплайнах

  • @karmicdude-

    @karmicdude-

    3 жыл бұрын

    Единственный нормальный коммент) Хорошей реализацией является Hashicop Vault

  • @AlexeyZubkov

    @AlexeyZubkov

    Жыл бұрын

    а дак вот зачем нужен Vault..., до сего момента я ключи в postman хранил

  • @yevhendomin7464
    @yevhendomin74642 жыл бұрын

    Спасибо вам за ваш контент. Год назад я еще ничего не знал про программирование. В большей степени благодаря вашему каналу я с головой погрузился в программирование, получил первую работу джуном с хорошим окладом в одной из самых известных компаний мировых. Особая благодарочка за vim. Не знаю как я раньше без него работал. Еще раз спасибо. Один из самых интересных и полезных каналов в рунете.

  • @t0digital

    @t0digital

    2 жыл бұрын

    Йеее, спасибо! Очень рад за вас!

  • @user-fm5sz5in5g
    @user-fm5sz5in5g3 жыл бұрын

    Недавно начал изучать Django и везде слышал, что пароли, учётки итд надо хранить в переменных окружения. Но никто об этом не рассказывал, а Вы сделали с примерами. Благодарю! Очень годный контент делаете.

  • @AlexGott
    @AlexGott3 жыл бұрын

    Очень понравилось, полезная информация, спасибо огромное, очень ждал

  • @user-gt7rz5uw5z
    @user-gt7rz5uw5z3 жыл бұрын

    Классные видео, с удовольствием все время смотрят у меня в семье парни 12 лет.

  • @apuhtin16
    @apuhtin16 Жыл бұрын

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

  • @t0digital

    @t0digital

    Жыл бұрын

    Спасибооо!

  • @DataScienceGuy
    @DataScienceGuy3 жыл бұрын

    Спасибо, было полезно. Как и всегда впрочем)

  • @pythonavr
    @pythonavr3 жыл бұрын

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

  • @georgestatefield
    @georgestatefield3 жыл бұрын

    Весьма информативно, спасибо за ролик!

  • @MyFunnyWeekend
    @MyFunnyWeekend3 жыл бұрын

    Супер годнота! Спасибо за контент , не останавливайся :)

  • @t0digital

    @t0digital

    3 жыл бұрын

    Будем фигачить дальше!

  • @victortamanov
    @victortamanov3 жыл бұрын

    Спасибо большое!!! Как раз то, что нужно!

  • @mrxrel8605
    @mrxrel86053 жыл бұрын

    Как говорится, пришел по зову сердца

  • @eananyev
    @eananyev3 жыл бұрын

    Спасибо! Знал, канеш -- но тут разложили по полочкам, можно рекомендовать начинающим коллегам.

  • @go5190
    @go51903 жыл бұрын

    Умные мысли в слух под красивую спокойную музыку. Спасибо!

  • @t0digital

    @t0digital

    3 жыл бұрын

    Спасибо!

  • @kubenet
    @kubenet3 жыл бұрын

    Спасибо за классный урок) Как раз изучаю Flask и был вопрос по хранению паролей и настроек проекта, теперь он решен)

  • @t0digital

    @t0digital

    3 жыл бұрын

    Отлично!

  • @misterX389
    @misterX3893 жыл бұрын

    Круто, оч полезно, спасибо!

  • @user-pr5bp2jn9q
    @user-pr5bp2jn9q3 жыл бұрын

    Спасибо что ты есть!

  • @oleksiilobodiev9446
    @oleksiilobodiev94463 жыл бұрын

    Спасибо за урок!)

  • @vadimfedorets1006
    @vadimfedorets10063 жыл бұрын

    Очень полезно и хорошо рассказано!)

  • @t0digital

    @t0digital

    3 жыл бұрын

    Спасибо!

  • @kelevra1493
    @kelevra14933 жыл бұрын

    Четкий канал, без кривляний, тупых приколов. Только полезная и доходчивая информация, без лишней воды.

  • @t0digital

    @t0digital

    3 жыл бұрын

    Спасибооо!

  • @roppy__1580
    @roppy__15803 жыл бұрын

    Лайк не глядя, я в натуре думаю что ты лучше чем некоторые блогер "программист"и

  • @t0digital

    @t0digital

    3 жыл бұрын

    Спасибо:)!

  • @adilrashitov2877
    @adilrashitov28773 жыл бұрын

    Ооооо огромное спасибо! Как раз просил на эту тему ролик

  • @t0digital

    @t0digital

    3 жыл бұрын

    Концерт по заявкам:)!

  • @alexanderpastuhanov174
    @alexanderpastuhanov1743 жыл бұрын

    Спасибо большое! Очень помогли!

  • @arkadyaeternit9793
    @arkadyaeternit97933 жыл бұрын

    То, что надо. Спасибо!

  • @savel2work
    @savel2work3 жыл бұрын

    Полезное видео, спасибо!

  • @pirognoe
    @pirognoe3 жыл бұрын

    Отличное видео. Жаль раньше не видел- узнал много нового. Ещё одна интересная для новичка тема - не секрет, что сложность вызывает не сам Джанго и первые упражнения по нему из учебника, а начальная настройка проекта. Я имею ввиду на каком-то удалённом сервере поднять Докер контейнер, настроить связь контейнера с внешним репозиторием и внешнего репозитория со своим проектом на локальной машине. Буду очень признателен за ссылку на видео по теме( если такие есть) или если такое видео появится на канале. Спасибо за полезные видео.

  • @stupid-face
    @stupid-face3 жыл бұрын

    Отличная подача материала, хорошую инфу даёшь. Спасибо за годноту! Прохожу курс на Яндекс практитке по питону, буду советовать сокурсникам!

  • @t0digital

    @t0digital

    3 жыл бұрын

    Спасибо!

  • @user-kr7hj1ux9l

    @user-kr7hj1ux9l

    Жыл бұрын

    Прошёл?

  • @stupid-face

    @stupid-face

    Жыл бұрын

    @@user-kr7hj1ux9l Почти 3 года назад

  • @timsbadalbaev2058
    @timsbadalbaev20583 жыл бұрын

    Спасибо! Было познавательно

  • @t0digital

    @t0digital

    3 жыл бұрын

    рад, что полезно!

  • @SergMirny_yt
    @SergMirny_yt3 жыл бұрын

    Круто. Спасибо большое

  • @Ramzes646
    @Ramzes6463 жыл бұрын

    Спасибо за видео

  • @vadimdorokhov8375
    @vadimdorokhov83753 жыл бұрын

    Полезно, большое спасибо!

  • @t0digital

    @t0digital

    3 жыл бұрын

    Рад, что полезно :)!

  • @kalik54
    @kalik543 жыл бұрын

    Спасибо, очень жду видео по эксепшенам

  • @t0digital

    @t0digital

    3 жыл бұрын

    Скоро будет

  • @vgvideo16538
    @vgvideo165383 жыл бұрын

    Спасибо! Очень хотелось бы короткий гайд по работе с такими переменными в PyCharm. Подозреваю, что там есть какая-то автоматизация этих процессов.

  • @dremdem

    @dremdem

    3 жыл бұрын

    ibb.co/K2zpMQg Там все просто ) Но лучше, как сказали коллеги, хранить в .env файле. Кстати говоря на большом проекте таких файлов несколько. Обычно в git кладут "рыбу" с расширением txt где показывают пример .env файла. Для PROD, TEST, DEV файлы и соответственно набор переменных может быть разным. Ну и разумеется в .gitignore добавляется строчка, чтобы такие файлы не попадали в git.

  • @mpcomp12
    @mpcomp122 жыл бұрын

    Спасибо за видео 👍

  • @alexeyzhurov7747
    @alexeyzhurov77473 жыл бұрын

    Спасибо, было полезно

  • @donpatron3631
    @donpatron3631 Жыл бұрын

    Спасибо за видео.

  • @user-rp1yy2cp8z
    @user-rp1yy2cp8z3 жыл бұрын

    Еще as option удобно хранить с помощью модуля keyring. Хранит пароли он в системном хранилище (keychain в случае макоси ит.д.). Имхо максимально удобный интерфейс. Сам юзаю во всех проектах на python =)

  • @insidecabinet
    @insidecabinet3 жыл бұрын

    Спасибо!

  • @user-mr1ii2wn2w
    @user-mr1ii2wn2w3 жыл бұрын

    Был бы здорово если бы вы сделали видео про асинхронность в python. Контен огонь)

  • @t0digital

    @t0digital

    3 жыл бұрын

    Спасибо! Про асинхронность будет!

  • @avtolub1
    @avtolub13 жыл бұрын

    Не рассказал одну важную вещь: после добавления новых переменных окружения, например, в "~/.bashrc" НЕ ОБЯЗАТЕЛЬНО перелогиниваться/перезагружаться, достаточно выполнить следующую команду в терминале: "source ~/.bashrc".

  • @gustaugutter9477

    @gustaugutter9477

    3 жыл бұрын

    Или "exec bash"

  • @wobble_cat

    @wobble_cat

    3 жыл бұрын

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

  • @astoscope
    @astoscope3 жыл бұрын

    Спасибо. Расскажи про pipenv/virtualenv ещё

  • @NeimorJeck
    @NeimorJeck3 жыл бұрын

    Мне больше по душе хранить секюрные данные в '.env' файликах, создается два файла '.env' и '.env.example' в корене проектa, в env записываем ключи и значения а в example только ключи, .env разумеется улетает в gitignore. Теперь про то как превратить содержимое .env в переменные окружения, для этого есть библиотечка 'dotenv', к примеру в файле настроек выгружаем переменные окружения из .env файлика строчкой 'load_dotenv()', сразу же обращаемся к ним вот в таком формате BOT_TOKEN = os.getenv('BOT_TOKEN') а потому уже импортируя модуль настроек в любые файлы проекта обращаемся к значению переменой BOT_TOKEN просто по имени. Как по мне достаточно удобно и безопасно.

  • @user-yn8wv2sh5h
    @user-yn8wv2sh5h3 жыл бұрын

    Отличный видос! А что вы скажите на счёт git-crypt?

  • @timur8216
    @timur82163 жыл бұрын

    Супер!

  • @mainsport7851
    @mainsport78513 жыл бұрын

    Отличное видео.

  • @t0digital

    @t0digital

    3 жыл бұрын

    спасибо!

  • @emutant01
    @emutant013 жыл бұрын

    Передавать переменные через конфиг, который передается вида ./application application.conf плохо? Так можно тестировать и запускать сразу несколько конфигураций.

  • @DS-sf3ev
    @DS-sf3ev2 жыл бұрын

    Здорово)

  • @vladyslavstetsenko2655
    @vladyslavstetsenko26553 жыл бұрын

    Было бы замечательно сделать видос по доккеру и его настройке)

  • @t0digital

    @t0digital

    3 жыл бұрын

    думаю, сделаю

  • @user-go9zy7yl5f
    @user-go9zy7yl5f3 жыл бұрын

    В первую очередь, благодарю за полезный контент канале. Очень приятно слушать, не напрягает и все по существу. По делу: Не обязательно перезагружать операционную систему или перелогиниться для подгрузки новых переменных. Это Linux, ему не нужен ребут :) По идее, достаточно выполнить source ~/.bashrc, в котором и объявляются переменные

  • @wasyaokyn4077
    @wasyaokyn40773 жыл бұрын

    Возник небольшой вопрос. Есть такая либка для питона как keyring. Было бы интересно узнать Ваше мнение по поводу необходимости этой либки.

  • @antonmullakhmetov707
    @antonmullakhmetov7073 жыл бұрын

    Спасибо

  • @user-oi1zl6de8i
    @user-oi1zl6de8i3 жыл бұрын

    Здравствуйте, уважаемый! Спасибо за интересное видео. Расскажите пожалуйста, как обеспечить защиту данных от утечки на арендованном vps (прежде всего от владельцев vps)?

  • @qbmain1487

    @qbmain1487

    3 жыл бұрын

    Аренда VPS по сути подразумевает доверие владельцам VPS. Не думаю, что стоит париться об этом, если арендуете машину не у ноунеймов

  • @user-mu7yi5ii6n

    @user-mu7yi5ii6n

    3 жыл бұрын

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

  • @gustaugutter9477
    @gustaugutter94773 жыл бұрын

    Спасибо за крутой ролик, как всегда - лайк) Плохой ли практикой является хранение ключей в базе данных, в специальной модели конфигов? Знаю, что это точно удобнее для людей, для которых делается сервис, которые, возможно, никогда не узнают о существовании переменных окружения)

  • @ge_bassist8232
    @ge_bassist82323 жыл бұрын

    спасибо)

  • @andrewkondrashov6485
    @andrewkondrashov64852 жыл бұрын

    Спасибо! А немножко про Vault?

  • @wobble_cat
    @wobble_cat3 жыл бұрын

    Если уж необходимо сохранять чувствительные данные в репозитории, например в случае с IaC, есть утилита git-secret которая использует стандартное PGP шифрования

  • @Jedimaster1908
    @Jedimaster19083 жыл бұрын

    А чем метод с переменными окружения лучше хранения в py-файле отдельном? Как я понимаю sh-файл и py-файл будут лежать в .gitignore. Только с пайтоновским файлом ты импортируешь модуль и используешь переменные, а с sh сначала пишешь в переменные окружения, а потом опять из программы читаешь...

  • @user-lo5bx9wl5m

    @user-lo5bx9wl5m

    2 жыл бұрын

    Я подозреваю что единственное преимущество это то что в докер проще будет прокинуть переменную окружения чем файл

  • @user-no1ig1er9s

    @user-no1ig1er9s

    2 жыл бұрын

    Если .py файла не будет, то будет ошибка импорта. Всё таки это раз это код, то теперь это часть проекта, которую нельзя добавлять в .gitignore.

  • @DarkTatarin

    @DarkTatarin

    2 жыл бұрын

    @@user-no1ig1er9s, ошибка импорта? Так а что, если программист предусмотрел, что этого файла (пусть возьмём, что всё будет в json) может и не быть (if os.path.isfile(): json.load())... Так ещё в .gitignore можно добавлять отдельные файлы и не вижу ничего такого плохого в этом. Плюс, засорять переменные среды системы - не очень хорошая идея, имхо

  • @user-no1ig1er9s

    @user-no1ig1er9s

    2 жыл бұрын

    @@DarkTatarin, json это уже другое, его не надо импортировать. Это не py-файл. Файлы кода всегда должны быть, а не "может есть, а может и нет". Многие ЯП, особенно компилируемые, даже не дадут тебе делать импорт модуля через if, да и в питоне это костыльно и небезопасно. И я не говорил, что надо засорять переменные среды системы. У переменных среды есть вроде бы пять уровней. На уровне системы, на уровне юзера, на уровне терминальной сессии, на уровне процесса, и еще чё то. Самый последний - это переменные среды процесса. Ты в терминале можешь перед командой написать переменные вот так: $ APP_VAR1=1 APP_VAR2=2 python3 start_app.py И эти переменные будут только у запущенной программы. И если ты в коде вызовешь что-то типа setenv("VAR1", "1"), то она будет существовать только на уровне процесса (может, дочерним процессам тоже передастся, я хз) Json тоже неплох для всяких настроек, но переменные окружения более гибки - их можно задавать разными способами. Их реально много. Сложить в файл, попросить systemd задать переменные, попросить gunicorn задать переменные. Очень гибко получается. Можно одно и то же приложение без проблем с разными значениями запускать

  • @emutant01
    @emutant013 жыл бұрын

    Хороший канал

  • @t0digital

    @t0digital

    3 жыл бұрын

    Спасибо!

  • @MrDmitriM
    @MrDmitriM3 жыл бұрын

    Просьба сделать видос про тестирование в django!!!

  • @t0digital

    @t0digital

    3 жыл бұрын

    Будет такой видос:)

  • @pin689
    @pin6893 жыл бұрын

    По старинке пользуюсь конфигурационными файлами, и норм

  • @andreiosipov2766

    @andreiosipov2766

    3 жыл бұрын

    Не безопасно

  • @MrDimka12101
    @MrDimka121013 жыл бұрын

    Также можно запихнуть переменные окружения в файл .env (не коммитится! Можно оставить схему этого файла в .env.example). С помощью пакета environ считывать его так: environ.Env.read_env( '.env'). После этого они доступны в коде.

  • @stephan_inside
    @stephan_inside3 жыл бұрын

    Ещё один из промежуточных вариантов - создание файлов .env и .env.example. Первый есть только локально и мы не помещаем его в гит, а второй нужен для декларирования переменных, необходимых проекту.

  • @t0digital

    @t0digital

    3 жыл бұрын

    Да. И ещё ридми всегда очень кстати

  • @chip253
    @chip2532 жыл бұрын

    Xм, только малесенькая поправочка - при развороте в кибернетисе или докете, в правилах деплоя будут указаны эти переменные окружения, с паролями, и эти правила деплоя будут лежать именно в репозитории 😙 На практике - системные никто не использует, только на уровне приложения. Так что остается только хранить в репозитории конфиги для локала и теста, но без прода. А прод env есть только у одного человека.

  • @mamashin
    @mamashin3 жыл бұрын

    Посмотрите на пакет decouple: Decouple helps you to organize your settings so that you can change parameters without having to redeploy your app. It also makes it easy for you to: - store parameters in ini or .env files; - define comprehensive default values; - properly convert values to the correct data type; - have only one configuration module to rule all your instances.

  • @mironovvova
    @mironovvova3 жыл бұрын

    Ожидал услышать что-то про vault и системы хранения паролей...

  • @t0digital

    @t0digital

    3 жыл бұрын

    возможно расскажу и про них, хотя судя по тому коду, что вижу на code review, что присылают, там до vault еще далеко, люди непосредственно в коде хардкодят пароли и ключи, даже не в настройках

  • @mironovvova

    @mironovvova

    3 жыл бұрын

    @@t0digital будем ждать!

  • @vsevapopov2
    @vsevapopov23 жыл бұрын

    Спасибо за видео! Узнал, как переменные окружения работают! Я раньше думал, что переменные окружения это только path! Такой вопрос: я пол-года назад загрузил в git проект, где в python коде хранился ключ. И мне предложил git поставить git guardian. Может ли как-то git guardian тоже помочь в такой ситуации? Спасибо!

  • @sivr5vs38
    @sivr5vs383 жыл бұрын

    Есть замечательная штука для того, чтобы можно было держать ключи в гите, Mozilla SOPS называется) ключи от него могут быть у разрабов и в CI

  • @vitalii7672
    @vitalii76723 жыл бұрын

    "Поддержать нас". Кто входит в команду? Очень интересно, кто создаёт такой прекрасный и полезный материал))

  • @t0digital

    @t0digital

    3 жыл бұрын

    на самом деле я один сейчас делаю контент и все по каналу, но говорю МЫ, потому что рассказываю в том числе о проектах нашей команды и что-то на основе нашего общего опыта внутри команды

  • @namalnikmisartenko8785
    @namalnikmisartenko87853 жыл бұрын

    А еще как вариант хранить их базе данных. Пользователь на UI может как угодно менять api key и тд и тп ( нарисовать вьюху в которой можно менять ) Если мы говорим уже о каких автодеплоях и тд и тп то конечно окружение тоже норм)) Ну это так чисто как вариант))

  • @tanks-blitz-shorts
    @tanks-blitz-shorts3 жыл бұрын

    Хм, а чем не устраивает вариант с использованием пакета python-dotenv? Вроде удобнее

  • @ihormanzii
    @ihormanzii3 жыл бұрын

    Для того что бы не перезагружать систему после добавления новых переменных окружения, можно использовать команду 'source'

  • @cherryass99
    @cherryass993 жыл бұрын

    А вот вопрос, если мы храним переменные окружения в shell файле, то нужно каждый раз его запускать, перед запуском джанго сервера?

  • @dmytrokorbanytskyi1586
    @dmytrokorbanytskyi15863 жыл бұрын

    Хороший подход, а как в supervisord засунуть список переменных из файла не подскажете?

  • @t0digital

    @t0digital

    3 жыл бұрын

    Я бы рекомендовал systemd вместо supervisord coreos.com/os/docs/latest/using-environment-variables-in-systemd-units.html Можно сделать файл просто ключ=значение, его будет читать systemd, и его же может читать shell script. Для systemd shell скрипт будет не нужен, просто для себя, что-то в консоли запустить

  • @GlebPoljakov
    @GlebPoljakov3 жыл бұрын

    Интересно было бы дополнить материал системами типа Vault.

  • @t0digital

    @t0digital

    3 жыл бұрын

    Возможно сделаю, спасибо

  • @fakefakekovich4257
    @fakefakekovich42573 жыл бұрын

    Каждый день новые видосы, я попал в рай?

  • @t0digital

    @t0digital

    3 жыл бұрын

    Сделаем и этот мир райским:)!

  • @AlexeyZubkov
    @AlexeyZubkov Жыл бұрын

    Дружище, а как то можно их получать из Маковского key-chain? И сразу второй вопрос, а есть ли библиотека на Python взаимодействующая с key-chain?

  • @user-qg4pp5eo7p
    @user-qg4pp5eo7p3 жыл бұрын

    Подписался на boosty

  • @t0digital

    @t0digital

    3 жыл бұрын

    Юхууу, спасибо!

  • @user-up9yf8jl5r
    @user-up9yf8jl5r2 ай бұрын

    музыка зачет

  • @artemmalynovskyi7445
    @artemmalynovskyi74453 жыл бұрын

    Пролистал видео, не увидел решений типа HashCorp Vault/AWS Secrets Manager. В этом случае переменные никогда не попадают на сервер в виде файлов/переменных окружения. что в целом здорово. И в случае Secrets Manager, не нужен никакой токен для доступа, просто дается к секрету доступ с конкретного сервера(или любой другой вариант настройки доступный на Амазоне).

  • @oleksiilobodiev9446

    @oleksiilobodiev9446

    3 жыл бұрын

    HashiCorp Vault have some config file for this task

  • @artemmalynovskyi7445

    @artemmalynovskyi7445

    3 жыл бұрын

    @@oleksiilobodiev9446 yeah, I know. But anyway, this approach wasn't mentioned by author. I think it's separated approach(together with Secrets Manager, of course there are some difference between those services)

  • @user-oe3un8ky6l
    @user-oe3un8ky6l3 жыл бұрын

    Awesome!

  • @TheBBastard
    @TheBBastard3 жыл бұрын

    А как поступать, если приложение деплоится через CI пайплайн, так сказать "onGit push"? В Docker build arguments или переменную окружения ключ не передать потому, что имедж и контейнеры строятся "где-то там".. Что было бы best practices в этом случае?

  • @swimmwatch
    @swimmwatch3 жыл бұрын

    Спасибо за полезный контент. У меня вопрос. Как правильно распространять такие шелл скрипты внутри команды?Допустим есть есть скриптик, где прописаны креденшилы для базы данных. И нужно чтобы человек получил его для того, чтобы он мог у себя локально подключатся к бд. Как в таком случае безопасно предоставить доступ?

  • @t0digital

    @t0digital

    3 жыл бұрын

    Можно сделать env файл с примером заполнения, и обязательно прописать в README файле полную конфигурацию, то есть что где надо заполнить, чтобы запустить проект. Добавилась новая переменная, внесли ее в example env файл, добавили сразу в документацию README

  • @swimmwatch

    @swimmwatch

    3 жыл бұрын

    @@t0digital А как передавать этот файл безопасно ?

  • @KonstantinMakarov

    @KonstantinMakarov

    Жыл бұрын

    @@swimmwatch упаковать в шифрованный архив. Пароль от архива - обязательно по другому каналу связи. Т.е. если шлёшь архив в email, то пароль от него - в SMS

  • @kannykl7575
    @kannykl75753 жыл бұрын

    Не глядя, лайк!

  • @nail-meow
    @nail-meow3 жыл бұрын

    Какая область видимости у переменных, добавленных через файл? Т.е. понятно, что все, что запущено в рамках этого bash процесса руками пользователя - увидит переменные, вопрос в том, могут ли какие-то демоны получить доступ к этим переменным? Тут после обновления ios выяснилось, что на мобильном очень много приложений пытаются читать все, до чего могут дотянуться, включая буфер обмена. Сразу приходит в голову то, что если переменные видны куда-то, кроме приложения, их кто-то утащит. Про продакшен с докером понятно, а как быть с компами разработчиков со всякими facebook меседжерами, и подобными пылесосами конф. данных?

  • @KonstantinMakarov

    @KonstantinMakarov

    Жыл бұрын

    В /proc//environ видны все переменные окружения, доступные запущенному процессу. Этот файл имеет права "только чтение" пользователю процесса (400). Т.е., чтобы лишние процессы не могли прочитать конфиденциальные данные из переменных окружения, нужно запускать целевой процесс от имени отдельного пользователя, под которым больше никто не входит (у него нет прав на интерактивный логин в шелл) и не запускается. Так делают все "взрослые" демоны и утилиты: postgres, nginx, ...

  • @frolovskii_v
    @frolovskii_v2 жыл бұрын

    Где-то я далеко от темы или сейчас был просто наглядный пример забивания переменных систему локально? Просто я таким начал заниматься в самом начале знакомства с linux используя aliasы. А к примеру весь код хранится в репе, из репы он идёт в teamcity агент и от туда деплоится на серверы как в таком случае хранить пасворды и прочие api?

  • @spair2k
    @spair2k3 жыл бұрын

    День добрый, мне очень понравился выпуск. Как всегда доходчиво и по теме. Есть одно обстоятельство. Я не смог применить замечательный принцип использования переменного окружения. Если бы речь шла о локальной машине или локально развернутом докере, то все хорошо, но я деплою свой проект непосредственно в heroku.com и все что я могу вписать, в качестве инициализации в процессе развертывания, находится в репозитории самого сервиса, либо github. Хранить в таком виде ключи не очень хорошо. Если у Вас есть опыт в подобных случаях, подскажите направление? Спасибо большое за такие публикации.

  • @olegmlavets5216
    @olegmlavets52163 жыл бұрын

    Я просто создавал пайтон файл в котором определял переменные, и импортировал в конфиг

  • @TheVenom20003
    @TheVenom200033 жыл бұрын

    Товарищи. Подскажите пожалуйста, вопрос скорей всего банальный, заранее извиняюсь. Вот перенесли мы ключ в переменную окружения. отправили проект в гит (все это на компьютере на котором ведется разработка). Теперь на самом сервере клонируем данные проект, но где взять ключи? Что-то я не догнал

  • @hardcodd
    @hardcodd3 жыл бұрын

    А мне нравится django-environ. =)

  • @resuuserovich9399
    @resuuserovich93993 жыл бұрын

    Применить изменения в кофиге без перезапуска сессии и перезагрузки: "source ~/.zshenv" , "source ~/.bashrc"

  • @t0digital

    @t0digital

    3 жыл бұрын

    Да, можно так

  • @user-lu6zi7mh5c
    @user-lu6zi7mh5c3 жыл бұрын

    Ничего не понял, но очень интересно

  • @dima12011201
    @dima120112013 жыл бұрын

    А Вам не кажется, что 2 переменная, которая в .bash_... файле, это тоже переменная сеанса, а не юзера. Думаю что уровень юзера не должен зависеть от выбора шела. Если не прав, поправьте плиз.

  • @pavel5878
    @pavel5878 Жыл бұрын

    те любо кто получает доступ к нашему серверу, например какая то программа, она может прочитать наш ENV и отправить пароли куда то очень далеко? Интересно есть ли более безопасный метод хранения паролей?

  • @user-le5rj6on3k
    @user-le5rj6on3k3 жыл бұрын

    Как говорится не по колокольчику, а по зову сердца)

  • @t0digital

    @t0digital

    3 жыл бұрын

    Хахах :) спасибо!

  • @user-di7gx3rc2q
    @user-di7gx3rc2q3 жыл бұрын

    Если не брать во внимание докер, то почему бы просто не сделать отдельный питоний файл с константами aka конфиг и импортировать все подобные штуки из него?

  • @t0digital

    @t0digital

    3 жыл бұрын

    Можно, просто неудобно прокидывать снаружи. Плюс переменных окружения ещё в том, что несколько приложений (написанных на разных ЯП в том числе) на сервере могут использовать одни и те же переменные

  • @theFearGate
    @theFearGate3 жыл бұрын

    Коммент для продвижения канала с отличным контентом

  • @t0digital

    @t0digital

    3 жыл бұрын

    Спасибо!

Келесі