Краткое руководство. Развертывание 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
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по