Partilhar via


Guia de início rápido: implantar um arquivo Bicep como uma entidade 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 esse mecanismo para integração de implantação zero-touch em pipelines 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 Termos de Utilização Complementares da Pré-visualizações do Microsoft Azure para obter os termos legais que se aplicam às funcionalidades do Azure que estão na versão beta, na pré-visualização ou que ainda não foram lançadas para disponibilidade geral.

Pré-requisitos

Criar uma entidade 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 está usando uma senha de aplicativo apenas para fins de simplicidade e teste. 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 password chave. Certifique-se de copiar esse valor - ele não pode ser recuperado.

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

Use o Microsoft Graph PowerShell para conceder a permissão somente de aplicativo Group.ReadWrite.All para a 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" 

Entre como entidade de serviço para implantar o arquivo Bicep

Entre 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 usando o 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.

Clean up resources (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