Как управлять подписками Azure с помощью Azure CLI
Azure CLI помогает управлять подпиской Azure, создавать группы управления и блокировать подписки. У вас может быть несколько подписок в Azure. Вы можете работать с несколькими организациями, или в вашей организации доступ к определенным ресурсам может быть разделен между группами. Azure CLI поддерживает выбор подписки как глобально, так и для отдельных команд.
См. подробнее о подписках, выставлении счетов и управлении затратами.
Терминология
Тенант — это экземпляр Microsoft Entra ID, в котором находятся сведения об одной организации. Многотенантная организация — это организация с несколькими экземплярами идентификатора Microsoft Entra. У арендатора есть одна или несколько подписок и один или более пользователей.
Пользователи — это учетные записи для входа в Azure, которые используются, чтобы создавать, использовать и администрировать ресурсы. У пользователя может быть доступ к нескольким клиентам и подпискам.
Подписки — это соглашения с корпорацией Майкрософт на использование облачных служб, в том числе Azure. Каждый ресурс связан с подпиской. Подписки содержат группы ресурсов.
Группа ресурсов Azure — это контейнер, содержащий связанные ресурсы для решения Azure. Сведения об управлении группами ресурсов в подписке см. в статье Управление группами ресурсов Azure с помощью Azure CLI.
Получить активного арендатора
Чтобы получить идентификатор активного арендатора, используйте az account tenant list или az account show.
az account tenant list
az account show
Изменение активного арендатора
Для переключения арендаторов у вас есть два варианта.
Войдите в качестве пользователя в нужном клиенте. Чтобы изменить активный арендатор и обновить список ваших подписок, используйте az login.
# sign in as a different user az login --user <[email protected]> --password <myPassword> # sign in with a different tenant az login --tenant <myTenantID>
Если в вашей организации требуется многофакторная проверка подлинности, при использовании
az login --user
может возникнуть следующая ошибка:Due to a configuration change made by your administrator, or because you moved to a new location, you must use multi-factor authentication to access...
С помощью альтернативной
az login --tenant
командной строки можно открыть страницу HTTPS и ввести предоставленный код. После этого вы можете использовать многофакторную проверку подлинности и успешно войти в систему. Дополнительные сведения о вариантах входа с помощью Azure CLI см. в статье Вход с помощью Azure CLI.
Получение сведений о подписке
Большинство команд Azure CLI выполняются в подписке. Вы можете указать, в какой подписке работать с помощью --subscription
параметра в команде. Если подписка не указана, в команде используется текущая активная подписка.
Чтобы просмотреть используемую сейчас подписку или получить список доступных подписок, выполните команду az account show или az account list. Перейдите на страницу "Изучите использование Bash с Azure CLI", чтобы увидеть больше примеров использования этих команд.
Ниже приведены примеры получения сведений о подписке:
# get the current default subscription using show
az account show --output table
# get the current default subscription using list
az account list --query "[?isDefault]"
# get a subscription that contains search words or phrases
az account list --query "[?contains(name,'search phrase')].{SubscriptionName:name, SubscriptionID:id, TenantID:tenantId}" --output table
Вы также можете хранить сведения о подписке в переменной для использования в скрипте.
# store the default subscription in a variable
subscriptionId="$(az account list --query "[?isDefault].id" --output tsv)"
echo $subscriptionId
# store a subscription of certain name in a variable
subscriptionId="$(az account list --query "[?name=='my case sensitive subscription full name'].id" --output tsv)"
echo $subscriptionId
Совет
Параметр --output
является глобальным, то есть доступным для всех команд. Значение table позволяет получить выходные данные в удобном формате. Дополнительные сведения см. в статье Форматы выходных данных для команд Azure CLI.
Изменение активной подписки
У подписок Azure есть и имя, и идентификатор. Вы можете переключиться на другую подписку с помощью az account set, указав идентификатор или имя нужной подписки.
# change the active subscription using the subscription name
az account set --subscription "My Demos"
# change the active subscription using the subscription ID
az account set --subscription "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
Вы также можете изменить подписку с помощью переменной. Рассмотрим пример:
# change the active subscription using a variable
subscriptionId="$(az account list --query "[?name=='my case sensitive subscription full name'].id" --output tsv)"
az account set --subscription $subscriptionId
Если вы измените подписку, которая находится в другом клиенте, вы также измените активный клиент. Чтобы узнать, как добавить новую подписку в клиент Microsoft Entra, подробнее см. статью «Связать или добавить подписку Azure в клиент Microsoft Entra».
Если вы получили ошибку "Подписка ... не существует...", см. раздел "Устранение неполадок для возможных решений.
Очистка кэша подписки
Чтобы обновить список подписок, используйте команду az account clear . Чтобы просмотреть обновленный список, вам потребуется снова войти в систему.
az account clear
az login
Очистка кэша подписки не является технически тем же процессом, что и выход из Azure. Однако при очистке кэша подписок нельзя запускать команды Azure CLI, в том числе az account set
, до повторного входа.
Создание групп управления Azure
Группы управления Azure содержат подписки. Группы управления предоставляют возможность управления доступом, политиками и соответствием для этих подписок. Дополнительные сведения см. в статье Что такое группы управления Azure?
Создавать и администрировать группы управления Azure можно с помощью команд az account management-group.
Группу управления для нескольких подписок можно создать с помощью команды az account management-group create:
az account management-group create --name Contoso01
Чтобы просмотреть все группы управления, воспользуйтесь командой az account management-group list:
az account management-group list
Добавьте подписки в новую группу с помощью команды az account management-group subscription add:
az account management-group subscription add --name Contoso01 --subscription "My Demos"
az account management-group subscription add --name Contoso01 --subscription "My Second Demos"
Чтобы удалить подписку, используйте команду az account management-group subscription remove:
az account management-group subscription remove --name Contoso01 --subscription "My Demos"
Чтобы удалить группу управления, выполните команду az account management-group delete:
az account management-group delete --name Contoso01
При удалении подписки или группы управления подписка не удаляется без возможности восстановления и не деактивируется.
Установка блокировки подписки Azure
Администратору может потребоваться заблокировать подписку, чтобы запретить пользователям удалять или изменять ее. Дополнительные сведения см. в статье Блокировка ресурсов для предотвращения непредвиденных изменений.
В Azure CLI используйте команды az account lock. Например, с помощью команды az account lock create можно запретить удаление подписки пользователями:
az account lock create --name "Cannot delete subscription" --lock-type CanNotDelete
Примечание.
Для создания или изменения блокировок необходимо иметь contributor
разрешения на подписку.
Чтобы просмотреть текущие блокировки в подписке, воспользуйтесь командой az account lock list:
az account lock list --output table
Если сделать учетную запись доступной только для чтения, результат будет подобен назначению разрешений роли читателя всем пользователям. Дополнительные сведения о настройке разрешений для отдельных пользователей и ролей см. в статье Добавление и удаление назначений ролей Azure с помощью Azure CLI.
Чтобы просмотреть сведения о блокировке, воспользуйтесь командой az account lock show:
az account lock show --name "Cannot delete subscription"
Снять блокировку можно с помощью команды az account lock delete:
az account lock delete --name "Cannot delete subscription"
Устранение неполадок
Подписка не существует
Помимо типографической ошибки, вы можете получить эту ошибку при возникновении проблемы с временем разрешений. Например, если вы получили разрешения на новые подписки во время открытия текущего окна терминала, эта ошибка может возникнуть. Решение заключается в том, чтобы либо закрыть и снова открыть окно терминала, либо использовать az logout
, а затем az login
, чтобы обновить список доступных подписок.
Ниже приведен скрипт, который поможет вам найти и изменить подписку.
# See what subscription you are currently using.
az account show
# Get a list of available subscriptions.
az account list --output table
# If the subscription you are seeking is not in the list
# close and reopen your terminal window,
# or logout and then sign in again.
az logout
az login
# You can also clear your cache to refresh the
# available subscription list
az account clear
az login
# Did your available subscription list change?
az account list --output table
# If the subscription you are seeking is still not in the list,
# contact your system administrator. You cannot change your
# subscription to an ID that is not in the list.
# If the subscription you are seeking is now in the list,
# change your subscription.
az account set --subscription 00000000-0000-0000-0000-00000000000