إنشاء نُهُج برمجياً

ترشدك هذه المقالة خلال إنشاء النهج وإدارتها برمجيًا. تفرض تعريفات نهج Azure قواعد وتأثيرات مختلفة على مواردك. يضمن الإنفاذ أن تظل الموارد متوافقة مع معايير شركتك واتفاقيات مستوى الخدمة.

للحصول على معلومات حول التوافق، راجع الحصول على بيانات التوافق.

المتطلبات الأساسية

قبل البدء، تأكد من استيفاء المتطلبات الأساسية التالية:

  1. إذا لم تُثبت ARMClient ثبته الآن. إنها أداة ترسل طلبات HTTP إلى واجهات برمجة تطبيقات REST القائمة علىAzure Resource Manager.

  2. تحديث الوحدة النمطية Azure PowerShell إلى أحدث إصدار. راجع تثبيت الوحدة النمطية Azure PowerShell للحصول على معلومات مفصلة. لمزيد من المعلومات حول أحدث إصدار، راجع Azure PowerShell.

  3. سجل موفر موارد Azure Policy Insights باستخدام Azure PowerShell للتحقق من أن اشتراكك يعمل مع موفر الموارد. لتسجيل موفر مورد، يجب أن يكون لديك إذن لتشغيل عملية إجراء التسجيل لموفر المورد. يتم تضمين هذه العملية في أدوار المساهم والمالك. تشغيل الأمر التالي لتسجيل موفر الموارد:

    Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'
    

    لمزيد من المعلومات حول تسجيل وعرض موفري الموارد، راجع موفري الموارد وأنواعها.

  4. قم بتثبيت Azure CLI إذا لم تكن قمت بذلك بالفعل. يمكنك الحصول على أحدث إصدار في تثبيت Azure CLI على Windows.

إنشاء تعريف نهج وتعيينه

الخطوة الأولى نحو رؤية أفضل لمواردك هي إنشاء النهج وتعيينها على مواردك. الخطوة التالية هي معرفة كيفية إنشاء نهج وتعيينه برمجيًا. يدقق نهج المثال حسابات التخزين المفتوحة لجميع الشبكات العامة باستخدام طلبات PowerShell وAzure CLI وHTTP.

إنشاء تعريف نهج وتعيينه باستخدام PowerShell

  1. استخدم مقتطف JSON التالي لإنشاء ملف JSON بالاسم AuditStorageAccounts.js.

    {
        "if": {
            "allOf": [{
                    "field": "type",
                    "equals": "Microsoft.Storage/storageAccounts"
                },
                {
                    "field": "Microsoft.Storage/storageAccounts/networkAcls.defaultAction",
                    "equals": "Allow"
                }
            ]
        },
        "then": {
            "effect": "audit"
        }
    }
    

    لمزيد من المعلومات حول تأليف تعريف نهج، راجع بنية تعريف نهج Azure.

  2. تشغيل الأمر التالي لإنشاء تعريف نهج باستخدام AuditStorageAccounts.js في الملف.

    New-AzPolicyDefinition -Name 'AuditStorageAccounts' -DisplayName 'Audit Storage Accounts Open to Public Networks' -Policy 'AuditStorageAccounts.json'
    

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

    عند الاستدعاء بدون معلمات الموقع، يتم تعيين New-AzPolicyDefinition افتراضيًا على حفظ تعريف النهج في الاشتراك المحدد لسياق جلسات العمل. لحفظ التعريف إلى موقع مختلف، استخدم المعلمات التالية:

    • SubscriptionId - حفظ إلى اشتراك مختلف. يتطلب قيمة GUID.
    • ManagementGroupName - حفظ إلى مجموعة إدارة. يتطلب قيمة سلسلة.
  3. بعد إنشاء تعريف النهج الخاص بك، يمكنك إنشاء تعيين نهج عن طريق تشغيل الأوامر التالية:

    $rg = Get-AzResourceGroup -Name 'ContosoRG'
    $Policy = Get-AzPolicyDefinition -Name 'AuditStorageAccounts'
    New-AzPolicyAssignment -Name 'AuditStorageAccounts' -PolicyDefinition $Policy -Scope $rg.ResourceId
    

    استبدل ContosoRG باسم مجموعة الموارد المقصودة.

    تعمل معلمة النطاق في New-AzPolicyAssignment مع مجموعة إدارة، أو اشتراك، أو مجموعة موارد، أو مورد واحد. تستخدم المعلمة مسار مورد كامل، والذي تقوم الخاصية ResourceId في Get-AzResourceGroup بإرجاعه. يكون نمط النطاق لكل حاوية على النحو التالي. استبدل {rName}، و{rgName}، و{subId}، و{mgName} باسم المورد، واسم مجموعة الموارد، ومعرف الاشتراك، واسم مجموعة الإدارة، على التوالي. سيتم استبدال {rType} بـ نوع المورد للمورد، مثل Microsoft.Compute/virtualMachines لجهاز ظاهري.

    • المورّد - /subscriptions/{subID}/resourceGroups/{rgName}/providers/{rType}/{rName}
    • مجموعة الموارد - /subscriptions/{subId}/resourceGroups/{rgName}
    • الاشتراك - /subscriptions/{subId}
    • مجموعة الإدارة - /providers/Microsoft.Management/managementGroups/{mgName}

