IT-сервіси вимагають налаштувань. Частина цих налаштувань — це секрети, які ви не бажаєте розкривати. Типові приклади — це облікові дані бази даних, або випадкові значення, що захищають сесійні cookie чи облікові дані автентифікації. Якщо ви розробляєте програмне забезпечення, ситуація ускладнюється за рахунок додаткових елементів, таких як конвеєри складання, сертифікати дистрибуції та ключі доступу.
Компрометація секретів може призвести до захоплення користувацьких акаунтів, крадіжки даних, атак на ланцюжок збірки та інших дорогих проблем. Зіпсована репутація, втрата інтелектуальної власності та потенційно величезні судові витрати — лише частина можливих втрат.
Psono у своїй останній версії psonoci пропонує захищені середовища. Захищені середовища дають змогу запускати процеси та налаштовувати їх через змінні середовища без розкриття їх для системи. Ці змінні середовища безпечно завантажуються з 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 може допомогти захистити вашу інфраструктуру. Усе це не було б можливим без Бернда, натхненника цієї функції, тож величезна подяка Бернду!