Menerapkan Azure Policy kepada langganan yang didelegasikan dalam skala
Sebagai penyedia layanan, Anda mungkin telah menyetorkan beberapa penyewa pelanggan ke Azure Lighthouse. Azure Lighthouse memungkinkan penyedia layanan melakukan operasi dalam skala besar di beberapa penyewa sekaligus, membuat tugas manajemen menjadi lebih efisien.
Topik ini memperlihatkan kepada Anda cara menggunakan Azure Policy untuk menyebar definisi kebijakan dan penetapan kebijakan di banyak penyewa menggunakan perintah PowerShell. Dalam contoh ini, definisi kebijakan memastikan bahwa akun penyimpanan diamankan dengan hanya mengizinkan lalu lintas HTTPS. Anda dapat menggunakan proses umum yang sama untuk kebijakan apa pun yang ingin Anda sebarkan.
Tip
Meskipun kami mengacu pada penyedia layanan dan pelanggan dalam topik ini, perusahaan yang mengelola banyak penyewa dapat menggunakan proses yang sama.
Menggunakan Azure Resource Graph untuk membuat kueri di penyewa pelanggan
Anda bisa menggunakan Azure Resource Graph untuk mengkueri semua langganan di penyewa pelanggan yang Anda kelola. Dalam contoh ini, kita akan mengidentifikasi akun penyimpanan apa pun dalam langganan ini yang saat ini tidak memerlukan lalu lintas HTTPS.
$MspTenant = "insert your managing tenantId here"
$subs = Get-AzSubscription
$ManagedSubscriptions = Search-AzGraph -Query "ResourceContainers | where type == 'microsoft.resources/subscriptions' | where tenantId != '$($mspTenant)' | project name, subscriptionId, tenantId" -subscription $subs.subscriptionId
Search-AzGraph -Query "Resources | where type =~ 'Microsoft.Storage/storageAccounts' | project name, location, subscriptionId, tenantId, properties.supportsHttpsTrafficOnly" -subscription $ManagedSubscriptions.subscriptionId | convertto-json
Menyebar kebijakan di banyak penyewa pelanggan
Contoh berikut menunjukkan cara menggunakan templat Azure Resource Manager untuk menyebarkan definisi kebijakan dan penetapan kebijakan di seluruh langganan yang didelegasikan di beberapa penyewa pelanggan. Definisi kebijakan ini mengharuskan semua akun penyimpanan untuk menggunakan lalu lintas HTTPS. Ini mencegah pembuatan akun penyimpanan baru yang tidak mematuhinya. Setiap akun penyimpanan yang ada tanpa pengaturan ditandai sebagai tidak patuh.
Write-Output "In total, there are $($ManagedSubscriptions.Count) delegated customer subscriptions to be managed"
foreach ($ManagedSub in $ManagedSubscriptions)
{
Select-AzSubscription -SubscriptionId $ManagedSub.subscriptionId
New-AzSubscriptionDeployment -Name mgmt `
-Location eastus `
-TemplateUri "https://raw.githubusercontent.com/Azure/Azure-Lighthouse-samples/master/templates/policy-enforce-https-storage/enforceHttpsStorage.json" `
-AsJob
}
Catatan
Meskipun Anda dapat menyebar kebijakan di banyak penyewa, saat ini Anda tidak dapat melihat detail kepatuhan untuk sumber daya yang tidak mematuhi di penyewa ini.
Memvalidasi penyebaran kebijakan
Setelah Anda menyebarkan templat Azure Resource Manager, konfirmasikan bahwa definisi kebijakan berhasil diterapkan dengan mencoba membuat akun penyimpanan dengan EnableHttpsTrafficOnly diatur ke false di salah satu langganan yang didelegasikan. Karena penetapan kebijakan, Anda seharusnya tidak dapat membuat akun penyimpanan ini.
New-AzStorageAccount -ResourceGroupName (New-AzResourceGroup -name policy-test -Location eastus -Force).ResourceGroupName `
-Name (get-random) `
-Location eastus `
-EnableHttpsTrafficOnly $false `
-SkuName Standard_LRS `
-Verbose
Membersihkan sumber daya
Setelah selesai, Anda dapat menghapus definisi kebijakan dan penetapan yang dibuat oleh penyebaran.
foreach ($ManagedSub in $ManagedSubscriptions)
{
select-azsubscription -subscriptionId $ManagedSub.subscriptionId
Remove-AzSubscriptionDeployment -Name mgmt -AsJob
$Assignment = Get-AzPolicyAssignment | where-object {$_.Name -like "enforce-https-storage-assignment"}
if ([string]::IsNullOrEmpty($Assignment))
{
Write-Output "Nothing to clean up - we're done"
}
else
{
Remove-AzPolicyAssignment -Name 'enforce-https-storage-assignment' -Scope "/subscriptions/$($ManagedSub.subscriptionId)" -Verbose
Write-Output "Deployment has been deleted - we're done"
}
}
Langkah berikutnya
- Pelajari tentang Azure Policy.
- Pelajari tentang pengalaman manajemen lintas penyewa.
- Pelajari cara untuk menerapkan kebijakan yang dapat diperbaiki di dalam langganan yang didelegasikan.