Структура определения инициативы Политики Azure

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

Для создания определения инициативы политики используется JSON. Это определение инициативы политики содержит:

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

{
    "properties": {
        "displayName": "Billing Tags Policy",
        "policyType": "Custom",
        "description": "Specify cost Center tag and product name tag",
        "metadata": {
            "version": "1.0.0",
            "category": "Tags"
        },
        "parameters": {
            "costCenterValue": {
                "type": "String",
                "metadata": {
                    "description": "required value for Cost Center tag"
                },
                "defaultValue": "DefaultCostCenter"
            },
            "productNameValue": {
                "type": "String",
                "metadata": {
                    "description": "required value for product Name tag"
                },
                "defaultValue": "DefaultProduct"
            }
        },
        "policyDefinitions": [{
                "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62",
                "parameters": {
                    "tagName": {
                        "value": "costCenter"
                    },
                    "tagValue": {
                        "value": "[parameters('costCenterValue')]"
                    }
                }
            },
            {
                "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/2a0e14a6-b0a6-4fab-991a-187a4f81c498",
                "parameters": {
                    "tagName": {
                        "value": "costCenter"
                    },
                    "tagValue": {
                        "value": "[parameters('costCenterValue')]"
                    }
                }
            },
            {
                "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62",
                "parameters": {
                    "tagName": {
                        "value": "productName"
                    },
                    "tagValue": {
                        "value": "[parameters('productNameValue')]"
                    }
                }
            },
            {
                "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/2a0e14a6-b0a6-4fab-991a-187a4f81c498",
                "parameters": {
                    "tagName": {
                        "value": "productName"
                    },
                    "tagValue": {
                        "value": "[parameters('productNameValue')]"
                    }
                }
            }
        ]
    }
}

Встроенные компоненты и шаблоны Политики Azure приведены в примерах Политики Azure.

Метаданные

Необязательное свойство metadata сохраняет сведения об определении инициативы политики. Клиенты могут определять любые свойства и значения, полезные для организации, в свойстве metadata. Однако существуют некоторые общие свойства, используемые Политикой Azure и встроенными модулями.

Общие свойства метаданных

  • version (строковый): отслеживает сведения о версии содержимого определения инициативы политики.

  • category (строка): определяет, в какой категории на портале Azure отображается определение политики.

    Примечание.

    Для инициативы Соответствие нормативным требованиям для category должно быть задано Соответствие нормативным требованиям.

  • preview (логический): флаг true или false, если определение инициативы политики — это предварительная версия.

  • deprecated (логический): флаг true или false, если определение инициативы политики помечено как нерекомендуемый.

Примечание.

Служба Политика Azure использует свойства version, preview и deprecated для передачи уровня изменений встроенному определению политики или инициативе и состоянию. Формат version{Major}.{Minor}.{Patch}. Конкретные состояния, такие как устаревший или предварительная версия, добавляются к свойству version или в другом свойстве как логическое значение. Дополнительные сведения об управлении версиями встроенных компонентов Политики Azure см. в разделе Управление версиями встроенных компонентов.

Параметры

Параметры помогают упростить управление политиками за счет сокращения числа определений политик. Параметры можно рассматривать как поля в форме: name, address, city, state. Эти параметры никогда не меняются, однако их значения изменяются в зависимости от того, как пользователь заполняет форму. Точно так же параметры работают при создании инициатив политик. Включив параметры в определение инициативы политики, можно повторно использовать этот параметр во включенных политиках.

Примечание.

После назначения инициативы невозможно изменить параметры уровня инициативы. Из-за этого рекомендуется устанавливать defaultValue при определении параметра.

Свойства параметра

Параметр имеет следующие свойства, которые используются в определении инициативы политики:

  • name: имя параметра. Используется функцией развертывания parameters в правиле политики. Дополнительные сведения см. в разделе об использовании значения параметра.
  • type: определяет, является ли параметр строкой, массивом, объектом, логическим числом, целым числом, float или datetime.
  • metadata: определяет вложенные свойства, в основном используемые портал Azure для отображения понятной для пользователя информации:
    • description: (Необязательно) Объяснение того, для чего используется параметр. Можно использовать для примеров допустимых значений.
    • displayName: понятное имя, отображаемое на портале для параметра.
    • strongType: (Необязательно) Используется при назначении определения политики через портал. Предоставляет список с учетом контекста. См. дополнительные сведения о вложенном свойстве strongType.
  • defaultValue: (необязательно) задает значение параметра в назначении, если значение не задано.
  • allowedValues: (необязательно) Предоставляет массив значений, которые параметр принимает во время назначения.

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

