Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Хранение секретных настроек

Хранение секретных настроек

Никита Соболев (wemake.services) @ Moscow Python Meetup 48
"Говорят, что секреты могут хранить двое, если один из них мёртв. А в веб-разработке обычно участвуют много людей, и для решения задач придумана масса инструментов. Я расскажу, как выбрать правильные инструменты под разные типы проектов".
Видео: http://www.moscowpython.ru/meetup/48/keeping-secrets/

Moscow Python Meetup

August 21, 2017
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. О чем я расскажу Про секретные настройки • Про настройки

    в целом • Про рост вашего приложения • Два слова про деплой •
  2. # Quick-start development settings - unsuitable for production # SECURITY

    WARNING: keep the secret key used in production secret! SECRET_KEY = 'g=atdfmqdd+...ce%@rn7b7^asd8' # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True
  3. » tree my_project/settings my_project/settings ├── __init__.py ├── components │ ├──

    __init__.py │ ├── common.py │ ├── database.py │ └── emails.py └── environments ├── __init__.py ├── development.py ├── local.py ├── local.py.template ├── production.py └── testing.py
  4. from os import environ from split_settings.tools import optional, include ENV

    = environ.get('DJANGO_ENV') or 'development' base_settings = [ 'components/common.py', 'components/database.py', 'components/emails.py', # Select the right env: 'environments/%s.py' % ENV, optional('environments/local.py'), ] # Include settings: include(*base_settings) http://bit.ly/django-split
  5. » git secret init '.gitsecret/' created. » git secret tell

    [email protected] done. [email protected] added. cleaning up... » git secret add -i production.py these files are not ignored: production.py ; auto adding them to .gitignore 1 items added. » git secret hide done. all 1 files are hidden.
  6. Минусы • Сложно интегрировать в ephemeral infrastructure • Нужны ключи,

    много ключей • Нет уровней доступа • Можно отозвать доступ, но только к механизму шифрования
  7. Выводы • Маленький проект --> envdir • Средний проект -->

    git-secret или ansible- vault • Большой проект --> Vault