Temsilci Azure İlkesi büyük ölçekte aboneliklere dağıtım

Hizmet sağlayıcısı olarak, hizmetine birden çok müşteri kiracısı Azure Lighthouse. Azure Lighthouse, hizmet sağlayıcılarının aynı anda birden fazla kiracıda büyük ölçekte işlem gerçekleştirmelerini ve böylece yönetim görevlerini daha verimli hale getirir.

Bu konu başlığında, PowerShell Azure İlkesi birden çok kiracıya ilke tanımı ve ilke ataması dağıtmak için Azure İlkesi'nin nasıl kullanıldığı açıklanmıştır. Bu örnekte ilke tanımı, depolama hesaplarının yalnızca HTTPS trafiğine izin vererek güvenliğinin sağlanmasına olanak sağlar.

İpucu

Bu konu başlığında hizmet sağlayıcılarına ve müşterilere başvurulsa da, birden çok kiracıyı yöneten kuruluşlar aynı işlemleri kullanabilir.

Müşteri kiracıları arasında Graph için Azure Resource Graph'i kullanma

Azure Resource Graph'i kullanarak, sizin yönetmeniz gereken müşteri kiracılarında tüm abonelikleri sorguabilirsiniz. Bu örnekte, bu aboneliklerde şu anda HTTPS trafiği gerektirmeyen tüm depolama hesaplarını tanımlayacağız.

$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

İlkeyi birden çok müşteri kiracısına dağıtma

Aşağıdaki örnekte, birden çok müşteri kiracısına Azure Resource Manager aboneliklere ilke tanımı ve ilke ataması dağıtmak için bir ilke şablonu kullanma gösterilmiştir. Bu ilke tanımı, tüm depolama hesaplarının HTTPS trafiğini kullanmasını gerektirir, böylece uyumlu olmayan yeni depolama hesaplarının oluşturulması önlenebilir ve ayar uyumlu değil olarak işaretlenebilir.

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
}

Not

İlkeleri birden çok kiracıya dağıtabilirsiniz ancak şu anda bu kiracılarda uyumlu olmayan kaynaklar için uyumluluk ayrıntılarını görüntüleyesiniz.

İlke dağıtımını doğrulama

Azure Resource Manager şablonunu dağıttıktan sonra, temsilci aboneliklerinden biri için EnableHttpsTrafficOnly olarak ayarlanmış bir depolama hesabı oluşturma girişiminde bulunduktan sonra ilke tanımının başarıyla uygulandığını onaylayın. İlke ataması nedeniyle bu depolama hesabını oluşturamazsınız.

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

Kaynakları temizleme

Bitirdikten sonra dağıtım tarafından oluşturulan ilke tanımını ve atamayı kaldırın.

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

Sonraki adımlar