Aracılığıyla paylaş


Karma Runbook Çalışanı'nda iş yürütmeyi zorlamak için Azure İlkesi kullanma

Önemli

Azure Otomasyonu Aracı Tabanlı Kullanıcı Karma Runbook Çalışanı (Windows ve Linux) 31 Ağustos 2024'te kullanımdan kaldırılmıştır ve artık desteklenmemaktadır. Mevcut Aracı Tabanlı Kullanıcı Karma Runbook Çalışanlarından Uzantı Tabanlı Karma Çalışanlara geçiş yönergelerini izleyin.

Karma Runbook Çalışanı'nda bir runbook'u başlatmak, Azure portalından, Azure PowerShell veya REST API ile başlatılırken Karma Runbook Çalışanı grubunun adını belirtmenize olanak tanıyan Bir Çalıştırma seçeneği kullanır. Bir grup belirtildiğinde, bu gruptaki çalışanlardan biri runbook'u alır ve çalıştırır. Runbook'unuz bu seçeneği belirtmezse Azure Otomasyonu Runbook'u Azure korumalı alanında çalıştırır.

Kuruluşunuzda Otomasyon İş Operatörü veya üzeri bir üyesi olan herkes runbook işleri oluşturabilir. Otomasyon hesabınızda bir Karma Runbook Çalışanı grubunu hedefleyen runbook yürütmesini yönetmek için Azure İlkesi kullanabilirsiniz. Bu, kuruluş standartlarını zorunlu kılmaya ve otomasyon işlerinizin belirlenenler tarafından denetlenmesini ve yönetilmesini sağlamaya yardımcı olur ve azure korumalı alanında yalnızca Karma Runbook çalışanlarında runbook yürütemez.

Aşağıdaki Otomasyon REST API işlemlerini kullanarak bu etkinlikleri denetlemenize yardımcı olmak için bu makalede özel bir Azure İlkesi tanımı bulunur. Özellikle:

Bu ilke özelliğine runOn dayanır. İlke, mevcut bir Karma Runbook Çalışanı grubunun adını içermesi gereken özelliğin değerini doğrular. Değer null ise iş, iş zamanlaması veya web kancası oluşturma isteği Azure korumalı alanı için tasarlanmıştır ve istek reddedilir.

Gerekli izinler

Kaynakları Azure İlkesi izni için abonelik düzeyinde Sahip rolünün üyesi olmanız gerekir.

İlke tanımını oluşturma ve atama

Burada ilke kuralını oluşturup bir yönetim grubuna veya aboneliğe atayacağız ve isteğe bağlı olarak abonelikte bir kaynak grubu belirteceğiz. İlke dili hakkında henüz bilginiz yoksa, ilke tanımının nasıl yapılandırılacağına ilişkin ilke tanımı yapısına başvurun.

  1. AuditAutomationHRWJobExecution.json adlı bir JSON dosyası oluşturmak için aşağıdaki JSON parçacığını kullanın.

     {
       "properties": {
         "displayName": "Enforce job execution on Automation Hybrid Runbook Worker",
         "description": "Enforce job execution on Hybrid Runbook Workers in your Automation account.",
         "mode": "all",
         "parameters": {
           "effectType": {
             "type": "string",
             "defaultValue": "Deny",
             "allowedValues": [
                "Deny",
                "Disabled"
             ],
             "metadata": {
               "displayName": "Effect",
               "description": "Enable or disable execution of the policy"
             }
           }
         },
         "policyRule": {
           "if": {
             "anyOf": [
               {
                 "allOf": [
                   {
                     "field": "type",
                     "equals": "Microsoft.Automation/automationAccounts/jobs"
                   },
                   {
                     "value": "[length(field('Microsoft.Automation/automationAccounts/jobs/runOn'))]",
                     "less": 1
                   }
                 ]
               },
               {
                 "allOf": [
                   {
                     "field": "type",
                     "equals": "Microsoft.Automation/automationAccounts/webhooks"
                   },
                   {
                     "value": "[length(field('Microsoft.Automation/automationAccounts/webhooks/runOn'))]",
                     "less": 1
                   }
                 ]
               },
               {
                 "allOf": [
                   {
                     "field": "type",
                     "equals": "Microsoft.Automation/automationAccounts/jobSchedules"
                   },
                   {
                     "value": "[length(field('Microsoft.Automation/automationAccounts/jobSchedules/runOn'))]",
                     "less": 1
                   }
                 ]
               }
             ]
           },
           "then": {
             "effect": "[parameters('effectType')]"
           }
         }
       }
     }
    
  2. AuditAutomationHRWJobExecution.json dosyasını kullanarak bir ilke tanımı oluşturmak için aşağıdaki Azure PowerShell veya Azure CLI komutunu çalıştırın.

     az policy definition create --name 'audit-enforce-jobs-on-automation-hybrid-runbook-workers' --display-name 'Audit Enforce Jobs on Automation Hybrid Runbook Workers' --description 'This policy enforces job execution on Automation account user Hybrid Runbook Workers.' --rules 'AuditAutomationHRWJobExecution.json' --mode All
    

    Komut, Otomasyon Karma Runbook Çalışanlarında İşleri Zorla Denetle adlı bir ilke tanımı oluşturur. Kullanabileceğiniz diğer parametreler hakkında daha fazla bilgi için bkz . az policy definition create.

    Konum parametreleri olmadan çağrıldığında, az policy definition create varsayılan olarak ilke tanımını oturumlar bağlamının seçili aboneliğine kaydeder. Tanımı farklı bir konuma kaydetmek için aşağıdaki parametreleri kullanın:

    • subscription - Farklı bir aboneliğe kaydedin. Abonelik kimliği için BIR GUID değeri veya abonelik adı için bir dize değeri gerektirir.
    • management-group - Bir yönetim grubuna kaydedin. Bir dize değeri gerektirir.

  1. İlke tanımınızı oluşturduktan sonra aşağıdaki komutları çalıştırarak bir ilke ataması oluşturabilirsiniz:

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

    üzerindeki az policy assignment create kapsam parametresi yönetim grubu, abonelik, kaynak grubu veya tek bir kaynakla çalışır. parametresi tam bir kaynak yolu kullanır. Her kapsayıcı için kapsam deseni aşağıdaki gibidir. , {rgName}, {subId}ve {mgName} sözcüklerini sırasıyla kaynak adınız, kaynak grubu adınız, abonelik kimliğiniz ve yönetim grubu adınız ile değiştirin{rName}. {rType}vm gibi Microsoft.Compute/virtualMachines bir kaynağın kaynak türüyle değiştirilir.

    • Kaynak- /subscriptions/{subID}/resourceGroups/{rgName}/providers/{rType}/{rName}
    • Kaynak grubu - /subscriptions/{subID}/resourceGroups/{rgName}
    • Abonelik- /subscriptions/{subID}
    • Yönetim grubu - /providers/Microsoft.Management/managementGroups/{mgName}

    PowerShell'i aşağıdaki komutla kullanarak Azure İlkesi Tanım Kimliğini alabilirsiniz:

    az policy definition show --name 'Audit Enforce Jobs on Automation Hybrid Runbook Workers'
    

    Oluşturduğunuz ilke tanımının ilke tanımı kimliği aşağıdaki örneğe benzer olmalıdır:

    "/subscription/<subscriptionId>/providers/Microsoft.Authorization/policyDefinitions/Audit Enforce Jobs on Automation Hybrid Runbook Workers"
    

  1. Azure Portal’ında oturum açın.

  2. Azure portalında Tüm hizmetler'i seçip İlke'yi arayarak ve seçerek Azure İlkesi hizmetini başlatın.

  3. Sayfanın sol tarafında Uyumluluk'a tıklayın. Ardından oluşturduğunuz ilke atamasını bulun.

    Azure İlkesi panosunun ekran görüntüsü.

