Управление и обеспечение соответствия для приложений виртуальных машин #REF! с помощью Политика Azure

Приложения виртуальных машин #REF! позволяют упаковывать, версионировать и доставлять программное обеспечение в Виртуальные машины Azure (виртуальные машины) и Масштабируемые наборы виртуальных машин из Галереи вычислений #REF!.

Использование Политика Azure с приложениями виртуальных машин позволяет клиентам и командам администраторов:

  • Мониторинг наличия необходимых приложений виртуальных машин в виртуальных машинах и масштабируемых наборах виртуальных машин.
  • Установка требуемых приложений во всех ВМ и масштабируемых наборов ВМ.
  • Обеспечение согласованной конфигурации и применения лучших рекомендаций для всех виртуальных машин и масштабируемых наборов виртуальных машин с целью повышения надежности и безопасности.

В этом руководстве показано, как:

  • Управление необходимым приложением виртуальной машины для мониторинга соответствия требованиям.
  • Обеспечение необходимого приложения ВМ для поддержания согласованности и безопасности.

Необходимые условия

  • Галерея #REF! Compute с опубликованными приложениями для виртуальных машин и версиями для управления. См. статью "Создание приложений виртуальных машин и управление ими".

    • Убедитесь, что версия реплицируется во всех регионах , где требуется присутствие приложения.
    • Убедитесь, что коллекция предоставляется всем подпискам , которым требуется доступ к приложению виртуальной машины.
  • Разрешения:

    • Роль "Вкладчик в Политику" для создания и назначения политик. См. структуру определения политики и назначения.

Настройка монитора соответствия требованиям для управления необходимыми приложениями виртуальных машин

Политика Azure с эффектом audit можно использовать для мониторинга наличия определенных приложений виртуальных машин на #REF! виртуальных машинах и наборах виртуальных машин. Административные команды могут использовать эту политику для

  • Настройте мониторы соответствия для приложений виртуальных машин (просмотр соответствующих и несоответствующих виртуальных машин и наборов масштабирования виртуальных машин)
  • Измерение хода развертывания программного обеспечения, упаковаемого в качестве приложения виртуальной машины.

1. Создание определения настраиваемой политики

Создайте настраиваемую политику с помощью следующего определения. Эта политика проверяет наличие определенных приложений виртуальных машин в Виртуальные машины и Масштабируемые наборы виртуальных машин и сообщает о состоянии соответствия.

  • Политика

Эта политика контролирует соответствие всех виртуальных машин и масштабируемых наборов виртуальных машин в Linux и Windows. Приложения Linux на виртуальных машинах Windows и приложениях windows на виртуальных машинах Linux считаются соответствующими ресурсами.

{
    "mode": "Indexed",
    "policyRule": {
        "if": {
            "anyOf": [
                {
                    "allOf": [
                        { "field": "type", "equals": "Microsoft.Compute/virtualMachines" },
                        {"field": "Microsoft.Compute/virtualMachines/storageProfile.osDisk.osType", "equals": "[parameters('osType')]" },
                        {
                            "count": {
                                "field": "Microsoft.Compute/virtualMachines/applicationProfile.galleryApplications[*]",
                                "where": {
                                    "allOf": [
                                        {
                                            "field": "Microsoft.Compute/virtualMachines/applicationProfile.galleryApplications[*].packageReferenceId",
                                            "contains": "[concat('/galleries/', parameters('galleryName'), '/applications/', parameters('applicationName'), '/')]"
                                        }
                                    ]
                                }
                            },
                            "equals": 0
                        }
                    ]
                },
                {
                    "allOf": [
                        { "field": "type", "equals": "Microsoft.Compute/virtualMachineScaleSets" },
                        {"field": "Microsoft.Compute/virtualMachineScaleSets/virtualMachineProfile.storageProfile.osDisk.osType", "equals": "[parameters('osType')]" },
                        {
                            "count": {
                                "field": "Microsoft.Compute/virtualMachineScaleSets/virtualMachineProfile.applicationProfile.galleryApplications[*]",
                                "where": {
                                    "allOf": [
                                        {
                                            "field": "Microsoft.Compute/virtualMachineScaleSets/virtualMachineProfile.applicationProfile.galleryApplications[*].packageReferenceId",
                                            "contains": "[concat('/galleries/', parameters('galleryName'), '/applications/', parameters('applicationName'), '/')]"
                                        }
                                    ]
                                }
                            },
                            "equals": 0
                        }
                    ]
                }
            ]
        },
        "then": { "effect": "audit" }
    },
    "parameters": {
        "galleryName": {
            "type": "String",
            "metadata": { "description": "Name of the Azure Compute Gallery containing the VM Application." }
        },
        "applicationName": {
            "type": "String",
            "metadata": { "description": "Name of the VM Application to audit for presence." }
        },
        "osType": {
            "type": "String",
            "allowedValues": [ "Windows", "Linux" ],
            "metadata": { "description": "OS type of the VM Application (Windows or Linux)." }
        }
    }
}

