توزيع نهج Azure للاشتراكات المفوضة على نطاق واسع

كمزود خدمة، قد تكون قد قمت بإلحاق العديد من المستأجرين العملاء بـ Azure Lighthouse. يتيح Azure Lighthouse لموفري الخدمات بإجراء العمليات التي تغير الحجم عبر عدة مستأجرين في وقت واحد، مما يزيد فاعلية مهام الإدارة.

هذا الموضوع يشرح كيفية استخدام نهج Azure لتوزيع تعريف نهج وتعيين نهج عبر مستأجرين متعددين باستخدام أوامر PowerShell. في هذا المثال، يضمن تعريف النهج تأمين حسابات التخزين عن طريق السماح بنسبة استخدام الشبكة HTTPS فقط.

تلميح

على الرغم من أننا نشير إلى موفري الخدمات والعملاء في هذا الموضوع، يمكن لـ المؤسسات التي تُدير مستأجرين متعددين استخدام العمليات نفسها.

استخدام Azure Resource Graph للاستعلام عبر المستأجرين العملاء

يمكنك استخدام Azure Resource Graph للاستعلام عبر جميع الاشتراكات في مستأجري العملاء الذين تديرهم. سنحدد في هذا المثال أي حسابات تخزين في هذه الاشتراكات التي لا تتطلب حركة مرور 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

توزيع نهج عبر عدة مستأجرين من العملاء

يوضح المثال أدناه كيفية استخدام قالب Azure Resource Manager لتوزيع تعريف نهج وتعيين نهج عبر الاشتراكات المفوضة في العديد من مستأجري العملاء. يتطلب تعريف النهج هذا جميع حسابات التخزين لاستخدام نسبة استخدام الشبكة HTTPS. يمنع إنشاء أي حسابات تخزين جديدة لا تتوافق. يتم وضع علامة على أي حسابات تخزين موجودة بدون الإعداد على أنها غير متوافقة.

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
}

ملاحظة

بينما يمكنك توزيع النهج عبر عدة مستأجرين، لا يمكنك حاليًا عرض تفاصيل التوافق للموارد غير المتوافقة في هؤلاء المستأجرين.

التحقق من صحة توزيع النهج

بعد نشر قالب Azure Resource Manager، تأكد من تطبيق تعريف النهج بنجاح عن طريق محاولة إنشاء حساب تخزين مع تعيين EnableHttpsTrafficOnly إلى false في أحد الاشتراكات المفوضة. بسبب تعيين النهج، يجب أن تكون غير قادر على إنشاء حساب التخزين هذا.

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

تنظيف الموارد

عند الانتهاء، قم بإزالة تعريف النهج والتعيين الذي تم إنشاؤه بواسطة التوزيع.

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

الخطوات التالية