التمرين - نشر الموارد إلى مجموعة إدارة

مكتمل

حقق مشروع Teddybear النجاح، والآن أصبح قسم البحث والتطوير السري في شركة الألعاب الخاص بك على استعداد للبحث عن المزيد من الألعاب الجديدة. بدأ الفريق يطلب منك اشتراكات جديدة على أساس شبه يومي، ويحتاج إلى تطبيق نُهجه عبر كل منها.

بدلاً من تكرار تعريفات النهج والتعيينات في كل اشتراك، فقد قررت وضع جميع اشتراكات الفريق ضمن مجموعة إدارة. يمكنك بعد ذلك تطبيق النهج على مجموعة الإدارة بأكملها بدلاً من كل اشتراك على حدة.

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

أثناء العملية، ستقوم بما يلي:

  • إنشاء مجموعة الإدارة جديدة.
  • إنشاء ملف Bicep ذي نطاق مجموعة إدارة جديد.
  • إضافة موارد Azure Policy للملف.
  • ربط تعيين النهج بتعريف النهج عن طريق إنشاء معرّف المورد يدويًا.
  • نشر القالب والتحقق من النتيجة.

يتطلب هذا التمرين المتطلبات الأساسية التالية:

  • يجب تمكين مجموعات الإدارة على مستأجر Azure.
  • تحتاج إلى أذونات لإنشاء مجموعة إدارة جديدة داخل التدرج الهرمي.
  • تحتاج إلى أذونات لنشر موارد Azure Policy إلى مجموعة الإدارة.

إذا لم تتمكن من تلبية هذه المتطلبات باستخدام حساب Azure الحالي، يمكنك الحصول على نسخة تجريبية مجانية وإنشاء اشتراك ومستأجر جديدين في Azure. بدلا من ذلك، يمكنك تخطي خطوات النشر في هذا التمرين.

إنشاء مجموعة إدارة

في هذا التمرين، ستقوم بإنشاء مجموعة إدارة جديدة بحيث لا تؤثر بطريق الخطأ على أي موارد في جزء آخر من بيئة Azure.

في المحطة الطرفية Visual Studio Code، قم بتشغيل أوامر CLI Azure التالية:

az account management-group create \
  --name SecretRND \
  --display-name "Secret R&D Projects"

بشكل افتراضي، يتم إنشاء مجموعة إدارة جديدة كتابع مباشر لمجموعة إدارة جذر المستأجر. إذا كنت بحاجة إلى وضع مجموعة الإدارة في مكان معين في التسلسل الهرمي لمجموعة الإدارة الموجودة، فاستخدم المعلمة --parent-id ، وحدد اسم مجموعة الإدارة لاستخدامها كأصل.

في المحطة الطرفية Visual Studio Code، قم بتشغيل أوامر Azure PowerShell التالية:

New-AzManagementGroup `
  -GroupId 'SecretRND' `
  -DisplayName 'Secret R&D Projects'

بشكل افتراضي، يتم إنشاء مجموعة إدارة جديدة كتابع لمجموعة إدارة جذر المستأجر. إذا كنت بحاجة إلى وضع مجموعة الإدارة في مكان معين في التسلسل الهرمي لمجموعة الإدارة الموجودة، فاستخدم المعلمة -ParentId ، وحدد اسم مجموعة الإدارة لاستخدامها كأصل.

في التوزيع الحقيقي، يمكنك نقل اشتراكات فريق البحث والتطوير إلى مجموعة الإدارة. لهذا التمرين، ستقوم بنشر النُّهج على الرغم من أن مجموعة الإدارة لا تحتوي على أي اشتراكات. تنطبق نفس عملية النشر سواء كانت مجموعة الإدارة فارغة أو تحتوي على اشتراكات.

إنشاء ملف Bicep لنشره إلى مجموعة إدارة

  1. فتح Visual Studio Code.

  2. احذف ملف main.bicep، ثم أنشئ ملفا فارغا جديدا بنفس الاسم.

  3. احفظ ⁧الملف الفارغ⁩.

  4. أضف المحتوى التالي إلى الملف.

    targetScope = 'managementGroup'
    

    لاحظ أن هذا السطر من التعليمات البرمجية يُعلم Bicep أن القالب الخاص بك سيتم نشره في نطاق مجموعة الإدارة.

إضافة تعريف نهج

كما فعلت سابقًا، إنشاء تعريف نهج في ملف Bicep.

  1. أسفل السطر التي قمت بإضافته للتو، أضف المتغيّر التالي:

    var policyDefinitionName = 'DenyFandGSeriesVMs'
    
  2. في الجزء السفلي من الملف، أضف تعريف Azure Policy التالي:

    resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2020-03-01' = {
      name: policyDefinitionName
      properties: {
        policyType: 'Custom'
        mode: 'All'
        parameters: {}
        policyRule: {
          if: {
            allOf: [
              {
                field: 'type'
                equals: 'Microsoft.Compute/virtualMachines'
              }
              {
                anyOf: [
                  {
                    field: 'Microsoft.Compute/virtualMachines/sku.name'
                    like: 'Standard_F*'
                  }
                  {
                    field: 'Microsoft.Compute/virtualMachines/sku.name'
                    like: 'Standard_G*'
                  }
                ]
              }
            ]
          }
          then: {
            effect: 'deny'
          }
        }
      }
    }
    

    تعريف النهج هو نفس الذي قمت بتطبيقه مسبقًا على اشتراكك. هذه المرة، على الرغم من ذلك، كنت تنشره إلى مجموعة إدارة.