"parameters": {
    "init_allowedLocations": {
        "type": "array",
        "metadata": {
            "description": "The list of allowed locations for resources.",
            "displayName": "Allowed locations",
            "strongType": "location"
        },
        "defaultValue": [ "westus2" ],
        "allowedValues": [
            "eastus2",
            "westus2",
            "westus"
        ]
    }
}

Передача значения параметра в определение политики

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

Например, параметр инициативы init_allowedLocations, определенный ранее, можно передать в несколько включаемых определений политик и их параметров, sql_locations и vm_locations, следующим образом:

"policyDefinitions": [
    {
        "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/0ec8fc28-d5b7-4603-8fec-39044f00a92b",
        "policyDefinitionReferenceId": "allowedLocationsSQL",
        "parameters": {
            "sql_locations": {
                "value": "[parameters('init_allowedLocations')]"
            }
        }
    },
    {
        "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/aa09bd0f-aa5f-4343-b6ab-a33a6a6304f3",
        "policyDefinitionReferenceId": "allowedLocationsVMs",
        "parameters": {
            "vm_locations": {
                "value": "[parameters('init_allowedLocations')]"
            }
        }
    }
]

В этом примере используется параметр init_allowedLocations, который рассматривался в разделе о свойствах параметра.

strongType

В свойстве metadata можно использовать вложенное свойство strongType, чтобы предоставить список для выбора параметров на портале Azure. strongType может быть поддерживаемым типом ресурса или допустимым значением. Чтобы определить, можно ли использовать strongType для того или иного типа ресурса, используйте командлет Get-AzResourceProvider.

Поддерживаются некоторые типы ресурсов, которые не возвращаются Get-AzResourceProvider . Типы ресурсов:

  • Microsoft.RecoveryServices/vaults/backupPolicies

Допустимыми значениями, помимо типов ресурсов для strongType, являются следующие.

  • location
  • resourceTypes
  • storageSkus
  • vmSKUs
  • existingResourceGroups

Определения политик

Часть policyDefinitions определения инициативы — это массив, из которого в инициативу включены существующие определения политик. Как упоминалось в разделе Передача значения параметра в определение политики, это свойство позволяет передавать Параметры инициативы в определение политики.

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

Каждый элемент массива, представляющий определение политики, имеет следующие свойства.

  • policyDefinitionId (строковый): идентификатор пользовательского или встроенного определения политики для включения.
  • policyDefinitionReferenceId (строковый): краткое имя для определения включаемой политики.
  • parameters (необязательный): пары "имя – значение" для передачи параметра инициативы во включаемое определение политики в качестве свойства в определении политики. Дополнительные сведения см. в разделе Параметры.
  • groupNames (строковый массив) (необязательно): группа, элементом которой является определение политики. Дополнительные сведения можно найти в разделе Группы политик.

Ниже приведен пример policyDefinitions с двумя определениями политик, в каждом из которых передан один и тот же параметр инициативы:

"policyDefinitions": [
    {
        "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/0ec8fc28-d5b7-4603-8fec-39044f00a92b",
        "policyDefinitionReferenceId": "allowedLocationsSQL",
        "parameters": {
            "sql_locations": {
                "value": "[parameters('init_allowedLocations')]"
            }
        }
    },
    {
        "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/aa09bd0f-aa5f-4343-b6ab-a33a6a6304f3",
        "policyDefinitionReferenceId": "allowedLocationsVMs",
        "parameters": {
            "vm_locations": {
                "value": "[parameters('init_allowedLocations')]"
            }
        }
    }
]

Группы определений политик

Определения политик в определении инициативы можно группировать и классифицировать. Функция Соответствие нормативным требованиям (предварительная версия) Политики Azure использует это свойство для группирования определений в элементы управления и домены соответствия. Эти сведения определяются в свойстве policyDefinitionGroupsмассива. Дополнительные сведения о группировании можно найти в объекте policyMetadata, созданном корпорацией Майкрософт. Дополнительные сведения см. в разделе Объекты метаданных.

