Создание сценария аутентификации Azure с помощью Terraform в Linux с использованием токена
- Я хочу создать скрипт python, использующий развертывание виртуальной машины Terraform в Azure (это образовательный проект, поэтому никаких реальных причин для этого нет, но все должно быть выполнено с помощью одного скрипта)
- Я успешно создал виртуальную машину с помощью Azure CLI и Terraform
az login
terraform init
terraform validate
terraform apply
- Проблема в
az login
использовать аутентификацию браузера , которая не разрешена образовательным проектом (один скрипт .py без какого-либо взаимодействия с пользователем). Однако Azure CLI может использовать логин и пароль (не работает с включенной двухфакторной аутентификацией)
az login -u <username> -p <password>
Это можно сделать с помощью имени пользователя и пароля, но это едва ли идеально - поделиться своей учетной записью Microsoft с товарищами по команде и использовать учетные данные в скрипте Python вместо токена .
Как бы вы предложили предоставить моим товарищам по команде и терраформировать доступ к Azure и, следовательно, создать сценарий развертывания, который использует некоторый внешний файл, похожий на токен? (Управляемые удостоверения для ресурсов Azure можно использовать для проверки подлинности в службах, поддерживающих проверку подлинности Azure Active Directory, но я понятия не имею, о чем это)
1 ответ
Вы предоставили тег azure-pipelines, поэтому не уверены, означает ли это, что вы используете Azure DevOps.
Если это так, это упростит задачу, поскольку вы можете просто создать соединение службы в ADO (которое создаст субъект службы в AAD в фоновом режиме), которое вы можете использовать для запуска своего конвейера, поэтому вам не придется запускать
az login
в ваших сценариях. Вы можете проверить задачу конвейера ADO Чарльза Зиппа для Terraform, которая, как я считаю, немного более гибкая, чем задача Terraform от Microsoft. Если вы настраиваете конвейер, вы можете затем установить контроль доступа к конвейеру (и даже к сервисному соединению), чтобы разрешить запускать конвейер только тем, кому вы хотите.
Если вы не используете ADO и просто хотите запускать вещи локально, вам нужно будет создать принципала службы и предоставить учетные данные в блоке поставщика, как @AnsumanBal-MT упоминает в комментариях к вашему вопросу.