إضافة تعيين النهج

ستقوم الآن بتطبيق النهج على مجموعة الإدارة. وهذا يعني أن النهج سوف ينطبق على جميع الاشتراكات التي هي من توابع مجموعة الإدارة.

  1. policyDefinitionName أسفل تعريف المتغير، أضف المتغير التالي:

    var policyAssignmentName = 'DenyFandGSeriesVMs'
    
  2. في أسفل الملف، ضمن مورد تعريفات النهج، أضف تعيين النهج التالي:

    resource policyAssignment 'Microsoft.Authorization/policyAssignments@2020-03-01' = {
      name: policyAssignmentName
      properties: {
        policyDefinitionId: policyDefinition.id
      }
    }
    
  3. حفظ التغييرات على الملف.

التحقق من القالب

يجب أن يبدو القالب على النحو التالي:

targetScope = 'managementGroup'

var policyDefinitionName = 'DenyFandGSeriesVMs'
var policyAssignmentName = 'DenyFandGSeriesVMs'

resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2020-03-01' = {
  name: policyDefinitionName
  properties: {
    policyType: 'Custom'
    mode: 'All'
    parameters: {}
    policyRule: {
      if: {
        allOf: [
          {
            field: 'type'
            equals: 'Microsoft.Compute/virtualMachines'
          }
          {
            anyOf: [
              {
                field: 'Microsoft.Compute/virtualMachines/sku.name'
                like: 'Standard_F*'
              }
              {
                field: 'Microsoft.Compute/virtualMachines/sku.name'
                like: 'Standard_G*'
              }
            ]
          }
        ]
      }
      then: {
        effect: 'deny'
      }
    }
  }
}

resource policyAssignment 'Microsoft.Authorization/policyAssignments@2020-03-01' = {
  name: policyAssignmentName
  properties: {
    policyDefinitionId: policyDefinition.id
  }
}

إذا لم يحدث ذلك، إما أن تنسخ المثال أو تضبط القالب لمطابقة المثال.

نشر القالب إلى Azure

في المحطة الطرفية Visual Studio Code، قم بنشر القالب باستخدام أوامر Azure CLI التالية:

managementGroupId="SecretRND"
templateFile="main.bicep"
today=$(date +"%d-%b-%Y")
deploymentName="mg-scope-"$today

az deployment mg create \
  --management-group-id $managementGroupId \
  --name $deploymentName \
  --location westus \
  --template-file $templateFile

نشر القالب باستخدام أوامر Azure PowerShell في الوحدة الطرفية.

$managementGroupId = 'SecretRND'
$templateFile = 'main.bicep'
$today = Get-Date -Format 'MM-dd-yyyy'
$deploymentName = "mg-scope-$today"

New-AzManagementGroupDeployment `
  -ManagementGroupId $managementGroupId `
  -Name $deploymentName `
  -Location westus `
  -TemplateFile $templateFile

لاحظ أنه كما هو الحال مع عمليات نشر الاشتراك، فإنك تحدد بوضوح اسمًا وموقعًا لبيانات تعريف النشر. وستستخدم تاريخ اليوم لتقليل فرصة استخدام اسم نشر موجود.

قد يستغرق النشر دقيقة أو دقيقتين للاكتمال، ثم ستشهد عملية نشر ناجحة.

تحقق من التوزيع

كما هو الحال مع عمليات النشر ذات نطاق الاشتراك، يمكنك عرض عمليات النشر ذات نطاق مجموعة الإدارة في مدخل Microsoft Azure.

  1. انتقل إلى مدخل Azure.

  2. في الجزء الأيمن، حدد All services.

  3. في مربع البحث ، أدخل مجموعة الإدارة، ثم حدد مجموعات الإدارة في قائمة النتائج.

    Screenshot of the Azure portal interface showing the service list with 'Management groups' highlighted.

  4. حدد مجموعة إدارة مشاريع البحث والتطوير السرية.

    Screenshot of the Azure portal interface, highlighting 'Secret R&D Projects' in the list of management groups.

  5. في الجزء الأيمن، في مربع البحث ، أدخل Deployments، ثم حدد Deployments ضمن Governance.

    Screenshot of the Azure portal interface, showing the management group details.

  6. حدد التوزيع الذي يبدأ ب mg-scope لمعرفة الموارد التي تم نشرها.

    Screenshot of the Azure portal Deployments pane, highlighting the 'mg-scope-*' deployment in the list of deployments.

  7. في جزء Overview للتوزيع المحدد، حدد Deployment details لتوسيعه. يتم عرض موارد Azure Policy الاثنين.

    Screenshot of the Azure portal 'Overview' pane for the selected deployment.

تفريغ مجموعة الموارد

لقد نجحت في نشر موارد مجموعة الإدارة الخاصة بك. يمكنك إزالة موارد النهج ومجموعة الإدارة التي قمت بإنشائها.

az account management-group delete --name SecretRND
Remove-AzManagementGroup -GroupId SecretRND