Поделиться через


Создание учетной записи службы Azure с помощью Azure CLI

Автоматические средства, использующие службы Azure, всегда должны иметь ограниченные разрешения, чтобы обеспечить безопасность ресурсов Azure. Поэтому вместо того, чтобы приложения входили в систему в качестве полностью привилегированного пользователя, Azure предлагает основные параметры службы. Субъект-служба Azure — это удостоверение, созданное для использования с приложениями, размещенными службами и автоматизированными средствами. Это удостоверение используется для доступа к ресурсам.

В этом руководстве вы узнаете, как:

  • Создайте сервисного принципала
  • Вход с помощью учетной записи службы и пароля
  • Вход с помощью учетной записи службы и сертификата
  • Управление ролями сервисного принципала
  • Создание ресурса Azure с помощью служебного принципала
  • Сброс учетных данных учетной записи службы

Предпосылки

  • Для создания учетной записи службы в подписке необходимо иметь разрешения User Access Administrator или Role Based Access Control Administrator. Для получения списка ролей, доступных для управления доступом, основанного на ролях Azure (Azure RBAC), см. Встроенные роли Azure.

Создайте сервисного принципала

Используйте команду az ad sp create-for-rbac Azure CLI для создания субъекта-службы. В этом примере параметр не указан --name , поэтому имя, содержащее метку времени, создается автоматически.

az ad sp create-for-rbac

Выходная консоль:

{
  "appId": "myAppId",
  "displayName": "myServicePrincipalName",
  "password": "myServicePrincipalPassword",
  "tenant": "myTentantId"
}

Если вы не придерживаетесь соглашений об именовании ресурсов и планируете создать роль и область для нового субъекта-службы позже, az ad sp create-for-rbac команда без параметров является приемлемым решением. Однако без роли и области новый субъект-служба не имеет доступа к ресурсам. Это просто существует.

При создании субъекта-службы без параметров выполните следующие действия:

Замечание

Если у вашей учетной записи нет разрешения на создание субъекта-службы, az ad sp create-for-rbac возвращает сообщение об ошибке, которое содержит текст "Недостаточно привилегий для завершения операции". Чтобы создать сервисный принципал, обратитесь к администратору Microsoft Entra.

В каталоге Microsoft Entra ID, где для параметра Пользователи могут регистрировать приложения установлено значение Нет, вы должны быть членом одной из следующих встроенных ролей Microsoft Entra ID (которые имеют действие: microsoft.directory/applications/createAsOwner или microsoft.directory/applications/create):

Дополнительные сведения о параметрах пользователей в идентификаторе Microsoft Entra см. в разделе "Ограничение возможностей создания приложений".

Создание субъекта-службы с ролью и областью

Рекомендуется всегда назначать конкретные --role и --scopes при создании учетной записи службы. Выполните следующие действия.

  1. Определите правильную роль.

    При определении роли всегда используйте принцип наименьшей привилегии. Например, не предоставляйте служебному принципалу contributor разрешения на подписку, если ему нужно только получить доступ к хранилищу Azure в группе ресурсов. Рассмотрим специализированную роль, такую как вкладчик данных объектов BLOB-хранилища. Полный список доступных ролей в Azure RBAC см. в статье Встроенные роли Azure.

  2. Получите значение параметра scopes.

    Найдите и скопируйте Resource ID ресурса Azure, к которому должна получить доступ новая учетная запись. Обычно эта информация находится на странице Свойства или Конечные точки каждого ресурса в портале Azure. Вот распространенные --scopes примеры, но опирайтесь на ваш идентификатор ресурса, чтобы получить фактический формат и значение.

    Область действия Пример
    Подписка /subscriptions/mySubscriptionID
    Группа ресурсов /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName
    Виртуальная машина /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Compute/virtualMachines/myVMname
    Служба файлового хранилища учетной записи /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Storage/storageAccounts/myStorageAccountName/fileServices/default
    Фабрика данных /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.DataFactory/factories/myDataFactoryName

    Дополнительные примеры областей см. в статье "Общие сведения о области" для Azure RBAC.

  3. Создайте главный сервисный объект.

    В этом примере создается новый субъект-служба с именем myServicePrincipalName1 с разрешениями читателя для всех ресурсов в группе ресурсов RG1.

    # Bash script
    az ad sp create-for-rbac --name myServicePrincipalName1 \
                             --role reader \
                             --scopes /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG1
    

    Параметр --scopes принимает список областей, разделенных пробелами. В этом примере создается новый служебный принципал с именем myServicePrincipalName2, который получает разрешения читателя на все ресурсы в группе ресурсов myRG1. Этот субъект-служба также получает разрешения читателя на myVM, расположенного в myRG2.

    # Bash script
    az ad sp create-for-rbac --name myServicePrincipalName2 \
                             --role reader \
                             --scopes /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG1 /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG2/providers/Microsoft.Compute/virtualMachines/myVM
    

Если вы решите, что вы предоставили слишком мало или слишком много разрешений новому субъекту-службе, измените разрешения, управляя ролями субъекта-службы.

Создание сервисного принципала с помощью переменных

Вы также можете создать сервис-принципал с помощью переменных.

# Bash script
let "randomIdentifier=$RANDOM*$RANDOM"
servicePrincipalName="msdocs-sp-$randomIdentifier"
roleName="azureRoleName"
subscriptionID=$(az account show --query id --output tsv)
# Verify the ID of the active subscription
echo "Using subscription ID $subscriptionID"
resourceGroup="myResourceGroupName"

echo "Creating SP for RBAC with name $servicePrincipalName, with role $roleName and in scopes /subscriptions/$subscriptionID/resourceGroups/$resourceGroup"
az ad sp create-for-rbac --name $servicePrincipalName \
                         --role $roleName \
                         --scopes /subscriptions/$subscriptionID/resourceGroups/$resourceGroup

Чтобы получить полный список свойств субъекта-службы, используйте az ad sp list и обратитесь к разделу Получение существующего субъекта-службы.

Предупреждение

При создании субъекта-службы Azure с помощью команды az ad sp create-for-rbac в выходные данные включаются учетные данные, которые необходимо защитить. Убедитесь, что вы не включаете эти учетные данные в свой код и не загружаете их в систему контроля версий. В качестве альтернативы можно использовать управляемые удостоверения (если они доступны), чтобы не работать с учетными данными.

Дальнейшие шаги

Теперь, когда вы узнали, как создать основной объект службы Azure, перейдите к следующему шагу, чтобы узнать, как использовать основные объекты службы с аутентификацией с использованием паролей.