Compartilhar via


Início Rápido: Implantar um arquivo Bicep como uma entidade de serviço

Neste guia de início rápido, você implanta um arquivo Bicep que contém recursos do Microsoft Graph usando a 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 sem toque em pipelines de CI/CD (integração contínua e entrega contínua).

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

Importante

O Microsoft Graph Bicep está atualmente em versão prévia. Veja os Termos de Uso Complementares para Versões Prévias do Microsoft Azure para obter termos legais que se aplicam aos recursos do Azure que estão em versão beta, versão prévia ou que, de outra forma, ainda não foram lançados em disponibilidade geral.

Pré-requisitos

  • Para este guia de início rápido, use o arquivo Bicep criado em Criar um arquivo Bicep com recursos do Microsoft Graph.
  • Você é proprietário de uma assinatura do Azure.
  • Você é um Administrador de Função com Privilégios, o que permite atribuir funções de aplicativo do Microsoft Graph a uma entidade de serviço.

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 Colaborador de Identidade Gerenciada, com escopo para um grupo de recursos:

Cuidado

Este guia de início rápido está usando uma senha de aplicativo apenas para fins de simplicidade e teste. Não use 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. Verifique se você copiou esse valor, ele não poderá ser recuperado.

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

Use o PowerShell do Microsoft Graph para conceder a permissão somente aplicativo Group.ReadWrite.All à entidade de serviço. A função de Administrador de Função com Privilégios permite que você conceda a si mesmo as permissões AppRoleAssignment.ReadWrite.All e Application.Read.All para executar essa operação.

Cuidado

Os aplicativos que receberam a permissão AppRoleAssignment.ReadWrite.All só devem ser acessados pelos 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

Caso deseje evitar a exibição de sua senha no console e esteja usando az login interativamente, use o comando read -s em bash.

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

Implante o arquivo Bicep

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

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

Observação

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

Limpar os 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.

Observação

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 para o 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 o recurso do Azure primeiro 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