2. Назначьте политику и проверьте соответствие

Назначьте только что созданную политику , чтобы начать мониторинг приложения виртуальной машины и создать оценку соответствия требованиям. Все виртуальные машины и наборы масштабирования виртуальных машин в назначенной области контролируются на соответствие требованиям.

Создание отдельных назначений для каждого приложения виртуальной машины для детализированного и точного мониторинга.

После назначения политики все существующие ресурсы оцениваются и отображаются на мониторе соответствия требованиям. Несоответствующие ресурсы отсутствуют в приложении виртуальной машины, определенном в политике. Ресурсы без соответствия также считаются несоответствующими. Только что созданные или обновленные ресурсы могут занять несколько минут, чтобы отображаться в циклах оценки.

Скриншот, на котором показано представление о соответствии Политика Azure, перечисляющее виртуальные машины и наборы масштабирования виртуальных машин, проверенные на наличие необходимого приложения для ВМ.

Общие корректировки

  • Аудит нескольких обязательных приложений: создание отдельной политики (по одному на приложение) или обновление политики путем добавления других приложений в параметр.

  • Блокировка создания виртуальных машин без необходимых приложений: измените эффект на deny, чтобы предотвратить создание, не соответствующее требованиям.

  • Ограничьте область политики для Виртуальные машины или Масштабируемые наборы виртуальных машин: Удалите неиспользуемую ветвь из anyOf в policyRule.

  • Ограничьте область политики по типу ОС: проверьте в рамках, чтобы фильтровать по Windows / Linux ОС.

    { "field": "Microsoft.Compute/virtualMachines/storageProfile.osDisk.osType", "equals": "[parameters('osType')]" }
    
  • Ограничьте область политики, используя образ ОС: выполните проверку и фильтрацию по образу.

    { "field": "Microsoft.Compute/virtualMachines/storageProfile.imageReference.offer", "equals": "[parameters('imageOffer')]" },
    { "field": "Microsoft.Compute/virtualMachines/storageProfile.imageReference.sku", "equals": "[parameters('imageSku')]" }
    

Внедрение приложений виртуальных машин на виртуальной машине и Масштабируемые наборы виртуальных машин

Политика Azure с эффектом modify внедряет приложения виртуальных машин при создании новой виртуальной машины и наборов масштабируемых виртуальных машин. Задачи исправления можно использовать для изменения существующих ресурсов и внедрения приложения виртуальной машины.

Необходимые условия

  • Управляемое удостоверение для назначения политики с ролью Участника виртуальной машины, поэтому исправление может изменять ресурсы. См. требования к удостоверению исправления.

1. Создание определения настраиваемой политики

Создайте настраиваемую политику с помощью определения политики. Эта политика проверяет наличие приложений виртуальных машин при создании Виртуальные машины или Масштабируемые наборы виртуальных машин и добавляет приложение виртуальной машины, если оно не существует. Чтобы изменить несколько типов ресурсов (виртуальная машина и наборы масштабируемых виртуальных машин), рекомендуется создать разные политики для каждого типа ресурса.

