Udostępnij za pośrednictwem


Wdrażanie usługi Azure Policy w subskrypcjach delegowanych na dużą skalę

Jako dostawca usług możesz dołączyć wiele dzierżaw klientów do usługi Azure Lighthouse. Usługa Azure Lighthouse umożliwia dostawcom usług wykonywanie operacji w skali wielu dzierżaw jednocześnie, co usprawnia wykonywanie zadań związanych z zarządzaniem.

W tym temacie wyjaśniono, jak za pomocą usługi Azure Policy wdrożyć definicję zasad i przypisanie zasad w wielu dzierżawach przy użyciu poleceń programu PowerShell. W tym przykładzie definicja zasad gwarantuje, że konta magazynu są zabezpieczone, zezwalając tylko na ruch HTTPS. Możesz użyć tego samego ogólnego procesu dla wszystkich zasad, które chcesz wdrożyć.

Napiwek

Chociaż w tym temacie odwołujemy się do dostawców usług i klientów, przedsiębiorstwa zarządzające wieloma dzierżawami mogą używać tych samych procesów.

Używanie usługi Azure Resource Graph do wykonywania zapytań w dzierżawach klientów

Usługa Azure Resource Graph umożliwia wykonywanie zapytań dotyczących wszystkich subskrypcji w zarządzanych dzierżawach klientów. W tym przykładzie zidentyfikujemy wszystkie konta magazynu w tych subskrypcjach, które obecnie nie wymagają ruchu 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

Wdrażanie zasad w wielu dzierżawach klientów

W poniższym przykładzie pokazano, jak za pomocą szablonu usługi Azure Resource Manager wdrożyć definicję zasad i przypisanie zasad w ramach delegowanych subskrypcji w wielu dzierżawach klientów. Ta definicja zasad wymaga, aby wszystkie konta magazynu używały ruchu HTTPS. Zapobiega tworzeniu nowych kont magazynu, które nie są zgodne. Wszystkie istniejące konta magazynu bez ustawienia są oznaczone jako niezgodne.

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
}

Uwaga

Zasady można wdrażać w wielu dzierżawach, ale obecnie nie można wyświetlić szczegółów zgodności dla niezgodnych zasobów w tych dzierżawach.

Weryfikowanie wdrożenia zasad

Po wdrożeniu szablonu usługi Azure Resource Manager upewnij się, że definicja zasad została pomyślnie zastosowana, próbując utworzyć konto magazynu z ustawieniem EnableHttpsTrafficOnly na wartość false w jednej z delegowanych subskrypcji. Ze względu na przypisanie zasad nie można utworzyć tego konta magazynu.

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

Czyszczenie zasobów

Po zakończeniu możesz usunąć definicję zasad i przypisanie utworzone przez wdrożenie.

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

Następne kroki

  • Dowiedz się więcej o usłudze Azure Policy.
  • Dowiedz się więcej o środowiskach zarządzania między dzierżawami.
  • Dowiedz się, jak wdrożyć zasady, które można skorygować w ramach subskrypcji delegowanej.