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


Краткое руководство. Развертывание Bicep-файла в качестве субъекта-службы

В этом кратком руководстве вы развернете файл Bicep, содержащий ресурсы Microsoft Graph, используя проверку подлинности только для приложений, также называемую неинтерактивной проверкой подлинности. Этот механизм можно использовать для интеграции нулевого касания в конвейеры непрерывной интеграции и непрерывной доставки (CI/CD).

Сведения о развертывании с помощью делегированной или интерактивной проверки подлинности см. в статье "Создание файла Bicep с ресурсами Microsoft Graph".

Внимание

Microsoft Graph Bicep в настоящее время находится в предварительной версии. Юридические условия, применимые к функциям Azure, которые находятся в состоянии бета-версии, предварительной версии или иным образом еще не выпущены в общедоступной версии, см. на странице Дополнительные условия использования предварительных версий в Microsoft Azure.

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

  • В этом кратком руководстве используйте файл Bicep, созданный в файле Bicep с ресурсами Microsoft Graph.
  • Вы являетесь владельцем подписки Azure.
  • Вы являетесь администратором привилегированных ролей, что позволяет назначать роли приложений Microsoft Graph субъекту-службе.

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

При входе в Azure CLI из предыдущего сеанса создайте субъект-службу, который будет использоваться позже для развертывания Bicep-файла.

В этом кратком руководстве субъект-служба создается с паролем приложения, который также называется секретом клиента. Кроме того, назначьте субъекту-службе роль участника управляемого удостоверения, область действия в группе ресурсов:

Внимание

В этом кратком руководстве используется пароль приложения только для простоты и тестирования. Не используйте в рабочих средах.

# Create a resource group
az group create --name exampleRG --location eastus

# Create a service principal with the Managed Identity Contributor role. Replace {myServicePrincipalName}, {mySubscriptionId}, and {myResourceGroupName} with your values.
az ad sp create-for-rbac --name {myServicePrincipalName} --role "Managed Identity Contributor" --scopes "/subscriptions/{mySubscriptionId}/resourceGroups/{myResourceGroupName}"

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

{
  "appId": "myServicePrincipalId",
  "displayName": "myServicePrincipalName",
  "password": "myServicePrincipalPassword",
  "tenant": "myOrganizationTenantId"
}

Выходные password данные включают ключ. Обязательно скопируйте это значение, так как его нельзя получить повторно.

Назначение разрешений Microsoft Graph субъекту-службе

Используйте Microsoft Graph PowerShell для предоставления разрешения только для приложения Group.ReadWrite.All субъекту-службе. Роль администратора привилегированных ролей позволяет предоставить себе разрешения AppRoleAssignment.ReadWrite.All и Application.Read.All для выполнения этой операции.

Внимание

Приложения, которым предоставлено разрешение AppRoleAssignment.ReadWrite.All , должны получать доступ только соответствующими пользователями. Дополнительные сведения см. в разделе AppRoleAssignment.ReadWrite.All.

# Authenticate to Microsoft Graph
Connect-MgGraph -Scopes "AppRoleAssignment.ReadWrite.All","Application.Read.All"

# Find the service principal created to run the deployment
$mySP = Get-MgServicePrincipalByAppId -AppId "myServicePrincipalId"

# Find the service principal for Microsoft Graph
$graphSP = Get-MgServicePrincipalByAppId -AppId "00000003-0000-0000-c000-000000000000"

# Assign Group.ReadWrite.All app-only permission (id = 62a82d76-70ea-41e2-9197-370581804d09)
New-MgServicePrincipalAppRoleAssignedTo -ResourceId $graphSP.Id -ServicePrincipalId $graphSP.Id -PrincipalId $mySP.Id -AppRoleId "62a82d76-70ea-41e2-9197-370581804d09" 

Вход в качестве субъекта-службы для развертывания Bicep-файла

Войдите как субъект-служба, созданный ранее.

# Sign in with the service principal created earlier. This sample uses the Bash console.
spID=$(az ad sp list --display-name myServicePrincipalName --query "[].{spID:appId}" --output tsv)
tenantID=$(az ad sp list --display-name myServicePrincipalName --query "[].{tenantID:appOwnerOrganizationId}" --output tsv)
echo "Using appId $spID in tenant $tenantID"

az login --service-principal --username $spID --password {paste your SP password here} --tenant $tenantID

Внимание

Если вы хотите избежать отображения пароля в консоли и интерактивного использования az login , используйте read -s команду в bash.

read -sp "Azure password: " AZ_PASS && echo && az login --service-principal -u <app-id> -p $AZ_PASS --tenant <tenant>

Развертывание BICEP-файла

Теперь разверните Bicep-файл с помощью области группы ресурсов.

az deployment group create --resource-group exampleRG --template-file main.bicep

Примечание.

Из-за задержек репликации добавление управляемого удостоверения службы (MSI) в качестве владельца группы Microsoft Entra может привести к сбою развертывания. Подождите немного, а затем снова разверните тот же файл Bicep.

Очистка ресурсов

Если ресурсы Azure больше не нужны, используйте модуль Azure CLI или Azure PowerShell для удаления созданной группы ресурсов.

Примечание.

Группы ресурсов — это концепция Azure и не влияют на ресурсы Microsoft Graph. Ресурсы Microsoft Graph необходимо очистить с дополнительным запросом к Microsoft Graph. Для этого можно использовать Azure CLI или Azure PowerShell, Microsoft Graph CLI или Microsoft Graph PowerShell.

В следующих примерах показаны команды для удаления ресурса Azure, а затем ресурсов Microsoft Graph с помощью Azure CLI и Azure PowerShell.

# Delete the resource group
az group delete --name exampleRG

# Delete the Microsoft Graph group
az rest --method delete --url 'https://graph.microsoft.com/v1.0/groups%28uniqueName=%27myExampleGroup%27%29'

# Delete the client service principal
spID=$(az ad sp list --display-name myServicePrincipalName --query "[].{spID:id}" --output tsv)
az ad sp delete --id $spID