{
    "displayName": "Inject VM Application into single instance VMs",
    "policyType": "Custom",
    "mode": "Indexed",
    "description": "Appends a VM Application reference to applicationProfile for single instance VMs if the application is not already present. Filters by OS type to prevent cross-platform injection.",
    "parameters": {
      "subscriptionId": {
        "type": "String",
        "metadata": {
          "description": "Subscription ID where the Compute Gallery resides."
        }
      },
      "resourceGroup": {
        "type": "String",
        "metadata": {
          "description": "Resource group of the Compute Gallery."
        }
      },
      "galleryName": {
        "type": "String",
        "metadata": {
          "description": "Name of the Compute Gallery."
        }
      },
      "applicationName": {
        "type": "String",
        "metadata": {
          "description": "VM Application name."
        }
      },
      "applicationVersion": {
        "type": "String",
        "defaultValue": "latest",
        "metadata": {
          "description": "VM Application version. Defaults to latest."
        }
      },
      "osType": {
        "type": "String",
        "allowedValues": [
          "Windows",
          "Linux"
        ],
        "metadata": {
          "description": "Target OS type. Ensures the application is only injected onto VMs with a matching OS."
        }
      }
    },
    "policyRule": {
      "if": {
        "allOf": [
          {
            "field": "type",
            "equals": "Microsoft.Compute/virtualMachines"
          },
          {
            "field": "Microsoft.Compute/virtualMachines/storageProfile.osDisk.osType",
            "equals": "[parameters('osType')]"
          },
          {
            "count": {
              "field": "Microsoft.Compute/virtualMachines/applicationProfile.galleryApplications[*]",
              "where": {
                "field": "Microsoft.Compute/virtualMachines/applicationProfile.galleryApplications[*].packageReferenceId",
                "contains": "[concat('/galleries/', parameters('galleryName'), '/applications/', parameters('applicationName'), '/')]"
              }
            },
            "equals": 0
          }
        ]
      },
      "then": {
        "effect": "modify",
        "details": {
          "roleDefinitionIds": [
            "/providers/Microsoft.Authorization/roleDefinitions/9980e02c-c2be-4d73-94e8-173b1dc7cf3c"
          ],
          "operations": [
            {
              "operation": "add",
              "field": "Microsoft.Compute/virtualMachines/applicationProfile.galleryApplications",
              "value": {
                "packageReferenceId": "[concat('/subscriptions/', parameters('subscriptionId'), '/resourceGroups/', parameters('resourceGroup'), '/providers/Microsoft.Compute/galleries/', parameters('galleryName'), '/applications/', parameters('applicationName'), '/versions/', parameters('applicationVersion'))]",
                "order": 1,
                "treatFailureAsDeploymentFailure": true
              }
            }
          ]
        }
      }
    }
}

2. Назначьте политику

Назначьте только что созданную политику, чтобы начать оценку соответствия. Все виртуальные машины и наборы масштабирования виртуальных машин в назначенной области контролируются на соответствие требованиям. После назначения политики все существующие ресурсы оцениваются и отображаются на мониторе соответствия требованиям.

Создание новых Виртуальные машины и Масштабируемые наборы виртуальных машин ресурсов активирует эту политику и изменяет applicationProfile ресурса для внедрения приложения.

3. Создание задачи исправления и изменение существующих ресурсов

Чтобы изменить существующие ресурсы, создайте новые задачи исправления.

Замечание

Постепенно устраняйте неконформные ресурсы для повышения доступности и резистентности к сбоям. Создайте несколько задач исправления, каждая область которых ограничена одним или несколькими регионами.

Скриншот интерфейса портал Azure, демонстрирующий создание новой задачи исправления.

Общие корректировки

В следующих примерах показаны дополнительные условия, которые можно добавить в блок, чтобы сузить область политики.

  • Ограничение области политики с помощью образа ОС: фильтрация на основе определенного предложения образа и номера SKU:

    { "field": "Microsoft.Compute/virtualMachines/storageProfile.imageReference.offer", "equals": "[parameters('imageOffer')]" },
    { "field": "Microsoft.Compute/virtualMachines/storageProfile.imageReference.sku", "equals": "[parameters('imageSku')]" }
    
  • Ограничить сферу действия политики по регионам: указать конкретные регионы #REF!:

    { "field": "location", "in": "[parameters('allowedLocations')]" }
    
  • Ограничить область политики по группе ресурсов или подписке. Чтобы уменьшить область для исправления, назначьте политику определенной группе ресурсов или подписке. Используйте область назначения при назначении политики, а не при изменении определения политики. Для более детального управления используйте исключения , чтобы исключить определенные группы ресурсов из назначения.

Дальнейшие действия