لمزيد من المعلومات حول إدارة نهج الموارد باستخدام الوحدة النمطية PowerShell إدارة الموارد راجع Az.Resources.

إنشاء تعريف نهج وتعيينه باستخدام ARMClient

استخدم الإجراء التالي لإنشاء تعريف نهج.

  1. نسخ مقتطف JSON التالي لإنشاء ملف JSON. ستتصل بالملف في الخطوة التالية.

    "properties": {
        "displayName": "Audit Storage Accounts Open to Public Networks",
        "policyType": "Custom",
        "mode": "Indexed",
        "description": "This policy ensures that storage accounts with exposure to Public Networks are audited.",
        "parameters": {},
        "policyRule": {
            "if": {
                "allOf": [{
                        "field": "type",
                        "equals": "Microsoft.Storage/storageAccounts"
                    },
                    {
                        "field": "Microsoft.Storage/storageAccounts/networkAcls.defaultAction",
                        "equals": "Allow"
                    }
                ]
            },
            "then": {
                "effect": "audit"
            }
        }
    }
    
  2. إنشاء تعريف النهج باستخدام أحد الاستدعاءات التالية:

    # For defining a policy in a subscription
    armclient PUT "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policyDefinitions/AuditStorageAccounts?api-version=2021-09-01" @<path to policy definition JSON file>
    
    # For defining a policy in a management group
    armclient PUT "/providers/Microsoft.Management/managementgroups/{managementGroupId}/providers/Microsoft.Authorization/policyDefinitions/AuditStorageAccounts?api-version=2021-09-01" @<path to policy definition JSON file>
    

    استبدل {subscriptionId} السابق بمعرف اشتراكك أو {managementGroupId} بمعرف مجموعة الإدارة الخاصة بك.

    لمزيد من المعلومات حول بنية الاستعلام، راجع تعريفات نهج Azure - إنشاء أو تحديثوتعريفات النهج - إنشاء أو تحديث في مجموعة الإدارة.

استخدم الإجراء التالي لإنشاء تعيين نهج وتعيين تعريف النهج على مستوى مجموعة الموارد.

  1. انسخ مقتطف JSON البرمجية التالية لإنشاء ملف تعيين نهج JSON. استبدل معلومات المثال في <> الرموز بقيمك الخاصة.

    {
        "properties": {
            "description": "This policy assignment makes sure that storage accounts with exposure to Public Networks are audited.",
            "displayName": "Audit Storage Accounts Open to Public Networks Assignment",
            "parameters": {},
            "policyDefinitionId": "/subscriptions/<subscriptionId>/providers/Microsoft.Authorization/policyDefinitions/Audit Storage Accounts Open to Public Networks",
            "scope": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>"
        }
    }
    
  2. إنشاء تعيين النهج باستخدام المكالمة التالية:

    armclient PUT "/subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.Authorization/policyAssignments/Audit Storage Accounts Open to Public Networks?api-version=2021-09-01" @<path to Assignment JSON file>
    

    استبدل معلومات المثال في <> الرموز بقيمك الخاصة.

    لمزيد من المعلومات حول إجراء استدعاءات HTTP إلى واجهة برمجة تطبيقات REST، راجع موارد Azure REST API.

