Azure Policy üzembe helyezése delegált előfizetésekben nagy léptékben

Szolgáltatóként előfordulhat, hogy több ügyfélbérlőt is előkészített az Azure Lighthouse-ba. Az Azure Lighthouse lehetővé teszi a szolgáltatók számára, hogy egyszerre több bérlőre kiterjedő műveletet hajtsanak végre, ami hatékonyabbá teszi a felügyeleti feladatokat.

Ez a témakör azt ismerteti, hogyan helyezhet üzembe Azure Policy egy szabályzatdefiníciót és szabályzat-hozzárendelést több bérlőn PowerShell-parancsokkal. Ebben a példában a szabályzatdefiníció biztosítja, hogy a tárfiókok csak HTTPS-forgalom engedélyezésével legyenek biztonságosak.

Tipp

Bár ebben a témakörben a szolgáltatókra és az ügyfelekre hivatkozunk, a több bérlőt kezelő vállalatok ugyanazokat a folyamatokat használhatják.

Az Azure Resource Graph használata az ügyfélbérlők közötti lekérdezéshez

Az Azure Resource Graph használatával lekérdezheti a felügyelt ügyfélbérlők összes előfizetését. Ebben a példában minden olyan tárfiókot azonosítunk ezekben az előfizetésekben, amelyek jelenleg nem igényelnek HTTPS-forgalmat.

$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

Szabályzat üzembe helyezése több ügyfélbérlőben

Az alábbi példa bemutatja, hogyan helyezhet üzembe egy szabályzatdefiníciót és szabályzat-hozzárendelést egy Azure Resource Manager-sablon használatával több ügyfélbérlő delegált előfizetései között. Ez a szabályzatdefiníció megköveteli, hogy az összes tárfiók HTTPS-forgalmat használjon, megakadályozva az olyan új tárfiókok létrehozását, amelyek nem felelnek meg, és a beállítás nem megfelelőként jelöli meg a meglévő tárfiókokat.

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
}

Megjegyzés

Bár a szabályzatokat több bérlőn is üzembe helyezheti, ezekben a bérlőkben jelenleg nem tekintheti meg a nem megfelelő erőforrások megfelelőségi adatait.

A szabályzat üzembe helyezésének ellenőrzése

Az Azure Resource Manager-sablon üzembe helyezése után ellenőrizheti, hogy a szabályzatdefiníció sikeresen alkalmazva lett-e, ha megpróbál létrehozni egy tárfiókot az EnableHttpsTrafficOnly beállítással, amely false (hamis) értékre van állítva az egyik delegált előfizetésben. A szabályzat-hozzárendelés miatt nem lehet létrehozni ezt a tárfiókot.

New-AzStorageAccount -ResourceGroupName (New-AzResourceGroup -name policy-test -Location eastus -Force).ResourceGroupName `
                     -Name (get-random) `
                     -Location eastus `
                     -EnableHttpsTrafficOnly $false `
                     -SkuName Standard_LRS `
                     -Verbose                  

Az erőforrások eltávolítása

Ha végzett, távolítsa el az üzembe helyezés által létrehozott szabályzatdefiníciót és hozzárendelést.

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

Következő lépések