Соглашение об именовании хранилища ключей Azure для использования задачи преобразования файлов конвейера Devops

Короткий рассказ; пытаюсь настроить конвейер выпуска devops, который извлекает секреты из хранилища ключей Azure и преобразует секреты в файлы appsettings.json и web.config, но соглашения об именах в хранилище ключей Azure усложняют задачу.

Более длинная история: наша текущая установка работает локально через IIS на машине с Windows, и все наши секреты хранятся в нашем git в файле appsettings.production.json... И я хочу, чтобы они были удалены оттуда и помещены в секретное хранилище для безопасного хранения. .

Еще больше усложняет ситуацию: у нас есть около 20 конвейеров выпуска, которые делают почти одно и то же, за исключением развертывания на разных сайтах IIS. Это связано с тем, что у каждого разработчика и тестировщика есть свои собственные среды для запуска этого процесса.

Все это довольно запутанно, и наши планы на будущее — перейти на Azure, где есть лучший способ сделать это. Но до этого осталось как минимум год, и я хочу, чтобы секреты из нашего git-репозитория были удалены как можно скорее.

Итак, вернемся к моей проблеме: я работаю над/редактирую конвейер выпуска devops, который считывает секреты из Azure Keyvault и выполняет задачу FileTransform в файле appsettings.json, но никакие значения не заменяются.

Я считаю, что это из-за соглашения об именах: FileTransform:Json хочет использовать точку (.) в качестве разделителя, но хранилище ключей позволит мне использовать только дефис (-).

Итак, мои настройки приложения:

{
    "AppSettings":
    {
        "Username": "<hidden>"
    }
}

не будет заменен секретом под названием

 AppSettings-Username

Итак, вопрос в том, что я могу сделать по-другому, или как мне назвать свои секреты?

Я знаю, что мог бы использовать часть «Переменные» конвейера для хранения секретов, но это менее безопасно, к тому же у нас есть 20 конвейеров, и я не хочу, чтобы секреты записывались 20 раз, потому что это прямой путь к катастрофе.

Другой вариант — переместить файл appsettings.production.json на серверы и сохранить его при развертывании, но опять же мне нужен лучший контроль над секретами. Я просто не хочу, чтобы они были в нашем репозитории.

«Короче говоря» .. нет, пожалуйста. сделайте историю длиннее. Где размещается приложение? Например, Служба приложений Azure поддерживает такие вещи, как строки подключения к хранилищу ключей. Зачем вам пытаться внедрить секреты преобразования файлов в файл appsetting.json вместо того, чтобы настраивать хост с соответствующими переменными среды, которые будут переопределять настройки приложений?

Adam Vincent 06.04.2024 04:21

Я добавил еще несколько деталей. Подводя итог, мы работаем onprem, и существует как минимум 20 различных конвейеров для развертывания в разных средах, таких как тестирование, предварительная и производственная.... Это беспорядок.

Thomas 06.04.2024 11:06
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
167
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

variables:
  - group: KeyVaultVariableGroup
  - name: AppSettings.Username
    value: $(AppSettings-Username) 

Или вы можете использовать задачу замены токена вместо задачи преобразования файла.

Более подробные инструкции можно найти в разделе Преобразование файлов Azure DevOps с секретами хранилища.

Очень хорошее решение. Завтра разберусь с этим, но похоже, что это отлично подойдет.

Thomas 08.04.2024 21:29

Другие вопросы по теме