Megosztás a következőn keresztül:


Azure Policy üzembe helyezése delegált előfizetésekhez nagy méretekben

Előfordulhat, hogy szolgáltatóként több ügyfélbérlőt is előkészített az Azure Lighthouse-hoz. Az Azure Lighthouse lehetővé teszi a szolgáltatók számára, hogy nagy léptékben, egyszerre több bérlőben hajtsanak végre műveleteket, így a felügyeleti feladatok hatékonyabbá válnak.

Ez a témakör azt ismerteti, hogyan helyezhet üzembe szabályzatdefiníciót és szabályzat-hozzárendelést több bérlőn PowerShell-parancsokkal az Azure Policy használatával. 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. Ugyanazt az általános folyamatot használhatja minden olyan szabályzathoz, amelyet telepíteni szeretne.

Tipp.

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

Ügyfélbérlemények lekérdezése az Azure Resource Graph használatával

Az Azure Resource Graph használatával lekérdezheti a felügyelt ügyfélbérlemények ö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él-bérlőn

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él-bérlő delegált előfizetésében. Ez a szabályzatdefiníció megköveteli, hogy az összes tárfiók HTTPS-forgalmat használjon. Megakadályozza a nem megfelelő új tárfiókok létrehozását. A beállítás nélküli meglévő tárfiókok nem megfelelőként vannak megjelölve.

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
}

Feljegyzés

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

A házirend üzembe helyezésének ellenőrzése

Az Azure Resource Manager-sablon üzembe helyezése után győződjön meg arról, hogy a szabályzatdefiníció sikeresen alkalmazva lett, és megkísérelt létrehozni egy tárfiókot az EnableHttpsTrafficOnly beállítással hamisra 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, eltávolíthatja 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