Создание сценария аутентификации 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 упоминает в комментариях к вашему вопросу.

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