Параметры групп определений политик

Каждый элемент массива в policyDefinitionGroups должен иметь оба следующих свойства:

  • name (строковый) обязательный: короткое имя группы. В функции "Соответствие нормативным требованиям" это элемент управления. Значение этого свойства используется groupNames в policyDefinitions.

  • category (строковый): иерархия, к которой принадлежит группа. В функции "Соответствие нормативным требованиям" это домен соответствия элемента управления.

  • displayName (строковый): понятное имя группы или элемента управления. Используется порталом.

  • description (строковый): описание того, что охватывает группа или элемент управления.

  • additionalMetadataId (строковый): расположение объекта policyMetadata, в котором содержатся дополнительные сведения об элементе управления и домене соответствия.

    Примечание.

    Клиенты могут указывать на существующий объект policyMetadata. Однако эти объекты доступны только для чтения и создаются только корпорацией Майкрософт.

Пример свойства policyDefinitionGroups из встроенного определения инициативы NIST выглядит следующим образом:

"policyDefinitionGroups": [
    {
        "name": "NIST_SP_800-53_R4_AC-1",
        "additionalMetadataId": "/providers/Microsoft.PolicyInsights/policyMetadata/NIST_SP_800-53_R4_AC-1"
    }
]

Объекты метаданных

Встроенные системы соответствия нормативным требованиям, созданные корпорацией Майкрософт, содержат дополнительные сведения о каждом элементе управления. Эта информация:

  • Отображается на портале Azure в обзоре элемента управления в инициативе "Соответствие нормативным требованиям".
  • Доступна с помощью REST API. См. сведения о поставщике ресурсов Microsoft.PolicyInsights и группе операций policyMetadata.
  • Доступна с помощью Azure CLI. См. команду az policy metadata.

Важно!

Объекты метаданных для функции "Соответствие нормативным требованиям" доступны только для чтения и не могут быть созданы клиентами.

Метаданные для группирования политики имеют следующие сведения в узле properties:

  • metadataId: идентификатор элемента управления, к которому относится группирование.
  • category (обязательный): домен соответствия, к которому относится элемент управления.
  • title (обязательный): понятное имя идентификатора элемента управления.
  • owner (обязательный): определяет, кто несет ответственность за элемент управления в Azure: Заказчик, Майкрософт, Общий.
  • description: дополнительные сведения об элементе управления.
  • requirements: сведения об ответственности реализации элемента управления.
  • additionalContentUrl: ссылка на дополнительные сведения об элементе управления. Это свойство обычно является ссылкой на раздел документации, посвященный этому элементу управления, в стандарте соответствия.

Ниже приведен пример объекта policyMetadata. Этот пример метаданных относится к элементу управления NIST SP 800-53 R4 AC-1.

{
  "properties": {
    "metadataId": "NIST SP 800-53 R4 AC-1",
    "category": "Access Control",
    "title": "Access Control Policy and Procedures",
    "owner": "Shared",
    "description": "**The organization:**    \na. Develops, documents, and disseminates to [Assignment: organization-defined personnel or roles]:  \n1. An access control policy that addresses purpose, scope, roles, responsibilities, management commitment, coordination among organizational entities, and compliance; and  \n2. Procedures to facilitate the implementation of the access control policy and associated access controls; and  \n  
\nb. Reviews and updates the current:  \n1. Access control policy [Assignment: organization-defined frequency]; and  \n2. Access control procedures [Assignment: organization-defined frequency].",
    "requirements": "**a.**  The customer is responsible for developing, documenting, and disseminating access control policies and procedures. The customer access control policies and procedures address access to all customer-deployed resources and customer system access (e.g., access to customer-deployed virtual machines, access to customer-built applications).  \n**b.**  The customer is responsible for reviewing and updating access control policies and procedures in accordance with FedRAMP requirements.",
    "additionalContentUrl": "https://nvd.nist.gov/800-53/Rev4/control/AC-1"
  },
  "id": "/providers/Microsoft.PolicyInsights/policyMetadata/NIST_SP_800-53_R4_AC-1",
  "name": "NIST_SP_800-53_R4_AC-1",
  "type": "Microsoft.PolicyInsights/policyMetadata"
}

Следующие шаги