Distribuera Azure Policy till delegerade prenumerationer i stor skala
Som tjänstleverantör kan du ha registrerat flera kundklienter för att Azure Lighthouse. Azure Lighthouse tjänstleverantörer kan utföra åtgärder i stor skala över flera klientorganisationsklienter samtidigt, vilket gör hanteringsuppgifterna mer effektiva.
Det här avsnittet visar hur du använder Azure Policy för att distribuera en principdefinition och principtilldelning över flera klienter med hjälp av PowerShell-kommandon. I det här exemplet säkerställer principdefinitionen att lagringskonton skyddas genom att endast tillåta HTTPS-trafik.
Tips
Även om vi refererar till tjänstleverantörer och kunder i det här avsnittet kan företag som hanterar flera klienter använda samma processer.
Använda Azure Resource Graph fråga mellan kundklienter
Du kan använda Azure Resource Graph för att fråga efter alla prenumerationer i kundklienter som du hanterar. I det här exemplet identifierar vi alla lagringskonton i dessa prenumerationer som för närvarande inte kräver HTTPS-trafik.
$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
Distribuera en princip över flera kundklienter
Exemplet nedan visar hur du använder en Azure Resource Manager för att distribuera en principdefinition och principtilldelning över delegerade prenumerationer i flera kundklienter. Den här principdefinitionen kräver att alla lagringskonton använder HTTPS-trafik, vilket förhindrar att nya lagringskonton skapas som inte uppfyller och markerar befintliga lagringskonton utan inställningen som icke-kompatibla.
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
}
Anteckning
Du kan distribuera principer över flera klienter, men för närvarande kan du inte visa efterlevnadsinformation för icke-kompatibla resurser i dessa klienter.
Verifiera principdistributionen
När du har distribuerat Azure Resource Manager-mallen kan du bekräfta att principdefinitionen har tillämpats genom att försöka skapa ett lagringskonto med EnableHttpsTrafficOnly inställt på falskt i en av dina delegerade prenumerationer. På grund av principtilldelningen bör du inte kunna skapa det här lagringskontot.
New-AzStorageAccount -ResourceGroupName (New-AzResourceGroup -name policy-test -Location eastus -Force).ResourceGroupName `
-Name (get-random) `
-Location eastus `
-EnableHttpsTrafficOnly $false `
-SkuName Standard_LRS `
-Verbose
Rensa resurser
När du är klar tar du bort principdefinitionen och tilldelningen som skapades av distributionen.
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"
}
}
Nästa steg
- Läs mer om att Azure Policy.
- Lär dig mer om hantering av flera klientorganisationsupplevelser.
- Lär dig hur du distribuerar en princip som kan åtgärdas i en delegerad prenumeration.