Nasazení Azure Policy do delegovaných předplatných ve velkém měřítku
Jako poskytovatel služeb jste možná nasedli do několika tenantů zákazníků, kteří Azure Lighthouse. Azure Lighthouse umožňuje poskytovatelům služeb provádět operace ve velkém měřítku napříč několika tenanty najednou, takže úlohy správy jsou efektivnější.
Toto téma ukazuje, jak pomocí Azure Policy nasadit definici a přiřazení zásad mezi více tenantů pomocí příkazů PowerShellu. V tomto příkladu definice zásady zajišťuje zabezpečení účtů úložiště povolením pouze provozu HTTPS.
Tip
I když se v tomto tématu odkazujeme na poskytovatele služeb a zákazníky, podniky, které spravují více tenantů, mohou používat stejné procesy.
Použití Azure Resource Graph k dotazování napříč tenanty zákazníků
Azure Resource Graph můžete použít k dotazování na všechna předplatná v tenantech zákazníků, které spravujete. 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ásad napříč několika tenanty zákazníků
Následující příklad ukazuje, jak pomocí šablony Azure Resource Manager nasadit definici zásady a přiřazení zásad mezi delegovaná předplatná ve více tenantech zákazníků. Tato definice zásady vyžaduje, aby všechny účty úložiště používejte provoz HTTPS, což brání vytvoření nových účtů úložiště, které nevyhovují, a označení existujících účtů úložiště bez nastavení jako nedodržující předpisy.
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
I když můžete nasadit zásady napříč více tenanty, v současné době nemůžete zobrazit podrobnosti o dodržování předpisů pro prostředky, které v těchto tenantech nedodržuje předpisy.
Ověření nasazení zásad
Po nasazení šablony Azure Resource Manager můžete ověřit úspěšné použití definice zásady tím, že v jednom z delegovaných předplatných vytvoříte účet úložiště s vlastností EnableHttpsTrafficOnly nastavenou na hodnotu false. Kvůli přiřazení zásad byste neměli být schopni vytvořit tento účet úložiště.
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, odeberte definici a přiřazení zásady vytvořené nasazením.
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
- Další informace o Azure Policy.
- Seznamte se s prostředími pro správu napříč tenanty.
- Zjistěte, jak nasadit zásadu, kterou je možné opravit v rámci delegovaného předplatného.