SOPS: англійська мова для інженерів з управління секретами GitOps
Вивчіть англійську термінологію для керування секретами SOPS — вік проти шифрування PGP, правила створення.sops.yaml, шифрування/ розшифрування файлів і інтеграція з ArgoCD.
SOPS (Secrets OPerationS) вирішує одну з найпоширеніших проблем у GitOps: як безпечно зберігати зашифровані секрети у скарбниці з контролем версій без виведення назовні звичайних текстових значень. Інженери, що працюють з Kubernetes, Helm і ArgoCD, повинні впевнено говорити про типи ключів шифрування, правила створення і інтеграції додатків в перегляди запитів на витягування, runbooks і передачі за запитом. Цей підручник містить словниковий запас англійської мови, який є необхідним для професійної роботи з SOPS.
Ключовий словник
** SOPS ** — інструмент з відкритим кодом, розроблений Mozilla, який шифрує певні значення (не весь файл) у файлах YAML, JSON, ENV і INI, залишаючи ключі і структуру видимими, а секретні значення захищеними. “Ми передаємо всі наші секрети Kubernetes в Git як SOPS-зашифрований YAML — імена ключів видимі для аудиту, але значення є шифротекстом, який тільки авторизовані ключі можуть розшифрувати.”
** age ** — сучасний, простий інструмент шифрування файлів, який є рекомендованим типом ключа для нових реалізацій SOPS; він використовує обмін ключами X25519 і розроблено для заміни PGP у більшості випадків використання.
“Ми перейшли від PGP до ключів віку в минулому кварталі — список отримувачів у .sops.yaml набагато коротший і немає ключа для керування на ноутбуках розробників.”
** PGP (Pretty Good Privacy) ** — це старий, складніший стандарт шифрування, який також підтримується SOPS; він досі поширений у організаціях, які вже мають інфраструктуру ключів PGP або використовують GPG для підписування коду.
- “Старі секрети все ще зашифровані за допомогою відбитків пальців команди PGP, але всі нові секрети використовують вік, щоб ми могли вивести з ладу ланцюжок ключів GPG після завершення перенесення.” *
** .sops.yaml ** — файл налаштувань, розташований у кореневому каталогу сховища, який визначає * правила створення *, повідомляє SOPS, які ключі використовувати під час шифрування файла на основі його шляху або шаблону назви файла.
“Я додав нове правило створення до .sops.yaml, щоб будь- який файл, який відповідає clusters/prod/**/*.yaml, автоматично шифрувався як ключем виробничого періоду, так і ключем AWS KMS.”
** Правило створення ** — запис у .sops.yaml, який збігається з файлами за шляхом glob і вказує ключі шифрування (вік отримувачів, відбитки PGP, ARN AWS KMS, ідентифікатори ресурсів GCP KMS або URI Azure Key Vault), які SOPS використовує під час створення або повторного шифрування файла, який збігається.
- “Без відповідного правила створення, виконання
sops --encryptна новому файлі зазнає невдачі — вам слід вказати принаймні одного отримувача у правилі, перш ніж SOPS зможе визначити, який відкритий ключ використовувати.” *
** Encrypt / decrypt ** — дві основні операції: sops --encrypt перетворює файл з відкритим текстом на файл з шифруванням SOPS; sops --decrypt повертає дію для використання у конвеєрі розгортання.
“Задача CI розшифровує файл секретів за допомогою sops --decrypt і передає вивід безпосередньо до kubectl apply — простий текст ніколи не торкається файлової системи.”
** ArgoCD SOPS plugin ** — механізм (реалізований як нетиповий додаток керування налаштуваннями або за допомогою argocd-vault-plugin ), який надає змогу ArgoCD автоматично розшифровувати секрети, зашифровані за SOPS, під час процесу синхронізації, вводячи значення у вигляді простого тексту у кластер без вручну внесення змін.
“Якщо ми встановили додаток SOPS у контейнері сервера репозиторію ArgoCD, зашифровані секрети в Git прозорі розшифровуються під час синхронізації — інженеру не потрібно вручну розшифровувати щось під час розгортання.”
** Ротація ключів ** — процес перешифрування секретів, якими керує SOPS, за допомогою нового ключа, зазвичай, запускається, коли член команди залишає групу, ключ піддається атаці або як частина запланованої політики безпеки.
“Після того, як доступ підрядника був вилучений, ми запустили sops updatekeys на кожному зашифрованому файлі в сховищі, щоб вилучити їхній віковий відкритий ключ з усіх правил створення.”
Корисні фрази
- «Я додав ваш віковий відкритий ключ до блоку
creation_rulesв.sops.yaml— витягніть останній і ви повинні бути в змозі розшифрувати секрети стажування» - «Ніколи не передавайте відкритий текстовий секрет до Git навіть тимчасово; спочатку зашифруйте його з
sops --encryptі перевірте вивід перед тим, як передавати файл» - «Правило створення використовує path_regex, щоб відповідати всім файлам під
env/production/і вказує три вікові отримувачі — ключ команди платформи, ключ CI і ключ KMS для автоматизованого конвеєра» - «Ми зберігаємо
.sops.yamlв корені репозиторію, щоб кожна установка SOPS розробника підбирала його автоматично без необхідності додаткових прапорців в командному рядку» - «Щоб повернути ключі, оновіть отримувачів в
.sops.yamlспочатку, а потім запустітьsops updatekeysна кожному зашифрованому файлі — перешифрування використовує новий список отримувачів, зберігаючи базовий відкритий текст»
Поширені помилки
** Сказати « SOPS шифрує весь файл ». ** SOPS спеціально розроблено для шифрування * значень *, а не цілих файлів. Структура YAML, ключі і коментарі залишаються у вигляді звичайного тексту, який можна читати. Нерідні носії іноді описують SOPS як «зашифрування секретного файлу», що означає, що весь файл є непрозорим шифротекстом. Точне визначення полягає у « SOPS шифрує значення у файлі » або « секретні значення зашифровано; ключі видимі ». Цей розріз має значення, оскільки саме завдяки цьому файли, зашифровані за допомогою SOPS, є безпечними для порівняння і перевірки у запитах на витягнення.
** Плутанина між « адресатом » і « ключем ». ** У термінології SOPS і вікової термінології, * адресат * — це відкритий ключ, за допомогою якого зашифровано файл — суб’ єкт, який зможе розшифрувати його. * ключ * або * пара ключів * стосується як публічного, так і приватного компонента. Інженери іноді кажуть « додайте ваш ключ до налаштувань SOPS », коли слід сказати « додайте ваш * відкритий ключ * як адресата ». У контексті безпеки важливо знати, що мова йде про відкриті і закритих ключах, це свідчить про надійність у відносинах з колегами, які розмовляють вашою мовою.
** Використання « decode » замість « decrypt ». ** У англійській інженерній лексиці, * decode * зазвичай означає зворотне кодування схеми кодування (base64, кодування URL), яка не має криптографічної секретності — будь- хто може розшифрувати base64. * Decrypt * означає зворотне кодування криптографічної операції, яка вимагає володіння закритим ключем. Файли SOPS * розшифровуються *, а не розшифровуються. Сказати “Я розшифрую секрет” в контексті SOPS звучить так, ніби ви вважаєте шифрування простою замаскованістю, що недооцінює модель безпеки.
Точне повідомлення про SOPS англійською мовою створює довіру у вашій команді і сигналізує, що ви розумієте модель безпеки, а не лише інструмент — обидва ці фактори важливі, коли на карту поставлено секрети.
Додаток контексту до рішень щодо шифрування
Коли ви обговорюєте SOPS (Secrets of Production) з командою, важливо вийти за рамки простого зауваження «зашифрувати це». Справжня цінність виходить з вираження * чому * ви вибираєте певний метод шифрування і наслідки для вашого робочого процесу. Поширений сценарій, з яким я зіткнувся під час перегляду коду, був навколо використання вікової ротації разом з шифруванням PGP - щось, що спочатку здалося складним, але в кінцевому підсумку поліпшило нашу позицію безпеки.
Наприклад, Сара позначила моє повідомлення, у якому описується шифрування конфіденційних файлів налаштувань, символом .sops.yaml, який вказує як ключ PGP, так і дату закінчення терміну дії зашифрованих даних. Її коментар не був критичним, але це спонукало мене пояснити: «Я використовую вікову ротацію разом з PGP, тому що нам потрібно переконатися, що ключі стають недійсними після певного періоду часу — запобігаючи потенційному компромісу, якщо ключ витікає або вкрадено. Шифрування PGP забезпечує сильну автентифікацію і цілісність, а дата закінчення дії додає додатковий шар захисту від довготривалих уразливостей ключів. Ми прагнемо до стратегії послідовної зміни, використовуючи ArgoCD для автоматизації процесу розшифрування, як тільки буде досягнуто віку. “Цей рівень деталізації допомагає рецензентам зрозуміти мотиви моїх дій і оцінити, чи відповідає це нашій загальній політиці безпеки. Це більше, ніж просто команда; це про документований процес прийняття рішень.
Крім того, ефективне обговорення цих нюансів вимагає спільного розуміння термінології. Фрази на кшталт «керування життєвим циклом ключа» або «найменший привілейований доступ» стають важливими, коли пояснюється, чому ми не просто зашифровуємо все одним ключем і залишаємо його назавжди. Нам також потрібно чітко повідомляти про залежності — як дати закінчення термінів дії інтегровані в наші розгортання ArgoCD, щоб забезпечити, що застарілі зашифровані файли не використовуються випадково. Ціль - прозорість, щоб усі, хто бере участь, розуміли логіку безпеки, що керує кожним кроком процесу.
Щоб проілюструвати це на практиці, наведено простий приклад CLI, який показує, як вказати обертання за віком за допомогою sops :
sops manage --key my-gpg-key --expire 30d config.yaml
За допомогою цієї команди використовується my-gpg-key для шифрування config.yaml і встановлюється термін дії зашифрованих даних у 30 днів з моменту виконання команди. Цей параметр забезпечує, що після 30 днів ArgoCD автоматично перезашифрує файл, зменшуючи потенційні ризики, пов’ язані зі старими, потенційно небезпечними ключами. Це невеликий приклад, але він підкреслює важливість чіткого спілкування і чітко визначених процесів щодо ефективного управління секретами.