إنشاء تعريف نهج وتعيينه باستخدام Azure CLI

لإنشاء تعريف نهج، استخدم الإجراء التالي:

  1. انسخ مقتطف JSON البرمجية التالية لإنشاء ملف تعيين نهج JSON.

    {
        "if": {
            "allOf": [{
                    "field": "type",
                    "equals": "Microsoft.Storage/storageAccounts"
                },
                {
                    "field": "Microsoft.Storage/storageAccounts/networkAcls.defaultAction",
                    "equals": "Allow"
                }
            ]
        },
        "then": {
            "effect": "audit"
        }
    }
    

    لمزيد من المعلومات حول تأليف تعريف نهج، راجع بنية تعريف نهج Azure.

  2. قم بتشغيل الأمر التالي لإنشاء تعريف نهج:

    az policy definition create --name 'audit-storage-accounts-open-to-public-networks' --display-name 'Audit Storage Accounts Open to Public Networks' --description 'This policy ensures that storage accounts with exposures to public networks are audited.' --rules '<path to json file>' --mode All
    

    الأمر بإنشاء تعريف نهج يسمى حسابات تخزين التدقيق مفتوحة إلى شبكات الاتصال العامة. لمزيد من المعلومات حول المعلمات الأخرى التي يمكنك استخدامها، راجع az policy definition create.

    عند الاستدعاء بدون معلمات الموقع، يتم تعيين az policy definition creation افتراضيًا على حفظ تعريف النهج في الاشتراك المحدد لسياق جلسات العمل. لحفظ التعريف إلى موقع مختلف، استخدم المعلمات التالية:

    • subscription - حفظ إلى اشتراك مختلف. يتطلب قيمة GUID لمعرّف الاشتراك أو قيمة سلسلة لاسم الاشتراك.
    • management-group - حفظ إلى مجموعة إدارة. يتطلب قيمة سلسلة.
  3. استخدم الأمر التالي لإنشاء مهمة سياسة. استبدل معلومات المثال في <> الرموز بقيمك الخاصة.

    az policy assignment create --name '<name>' --scope '<scope>' --policy '<policy definition ID>'
    

    تعمل معلمة النطاق في az policy assignment create مع مجموعة إدارة، أو اشتراك، أو مجموعة موارد، أو مورد واحد. تستخدم المعلمة مسار مورد كامل. يكون نمط النطاق لكل حاوية على النحو التالي. استبدل {rName}، و{rgName}، و{subId}، و{mgName} باسم المورد، واسم مجموعة الموارد، ومعرف الاشتراك، واسم مجموعة الإدارة، على التوالي. سيتم استبدال {rType} بـ نوع المورد للمورد، مثل Microsoft.Compute/virtualMachines لجهاز ظاهري.

    • المورّد - /subscriptions/{subID}/resourceGroups/{rgName}/providers/{rType}/{rName}
    • مجموعة الموارد - /subscriptions/{subID}/resourceGroups/{rgName}
    • الاشتراك - /subscriptions/{subID}
    • مجموعة الإدارة - /providers/Microsoft.Management/managementGroups/{mgName}

يمكنك الحصول على معرف تعريف نهج Azure باستخدام PowerShell باستخدام الأمر التالي:

az policy definition show --name 'Audit Storage Accounts with Open Public Networks'

يجب أن يشبه معرف تعريف النهج لتعريف النهج الذي قمت بإنشائه المثال التالي:

"/subscription/<subscriptionId>/providers/Microsoft.Authorization/policyDefinitions/Audit Storage Accounts Open to Public Networks"

لمزيد من المعلومات حول كيفية إدارة نهج الموارد باستخدام Azure CLI، راجع نهج موارد Azure CLI.

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

راجع المقالات التالية للحصول على مزيد من المعلومات حول الأوامر والاستعلامات في هذه المقالة.