Bagikan melalui


Mulai cepat: Menyebarkan file Bicep sebagai perwakilan layanan

Dalam mulai cepat ini, Anda menyebarkan file Bicep yang berisi sumber daya Microsoft Graph menggunakan autentikasi khusus aplikasi, juga dikenal sebagai autentikasi non-interaktif. Anda dapat menggunakan mekanisme ini untuk integrasi penyebaran tanpa sentuhan ke dalam alur integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD).

Untuk menyebarkan menggunakan autentikasi yang didelegasikan atau interaktif, lihat Membuat file Bicep dengan sumber daya Microsoft Graph.

Penting

Microsoft Graph Bicep saat ini dalam PRATINJAU. Lihat Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure untuk persyaratan hukum yang berlaku pada fitur Azure dalam versi beta, pratinjau, atau belum dirilis secara umum.

Prasyarat

  • Untuk mulai cepat ini, gunakan file Bicep yang dibuat di Membuat file Bicep dengan sumber daya Microsoft Graph.
  • Anda adalah pemilik langganan Azure.
  • Anda adalah Administrator Peran Istimewa, yang memungkinkan Anda menetapkan peran aplikasi Microsoft Graph ke perwakilan layanan.

Membuat perwakilan layanan dan menetapkan peran Azure

Saat masih masuk ke Azure CLI dari sesi sebelumnya, buat perwakilan layanan yang Anda gunakan nanti untuk menyebarkan file Bicep.

Dalam mulai cepat ini, perwakilan layanan dibuat dengan kata sandi aplikasi, juga dikenal sebagai rahasia klien. Selain itu, tetapkan perwakilan layanan peran Kontributor Identitas Terkelola, yang dilingkupkan ke grup sumber daya:

Perhatian

Mulai cepat ini menggunakan kata sandi aplikasi hanya untuk kesederhanaan dan tujuan pengujian. Jangan gunakan di lingkungan produksi.

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

Konsol Output:

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

Output mencakup kunci password . Pastikan Anda menyalin nilai ini - nilai itu tidak dapat diambil kembali.

Menetapkan izin Microsoft Graph ke perwakilan layanan

Gunakan Microsoft Graph PowerShell untuk memberikan izin khusus aplikasi Group.ReadWrite.All ke perwakilan layanan. Peran Administrator Peran Istimewa memungkinkan Anda memberikan izin AppRoleAssignment.ReadWrite.All dan Application.Read.All untuk melakukan operasi ini.

Perhatian

Aplikasi yang telah diberikan izin AppRoleAssignment.ReadWrite.All hanya boleh diakses oleh pengguna yang sesuai. Untuk informasi selengkapnya, lihat 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" 

Masuk sebagai perwakilan layanan untuk menyebarkan file Bicep

Masuk sebagai perwakilan layanan yang dibuat sebelumnya.

# 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

Penting

Jika Anda ingin menghindari menampilkan kata sandi Anda di konsol dan menggunakan az login secara interaktif, gunakan read -s perintah di bash.

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

Menerapkan file Bicep

Sekarang sebarkan file Bicep menggunakan cakupan grup sumber daya Anda.

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

Catatan

Karena penundaan replikasi, menambahkan identitas layanan terkelola (MSI) sebagai pemilik grup Microsoft Entra dapat menyebabkan penyebaran gagal. Tunggu sedikit lalu sebarkan file Bicep yang sama lagi.

Membersihkan sumber daya

Saat sumber daya Azure tidak lagi diperlukan, gunakan modul Azure CLI atau Azure PowerShell untuk menghapus grup sumber daya yang Anda buat.

Catatan

Grup sumber daya adalah konsep Azure dan tidak berdampak pada sumber daya Microsoft Graph. Sumber daya Microsoft Graph perlu dibersihkan dengan permintaan tambahan ke Microsoft Graph. Untuk ini, Anda dapat menggunakan Azure CLI atau Azure PowerShell, Microsoft Graph CLI, atau Microsoft Graph PowerShell.

Contoh berikut menunjukkan perintah untuk menghapus sumber daya Azure terlebih dahulu lalu sumber daya Microsoft Graph menggunakan Azure CLI dan 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