Otomasyon REST işlemlerinden biri istek gövdesindeki bir Karma Runbook Çalışanına başvurulmadan yürütülürse, Azure korumalı alanında yürütülmeye çalışılan işlemi gösteren aşağıdaki örneğe benzer bir hatayla 403 yanıt kodu döndürülür:

{
  "error": {
    "code": "RequestDisallowedByPolicy",
    "target": "Start_VMS",
    "message": "Resource 'Start_VMS' was disallowed by policy. Policy identifiers: '[{\"policyAssignment\":{\"name\":\"Enforce Jobs on Automation Hybrid Runbook Workers\",\"id\":\"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MAIC-RG/providers/Microsoft.Authorization/policyAssignments/fd5e2cb3842d4eefbc857917\"},\"policyDefinition\":{\"name\":\"Enforce Jobs on Automation Hybrid Runbook Workers\",\"id\":\"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Authorization/policyDefinitions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f\"}}]'.",
    "additionalInfo": [
      {
        "type": "PolicyViolation",
        "info": {
          "policyDefinitionDisplayName": "Enforce Jobs on Automation Hybrid Runbook Workers",
          "evaluationDetails": {
            "evaluatedExpressions": [
              {
                "result": "True",
                "expressionKind": "Field",
                "expression": "type",
                "path": "type",
                "expressionValue": "Microsoft.Automation/automationAccounts/jobs",
                "targetValue": "Microsoft.Automation/automationAccounts/jobs",
                "operator": "Equals"
              },
              {
                "result": "True",
                "expressionKind": "Value",
                "expression": "[length(field('Microsoft.Automation/automationAccounts/jobs/runOn'))]",
                "expressionValue": 0,
                "targetValue": 1,
                "operator": "Less"
              }
            ]
          },
          "policyDefinitionId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Authorization/policyDefinitions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
          "policyDefinitionName": "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
          "policyDefinitionEffect": "Deny",
          "policyAssignmentId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MAIC-RG/providers/Microsoft.Authorization/policyAssignments/fd5e2cb3842d4eefbc857917",
          "policyAssignmentName": "fd5e2cb3842d4eefbc857917",
          "policyAssignmentDisplayName": "Enforce Jobs on Automation Hybrid Runbook Workers",
          "policyAssignmentScope": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MAIC-RG",
          "policyAssignmentParameters": {}
        }
      }
    ]
  }
}

Denenen işlem, aşağıdaki örneğe benzer şekilde Otomasyon hesabının Etkinlik Günlüğü'nde de günlüğe kaydedilir.

Başarısız iş yürütme için Etkinlik günlüğü örneği.

Sonraki adımlar

Runbook'larla çalışmak için bkz. Azure Otomasyonu runbook'ları yönetme.