суббота, 19 февраля 2022 г.

Нюанс работы с задачей " Azure Key Vault" в Azure DevOps

В своём проекте я столкнулся с необходимостью извлекать секреты из Azure Key Vault (AKV), который изолирован внутри виртуальной сети. Если коротко, то это очень частый сценарий, используемый для повышения безопасности сервисов Azure и AKV в частности.

Заметка: Self-hosted агент мы не рассматриваем.

Агенты Azure DevOps (AzDO) не являются доверенным сервисом для Azure, поэтому настройка "Allow Trusted Microsoft Services to bypass this firewall." для агентов AzDO не работает. 

Если вы использовали Variable groups для инъекции секретов в Pipelines/Release - они, при использовании изолированного AKV, работать перестанут.

В этом случае поможет комбинация задач, из которых: 

первая добавит публичный адрес агента AzDO  в список разрешенных на AKV, затем необходимо использовать отдельную задачу "Azure Key Vault" для извлечения списка секретов и их содержимого, ну и третья задача должна удалить публичный адрес агента из списка разрешенных.

Есть нюанс: обратите внимание на настройку "Make secrets available to whole job"





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