Partilhar via


Guia de início rápido: implantar um arquivo Bicep como um principal de serviço

Neste início rápido, você implanta um arquivo Bicep que contém recursos do Microsoft Graph usando autenticação somente de aplicativo, também conhecida como autenticação não interativa. Você pode usar este mecanismo para a integração das implantações sem intervenção em fluxos de trabalho de integração contínua e entrega contínua (CI/CD).

Para implantar usando autenticação delegada ou interativa, consulte Criar um arquivo Bicep com recursos do Microsoft Graph.

Importante

O Microsoft Graph Bicep está atualmente em pré-visualização. Veja os Termos de Utilização Complementares para Pré-visualizações do Microsoft Azure para conhecer os termos legais aplicáveis às funcionalidades do Azure que estão em versão beta, em pré-visualização ou que ainda não foram lançadas para disponibilidade geral.

Pré-requisitos

Criar um principal de serviço e atribuir uma função do Azure

Enquanto ainda estiver conectado à CLI do Azure da sessão anterior, crie a entidade de serviço que você usará posteriormente para implantar o arquivo Bicep.

Neste início rápido, a entidade de serviço é criada com uma senha de aplicativo, também conhecida como segredo do cliente. Além disso, atribua à entidade de serviço a função de Colaborador de Identidade Gerenciada, com escopo para um grupo de recursos:

Atenção

Este guia de início rápido utiliza uma palavra-passe da aplicação apenas para fins de teste e simplicidade. Não utilizar em ambientes de produção.

# 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}"

Console de saída:

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

A saída inclui a chave password. Certifique-se de copiar esse valor - ele não pode ser recuperado.

Atribuir permissões do Microsoft Graph à entidade de serviço

Utilize o Microsoft Graph PowerShell para conceder a permissão de aplicação exclusiva Group.ReadWrite.All à entidade de serviço. A função Administrador de Função Privilegiada permite que você conceda a si mesmo as permissões AppRoleAssignment.ReadWrite.All e Application.Read.All para executar essa operação.

Atenção

Os aplicativos aos quais foi concedida a permissão AppRoleAssignment.ReadWrite.All só devem ser acessados por usuários apropriados. Para obter mais informações, consulte 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" 

Inicie sessão como entidade de serviço para desplegar o arquivo Bicep

Inicie sessão como a entidade de serviço criada anteriormente.

# 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

Importante

Se você quiser evitar exibir sua senha no console e estiver usando az login interativamente, use o read -s comando em bash.

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

Implantar o arquivo Bicep

Agora, implante o arquivo Bicep no escopo do seu grupo de recursos.

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

Nota

Devido a atrasos de replicação, adicionar a identidade de serviço gerenciado (MSI) como proprietário do grupo Microsoft Entra pode fazer com que a implantação falhe. Aguarde um pouco e, em seguida, implante o mesmo arquivo Bicep novamente.

Limpar recursos

Quando os recursos do Azure não forem mais necessários, use a CLI do Azure ou o módulo do Azure PowerShell para excluir o grupo de recursos que você criou.

Nota

Os grupos de recursos são um conceito do Azure e não têm impacto nos recursos do Microsoft Graph. Os recursos do Microsoft Graph precisam ser limpos com uma solicitação adicional ao Microsoft Graph. Para isso, você pode usar a CLI do Azure ou o Azure PowerShell, a CLI do Microsoft Graph ou o Microsoft Graph PowerShell.

Os exemplos a seguir mostram comandos para excluir primeiro o recurso do Azure e, em seguida, os recursos do Microsoft Graph usando a CLI do Azure e o 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