Nasazení služby Azure Policy do delegovaných předplatných ve velkém měřítku
Jako poskytovatel služeb jste možná do služby Azure Lighthouse onboardovali tenanty několika zákazníků. Azure Lighthouse umožňuje poskytovatelům služeb provádět operace ve velkém měřítku v několika tenantech najednou, což usnadňuje úlohy správy.
Toto téma vysvětluje, jak pomocí Azure Policy nasadit definici zásad a přiřazení zásad napříč více tenanty pomocí příkazů PowerShellu. V tomto příkladu definice zásady zajišťuje, že účty úložiště jsou zabezpečené povolením pouze provozu HTTPS. Stejný obecný postup můžete použít pro všechny zásady, které chcete nasadit.
Tip
Přestože v tomto tématu odkazujeme na poskytovatele služeb a zákazníky, podniky spravující více tenantů můžou používat stejné procesy.
Použití Azure Resource Graphu k dotazování napříč tenanty zákazníků
Azure Resource Graph můžete použít k dotazování na všechna předplatná ve spravovaných tenantech zákazníků. V tomto příkladu identifikujeme všechny účty úložiště v těchto předplatných, které aktuálně nevyžadují provoz 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
Nasazení zásady napříč několika tenanty zákazníků
Následující příklad ukazuje, jak pomocí šablony Azure Resource Manageru nasadit definici zásad a přiřazení zásad napříč delegovanými předplatnými ve více tenantech zákazníků. Tato definice zásad vyžaduje, aby všechny účty úložiště používaly provoz HTTPS. Zabrání vytvoření nových účtů úložiště, které nevyhovují. Všechny existující účty úložiště bez nastavení se označí jako nevyhovující.
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
}
Poznámka:
Zásady můžete nasadit napříč více tenanty, v současné době ale nemůžete zobrazit podrobnosti o dodržování předpisů pro nevyhovující prostředky v těchto tenantech.
Ověření nasazení zásad
Po nasazení šablony Azure Resource Manageru ověřte, že se definice zásady úspěšně použila, a to pokusem o vytvoření účtu úložiště s nastavením EnableHttpsTrafficOnly na false v jednom z delegovaných předplatných. Kvůli přiřazení zásad byste neměli tento účet úložiště vytvořit.
New-AzStorageAccount -ResourceGroupName (New-AzResourceGroup -name policy-test -Location eastus -Force).ResourceGroupName `
-Name (get-random) `
-Location eastus `
-EnableHttpsTrafficOnly $false `
-SkuName Standard_LRS `
-Verbose
Vyčištění prostředků
Až budete hotovi, můžete definici zásady a přiřazení vytvořené nasazením odebrat.
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"
}
}
Další kroky
- Přečtěte si o službě Azure Policy.
- Seznamte se s prostředími pro správu napříč tenanty.
- Zjistěte, jak nasadit zásadu, která se dá napravit v rámci delegovaného předplatného.