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


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

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

В этом руководстве описано следующее:

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

Необходимые компоненты

  • Для создания субъекта-службы в подписке необходимо иметь User Access Administrator разрешения или Role Based Access Control Administrator разрешения. Список ролей, доступных для управления доступом на основе ролей Azure (Azure RBAC), см . в статье о встроенных ролях Azure.
  • Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см . в кратком руководстве по Bash в Azure Cloud Shell.

  • Если вы предпочитаете выполнять справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.

    • Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Сведения о других возможностях, доступных при входе, см. в статье Вход с помощью Azure CLI.

    • Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.

    • Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.

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

Используйте команду 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, где пользователи могут зарегистрировать приложения , установлено значение No, необходимо быть членом одной из следующих встроенных ролей Microsoft Entra ID (которые имеют действие: microsoft.directory/applications/createAsOwner или microsoft.directory/applications/create):

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

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

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

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

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

  2. Получите значение параметра область s.

    Найдите и скопируйте идентификатор ресурса ресурса 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 в выходные данные включаются учетные данные, которые необходимо защитить. Убедитесь, что эти учетные данные не включены в код, или проверьте учетные данные в системе управления версиями. В качестве альтернативы можно использовать управляемые удостоверения (если они доступны), чтобы не работать с учетными данными.

Next Steps

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