Как управлять паролями и ConnectionStrings в развертывании с несколькими средами с помощью azure devops?

У меня есть веб-приложение, в передней части я использую платформу asp.net, а в задней части у меня есть служба WCF.

Я хочу иметь несколько сред, одну для постановки и одну для производства.

Мне уже удалось развернуть как интерфейсную, так и серверную часть с помощью azure DevOps, но мне трудно найти лучший способ хранения секретов (таких как пароли, строка подключения), зная, что у меня есть несколько env, потому что я не хочу, чтобы мои секреты были виден для VCS или при построении. секреты должны появляться только в релизе.

  • Сначала я пытаюсь использовать секретный файл и загружать web.config, поэтому, когда сборка завершена, я заменяю web.config, но это не выглядит хорошей идеей, потому что я не хочу повторно загружать файл конфигурации каждый раз. раз меняю.

Я надеюсь, что кто-нибудь поделится своим опытом того, как он управляет развертыванием в нескольких средах и скрывает секреты от VSC.

Спасибо.


54
1

Ответ:

Решено

Вы можете использовать переменные для хранения секретов в Azure DevOps:

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

Во время работы вашего конвейера вы можете хранить свои секреты или пароль в переменной, как показано ниже, и также распространять ее на разные этапы: -

И используйте его как переменную среды в пайплайне для разных этапов.

Если вы хотите хранить секреты обычно, вы также можете использовать группу переменных, как показано ниже:

Вы можете замаскировать значение, чтобы защитить его.

и в сценарии переменных вы можете напрямую использовать группу переменных для доступа к секретам: -

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

Я добавил один секрет в ресурс хранилища ключей Azure, как показано ниже:

Теперь, чтобы получить доступ к этим секретным значениям в конвейере yaml Azure DevOps, см. ниже: -

    trigger:
    - main
    steps:
    - task: AzureKeyVault@2
    inputs:
    azureSubscription: 'SID subscription(1)(<subscription-id>)'
    KeyVaultName: 'siliconvault'
    SecretsFilter: '*'
    RunAsPreJob: false
    - script : |
    echo $(dbpassword)

Убедитесь, что вы предоставили разрешения на доступ к подключению службы Azure DevOps для доступа к хранилищу ключей, и пароль dbpassword будет зашифрован при запуске конвейера, как показано ниже:

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

Ссылка :-

Использование секретов Azure Key Vault в Azure Pipelines - Azure Pipelines | Обучение Майкрософт

Установка секретных переменных - Azure Pipelines | Обучение Майкрософт