Проверка подлинности Terraform в Azure
Terraform поддерживает определение, предварительный просмотр и развертывание облачной инфраструктуры. С помощью Terraform можно создавать файлы конфигурации с применением синтаксиса HCL. Синтаксис HCL позволяет указать поставщика облачных служб, например Azure, и элементы, составляющие облачную инфраструктуру. После создания файлов конфигурации создается план выполнения, который позволяет предварительно просматривать изменения инфраструктуры до их развертывания. После проверки изменений примените план выполнения для развертывания инфраструктуры.
Чтобы использовать команды Terraform для вашей подписки Azure, необходимо сначала аутентифицировать Terraform для этой подписки. В этой статье рассматриваются некоторые распространенные сценарии аутентификации в Azure.
Вы узнаете, как выполнять следующие задачи:
- описывать общие сценарии аутентификации Terraform и Azure;
- выполнять аутентификацию с помощью учетной записи Майкрософт из Cloud Shell (с помощью Bash или PowerShell);
- выполнять аутентификацию с помощью учетной записи Майкрософт из Windows (с помощью Bash или PowerShell);
- создавать субъект-службу с помощью Azure CLI;
- Создание субъекта-службы с помощью Azure PowerShell
- указывать учетные данные субъекта-службы в переменных среды;
- указывать учетные данные субъекта-службы в блоке поставщика Terraform.
1. Настройка среды
- Подписка Azure. Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу.
Настройка Terraform: если вы еще этого не сделали, настройте Terraform с помощью одного из следующих вариантов:
2. Аутентификация Terraform в Azure
Сценарии проверки подлинности Terraform и Azure
Terraform поддерживает проверку подлинности в Azure только с помощью Azure CLI. Проверка подлинности с помощью Azure PowerShell не поддерживается. Поэтому, хотя вы можете использовать модуль Azure PowerShell при работе с Terraform, сначала необходимо пройти проверку подлинности в Azure с помощью Azure CLI.
В этой статье объясняется, как выполнить проверку подлинности Terraform в Azure в следующих сценариях. Дополнительные сведения о вариантах проверки подлинности Terraform в Azure см. в статье Проверка подлинности с помощью Azure CLI.
- Проверка подлинности с помощью учетной записи Майкрософт с помощью Cloud Shell (с помощью Bash или PowerShell)
- Проверка подлинности с помощью учетной записи Майкрософт с помощью Windows (с помощью Bash или PowerShell)
- Проверка подлинности с помощью субъекта-службы:
- Если у вас нет субъекта-службы, создайте его.
- Выполните проверку подлинности в Azure с помощью переменных среды или блока поставщика Terraform
Проверка подлинности в Azure с помощью учетной записи Майкрософт
Учетная запись Майкрософт — это имя пользователя (связанное с электронной почтой и его учетными данными), которое используется для входа в службы Майкрософт , например Azure. Учетную запись Майкрософт можно связать с одной или несколькими подписками Azure, при этом по умолчанию используется одна из этих подписок.
Ниже показано, как:
- Войдите в Azure в интерактивном режиме с помощью учетной записи Майкрософт
- Вывод списка связанных подписок Azure учетной записи (включая подписку по умолчанию)
- Задайте текущую подписку.
Откройте командную строку, которая имеет доступ к Azure CLI.
Запустите az login без параметров и следуйте инструкциям для входа в Azure.
az login
Основные моменты:
- После успешного входа отображается список подписок Azure,
az login
связанных с учетной записью Майкрософт, вошедшего в систему, включая подписку по умолчанию.
- После успешного входа отображается список подписок Azure,
Чтобы подтвердить текущую подписку Azure, выполните команду az account show.
az account show
Чтобы просмотреть все имена и идентификаторы подписок Azure для конкретной учетной записи Майкрософт, выполните команду az account list.
az account list --query "[?user.name=='<microsoft_account_email>'].{Name:name, ID:id, Default:isDefault}" --output Table
Основные моменты:
- Замените заполнитель
<microsoft_account_email>
адресом электронной почты учетной записи Майкрософт, список подписок Azure которой нужно получить. - С помощью учетной записи live ( например, Hotmail или Outlook) может потребоваться указать полный адрес электронной почты. Например, если ваш адрес электронной почты —
admin@hotmail.com
, может потребоваться заменить заполнитель адресомlive.com#admin@hotmail.com
.
- Замените заполнитель
Чтобы использовать определенную подписку Azure, выполните команду az account set.
az account set --subscription "<subscription_id_or_subscription_name>"
Основные моменты:
- Замените заполнитель
<subscription_id_or_subscription_name>
идентификатором или именем подписки, которую вы хотите использовать. - При вызове
az account set
не отобразятся результаты переключения на указанную подписку Azure. Однако с помощьюaz account show
можно убедиться, что текущая подписка Azure изменилась. - Если выполнить команду
az account list
из предыдущего шага, вы увидите, что подписка Azure по умолчанию была изменена на подписку, указанную вaz account set
.
- Замените заполнитель
Создание субъекта-службы
Разрешения для автоматизированных средств, которые развертывают или используют службы Azure (такие как Terraform), всегда должны быть ограничены. Вместо того, чтобы приложения входили в систему как полностью привилегированный пользователь, Azure предлагает субъекты-службы.
Наиболее распространенным шаблоном является интерактивный вход в Azure, создание субъекта-службы, тестирование субъекта-службы, а затем использование этого субъекта-службы для последующей проверки подлинности (интерактивно или из скриптов).
Чтобы создать субъект-службу, войдите в Azure. После проверки подлинности в Azure с помощью учетной записи Майкрософт вернитесь сюда.
Если вы создаете субъект-службу из Git Bash, задайте переменную среды
MSYS_NO_PATHCONV
. (Этот шаг не нужен, если вы используете Cloud Shell.)export MSYS_NO_PATHCONV=1
Основные моменты:
- Переменную среды
MSYS_NO_PATHCONV
можно задать глобально (для всех сеансов терминала) или локально (только для текущего сеанса). Так как создание субъекта-службы часто не является тем, что вы делаете, пример задает значение для текущего сеанса. Чтобы задать эту переменную среды глобально, добавьте параметр в файл~/.bashrc
.
- Переменную среды
Чтобы создать субъект-службу, выполните команду az ad sp create-for-rbac.
az ad sp create-for-rbac --name <service_principal_name> --role Contributor --scopes /subscriptions/<subscription_id>
Основные моменты:
<service-principal-name>
можно заменить пользовательским именем среды или полностью опустить параметр. Если параметр не задан, имя субъекта-службы создается на основе текущей даты и времени.- После успешного выполнения
az ad sp create-for-rbac
отображает несколько значений. ЗначенияappId
,password
иtenant
используются на следующем шаге. - Пароль невозможно извлечь, если он утерян. Следовательно, пароль нужно хранить в надежном месте. Если вы забыли пароль, можно сбросить учетные данные субъекта-службы.
- В рамках этой статьи используется субъект-служба с ролью Участник. Дополнительные сведения о ролях контроль доступа на основе ролей (RBAC) см. в статье RBAC: встроенные роли.
- Выходные данные, полученные в результате создания субъекта-службы, включают конфиденциальные учетные данные. Убедитесь, что эти учетные данные не включены в код, или проверьте учетные данные в системе управления версиями.
- Дополнительные сведения о параметрах при создании субъекта-службы с помощью Azure CLI см. в статье "Создание субъекта-службы Azure с помощью Azure CLI".
указывать учетные данные субъекта-службы в переменных среды;
После создания субъекта-службы можно указать его учетные данные в Terraform с помощью переменных среды.
Измените файл
~/.bashrc
, добавив следующие переменные среды.export ARM_SUBSCRIPTION_ID="<azure_subscription_id>" export ARM_TENANT_ID="<azure_subscription_tenant_id>" export ARM_CLIENT_ID="<service_principal_appid>" export ARM_CLIENT_SECRET="<service_principal_password>"
Чтобы выполнить скрипт
~/.bashrc
, выполните командуsource ~/.bashrc
(или ее сокращенный эквивалент. ~/.bashrc
). Можно также выйти и повторно открыть Cloud Shell для автоматического запуска скрипта.. ~/.bashrc
После установки переменных среды можно проверить их значения следующим образом:
printenv | grep ^ARM*
Основные моменты:
- Как и в случае с любой переменной среды, для доступа к значению подписки Azure из скрипта Terraform используйте следующий синтаксис:
${env.<environment_variable>}
. Например, чтобы получить доступ к значениюARM_SUBSCRIPTION_ID
, укажите${env.ARM_SUBSCRIPTION_ID}
. - Создание и применение планов выполнения Terraform вносит изменения в подписку Azure, связанную с субъектом-службой. Этот факт иногда может вводить в заблуждение, если вы выполнили вход в одну подписку Azure, а переменные среды указывают на вторую подписку Azure. Рассмотрим следующий пример. Предположим, у вас есть две подписки Azure: SubA и SubB. Если текущая подписка Azure — SubA (определена через
az account show
), а переменные среды указывают на SubB, любые внесенные Terraform изменения будут применены в SubB. Поэтому вам нужно войти в подписку SubB, чтобы выполнить команды Azure CLI или Azure PowerShell для просмотра изменений.
указывать учетные данные субъекта-службы в блоке поставщика Terraform.
Блок поставщика Azure определяет синтаксис, позволяющий указать сведения о проверке подлинности в подписке Azure.
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~>2.0"
}
}
}
provider "azurerm" {
features {}
subscription_id = "<azure_subscription_id>"
tenant_id = "<azure_subscription_tenant_id>"
client_id = "<service_principal_appid>"
client_secret = "<service_principal_password>"
}
# Your code goes here
Внимание
Возможность указывать учетные данные подписки Azure в файле конфигурации Terraform может пригодиться, особенно при тестировании. Однако не рекомендуется хранить учетные данные в виде текстового файла, который может просматриваться ненадежными лицами.
3. Проверка результатов
Убедитесь, что вы прошли аутентификацию в подписке Azure, отобразив текущую подписку.
Чтобы подтвердить текущую подписку Azure через Azure CLI, запустите az account show.
az account show
Следующие шаги
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по