Я настроил DevOps Azure с принципалом службы для доступа к одной конкретной группе ресурсов. Я ожидал, что DevOps Azure смогут развертываться только на ресурсы этой группы, но это не так. Я могу подключить агентов из других групп ресурсов, а затем развернуть их без каких-либо проблем.
Какой смысл настраивать субъект-службу в DevOps Azure, если агент может обойти все разрешения?
Configuration:
Azure Portal
1. Created AD in Azure Portal. Created App under AD with client secret.
2. Granted 'contributor' role to App created in Step-1 with resource group scope.
3. Created two resource groups - RG1 and RG2 with one VM in each.
4. Granted role assignment to App created in step-1 for RG1 only. RG2 has no role assignments.
Azure DevOps
5. Connect Azure DevOps organization with Portal using AD connect.
6. Created service connection by going to Projects-> Service Principal(SP) -> Azure Resource Manager with Service Principal credentials (see step-1 above).
7. Created new pipeline and deployment group. Copied the deployment group agent code and ran it on both VMs in RG1 and RG2.
Фактический результат:
Обе виртуальные машины нормально подключались в качестве целей в группе развертывания.
Pipeline удалось успешно развернуть обе виртуальные машины.
Даже если нет сервисных соединений, конвейеры могут развертываться на виртуальных машинах
Ожидаемый результат:
Только виртуальная машина под RG1 должна подключаться на основе RBAC.
Конвейер должен иметь возможность развертываться только на виртуальной машине под RG1, а не RG2.
Конвейеры не должны быть в состоянии развернуться, если сервисные соединения не определены.
Обходной путь: Возможно, установка этого расширения (https://github.com/maikvandergaag/msft-extensions/wiki/Azure-RBAC) помогла бы, но я старался избегать его, если это возможно.