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
- Para este 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 Privilegiada, 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 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