IT-сервисы требуют конфигурации. Частью конфигурации являются секреты, которые вы не хотите раскрывать. Общие примеры включают учетные данные базы данных или случайные значения, которые защищают сессионные куки или учетные данные для аутентификации. Если вы разрабатываете программное обеспечение, ситуация может усугубиться из-за конвейеров сборки, сертификатов для дистрибуции и ключей доступа.
Компрометация секретов может привести к захвату учетных записей пользователей, краже данных, атакам на цепочку сборки и другим дорогостоящим проблемам. Плохая репутация, потеря интеллектуальной собственности и потенциально большие юридические расходы - это лишь малая часть возможных затрат.
В последней версии psonoci Psono предлагает защищенные среды. Защищенные среды позволяют запускать процессы и конфигурировать их через переменные окружения, не раскрывая их системе. Эти переменные окружения загружаются безопасно из Psono, нигде не сохраняются на сервере и раскрываются только для одного процесса.
Сначала нужно создать секрет с переменными окружения. Обратите внимание, что один секрет может содержать несколько переменных окружения, поэтому вы можете группировать переменные окружения, например, по окружению или просто потому, что они относятся друг к другу, как пользователь базы данных и пароль базы данных.
После этого создайте API-ключ и разрешите ему доступ к вашему новому секрету переменных окружения.
Теперь запишите секреты API-ключа, так как эти параметры – единственные параметры, непосредственно раскрывающиеся системе.
Установите psono ci на ваш сервер или в ваш конвейер сборки одной командой:
curl https://get.psono.com/psono/psono-ci/x86_64-linux/psonoci --output psonoci && chmod +x psonoci
И вместо того, чтобы просто запускать ./some_command
, вы запускаете ваш процесс так:
psonoci \
--api-key-id eaee77c6-169f-4873-9be3-f2613149baa9 \
--api-secret-key-hex c8321d7a8e5b1f5ec3d969ecb5054c7548a1c709ddab2edae2ff7ff028538917 \
--server-url https://example.com/server \
run -- ./some_command
Для простоты мы передаем параметры, такие как --api-key-id
или --api-secret-key-hex
, в качестве аргументов, но вы также можете настроить конфигурационный файл вместо этого.
Для демонстрации мы создали этот небольшой python-скрипт service.py
, который выводит все переменные окружения и аргументы, переданные в скрипт.
#!/usr/bin/python3
import os
import sys
print("args: {}".format(sys.argv))
print("environment: {}".format(os.environ))
Вместо выполнения, например, ./service.py --whatever=argument_1
, мы можем выполнить его так:
psonoci \
--api-key-id eaee77c6-169f-4873-9be3-f2613149baa9 \
--api-secret-key-hex c8321d7a8e5b1f5ec3d969ecb5054c7548a1c709ddab2edae2ff7ff028538917 \
--server-url https://example.com/server \
run -- ./service.py --whatever=argument_1
Мы получаем следующий вывод:
args: ['service.py', '--whatever', 'argument_1']
environment: environ({'db_host': 'prd-db.example.com:5432', 'db_password': 'Df55sr2UQm7Wshv7', 'db_username': 'production'})
Как видно, все аргументы переданы корректно, и все переменные окружения, которые мы ранее настроили, были доступны процессу. Существуют флаги, которые позволяют передавать обычные системные переменные окружения и дополнять их переменными из Psono. Более подробную информацию можно найти здесь в нашей документации по psonoci.
Надеюсь, вам понравился наш небольшой экскурс, демонстрирующий, как Psono может помочь защитить вашу инфраструктуру. Все это было бы невозможно без Бернда, главного разработчика этой функции, так что огромное спасибо, Бернд!