Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Определение пользовательской политики позволяет клиентам устанавливать собственные правила для использования Azure. Эти правила часто применяют для:
- Рекомендации по безопасности.
- Управление затратами.
- Правила, специфичные для организации (например, именование или расположения).
Каковы бы ни были бизнес-мотивы для создания пользовательской политики, шаги для определения новой пользовательской политики остаются одинаковыми.
Прежде чем создавать пользовательскую политику, проверьте, нет ли в примерах готовой политики, соответствующей вашим требованиям.
Процесс создания пользовательской политики включает следующее:
- определение бизнес-требований;
- сопоставление каждого требования со свойством ресурса Azure;
- сопоставление свойства c псевдонимами;
- Определите, какой эффект использовать
- составление определения политики.
Предварительные условия
Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.
Определение требований
Прежде чем создавать определение политики, важно определиться с назначением политики. В этом руководстве используйте общее требование к безопасности предприятия в качестве цели, чтобы проиллюстрировать описанные ниже действия.
- Каждая учетная запись хранения должна быть включена для HTTPS.
- Каждая учетная запись хранения должна быть отключена для HTTP.
Требования должны четко определять состояния ресурса как "быть", так и "не быть".
Хотя мы определили ожидаемое состояние ресурса, мы не определили, что мы хотим сделать с несоответствующим ресурсами. Политика Azure поддерживает множество эффектов. В этом руководстве мы определим бизнес-требование, чтобы предотвратить создание ресурсов, если они не соответствуют бизнес-правилам. Для удовлетворения этой цели мы используем эффект запрета. Нам также нужен вариант приостановки политики для определенных назначений. Используйте отключенныйэффект и сделайте эффект параметромв определении политики.
Определение свойств ресурсов
Исходя из нашего бизнес-требования, с помощью Политики Azure будет проводится аудит такого ресурса Azure, как учетная запись хранения. Но нам неизвестно, какие свойства использовать в определении политики. Политика Azure оценивает JSON-представление ресурса, поэтому необходимо разобраться в свойствах, доступных для этого ресурса.
Есть много способов определить свойства ресурса Azure. Мы рассмотрим каждое руководство для этого учебника:
- Расширение Azure Policy для VS Code.
- Шаблоны Azure Resource Manager (шаблоны ARM).
- Экспорт существующего ресурса.
- Опыт создания.
- Шаблоны быстрого запуска (GitHub).
- Справочные документы по шаблону.
- Обозреватель ресурсов Azure.
Просмотр ресурсов в расширении для VS Code
Расширение VS Code можно использовать для просмотра ресурсов в среде и свойств Resource Manager для каждого ресурса.
Шаблоны ARM
Существует несколько способов просмотреть шаблон ARM, который содержит нужное нам свойство.
Существующий ресурс на портале
Простейший способ узнать свойства ресурса — изучить существующий ресурс аналогичного типа. Ресурсы, которые уже настроены с необходимой конфигурацией, также предоставляют значение для сравнения. Откройте страницу шаблона экспорта в разделе Параметры в портале Azure для этого конкретного ресурса.
Предупреждение
Шаблон ARM, экспортированный из портала Azure, нельзя напрямую использовать в свойстве deployment шаблона ARM в определении политики deployIfNotExists.
Открывая учетную запись хранения, вы увидите шаблон, схожий с этим примером:
"resources": [
{
"comments": "Generalized from resource: '/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Storage/storageAccounts/mystorageaccount'.",
"type": "Microsoft.Storage/storageAccounts",
"sku": {
"name": "Standard_LRS",
"tier": "Standard"
},
"kind": "Storage",
"name": "[parameters('storageAccounts_mystorageaccount_name')]",
"apiVersion": "2018-07-01",
"location": "westus",
"tags": {
"ms-resource-usage": "azure-cloud-shell"
},
"scale": null,
"properties": {
"networkAcls": {
"bypass": "AzureServices",
"virtualNetworkRules": [],
"ipRules": [],
"defaultAction": "Allow"
},
"supportsHttpsTrafficOnly": false,
"encryption": {
"services": {
"file": {
"enabled": true
},
"blob": {
"enabled": true
}
},
"keySource": "Microsoft.Storage"
}
},
"dependsOn": []
}
]
Под properties находится значение с именем supportsHttpsTrafficOnly, установленное на false. Похоже, что это то имущество, которое мы ищем. Кроме того, значение type ресурса равно Microsoft.Storage/storageAccounts. Тип позволяет ограничить применение политики для ресурсов только этого типа.
Создание ресурса на портале
Другой способ — создание ресурса на портале. При создании учетной записи хранения на портале на вкладке "Дополнительно" есть параметр "Требовать безопасную передачу данных". Возможные его состояния — Отключено и Включено. Значок сведений содержит больше текста, который подтверждает, что этот параметр, скорее всего, является нужным свойством. Однако портал не указывает нам название свойства на этом экране.
На вкладке Просмотр и создание внизу есть ссылка Скачать шаблон для автоматизации. Выбор ссылки открывает шаблон, создающий ресурс, который мы настроили. В этом случае нас интересуют следующие сведения:
...
"supportsHttpsTrafficOnly": {
"type": "bool"
}
...
"properties": {
"accessTier": "[parameters('accessTier')]",
"supportsHttpsTrafficOnly": "[parameters('supportsHttpsTrafficOnly')]"
}
...
Эта информация сообщает нам тип свойства, а также подтверждает, что это и есть свойство, которое мы ищем.
Шаблоны быстрого запуска на GitHub
Шаблоны быстрого запуска Azure на GitHub имеют сотни шаблонов ARM, созданных для различных ресурсов. Эти шаблоны обеспечивают отличный способ отыскать требуемое свойство ресурса. Некоторые свойства могут казаться тем, что вы ищете, но управляют чем-то другим.
Справочная документация по ресурсам
Чтобы проверить, что supportsHttpsTrafficOnly является корректным свойством, проверьте ссылку на шаблон ARM для ресурса учетной записи хранилища у поставщика хранилища. Объект свойств содержит список допустимых параметров. При выборе StorageAccountPropertiesCreateParameters ссылки на объект отображается таблица допустимых свойств.
supportsHttpsTrafficOnly присутствует и описание соответствует тому, что мы ищем в отношении бизнес-требований.
Обозреватель ресурсов Azure
Еще одну возможность оценить ресурсы Azure предоставляет обозреватель ресурсов Azure (предварительная версия). Это средство использует контекст подписки, поэтому вам необходимо пройти проверку подлинности на веб-сайте с помощью учетных данных Azure. Пройдя проверку подлинности, можно просмотреть сведения о поставщиках, подписках, группах ресурсов и ресурсах.
Найдите ресурс учетной записи хранения и просмотрите его свойства. Мы видим здесь также свойство supportsHttpsTrafficOnly. На вкладке Документация видно, что описание свойства соответствует сведениям из справочника, полученным нами ранее.
Поиск псевдонима свойства
Мы определили свойство ресурса, но нам нужно сопоставить это свойство с псевдонимом.
Есть несколько способов определить псевдонимы ресурса Azure. Мы рассмотрим каждое руководство для этого учебника:
- Расширение Azure Policy для VS Code.
- Azure CLI.
- Azure PowerShell.
Получение псевдонимов в расширении VS Code
Расширение Azure Policy для VS Code упрощает просмотр ваших ресурсов и поиск псевдонимов.
Примечание.
Расширение VS Code предоставляет только свойства режима диспетчера ресурсов и не отображает свойств режима поставщика ресурсов.
Azure CLI
Для поиска псевдонимов ресурса в Azure CLI используется группа команд az provider. Мы фильтруем пространство имен Microsoft.Storage на основе сведений, которые мы получили ранее о ресурсе Azure.
# Login first with az login if not using Cloud Shell
# Get Azure Policy aliases for type Microsoft.Storage
az provider show --namespace Microsoft.Storage --expand "resourceTypes/aliases" --query "resourceTypes[].aliases[].name"
В результатах мы видим псевдоним, поддерживаемый учетными записями хранения с именем supportsHttpsTrafficOnly. Наличие такого псевдонима позволяет нам создать политику для соблюдения бизнес-требований.
Azure PowerShell
Для поиска псевдонимов ресурса в Azure PowerShell используется командлет Get-AzPolicyAlias. Отфильтруйте пространство Microsoft.Storage имен на основании полученных ранее сведений о ресурсе Azure.
# Login first with Connect-AzAccount if not using Cloud Shell
# Use Get-AzPolicyAlias to list aliases for Microsoft.Storage
(Get-AzPolicyAlias -NamespaceMatch 'Microsoft.Storage').Aliases
Как и Azure CLI, результаты показывают псевдоним, поддерживаемый учетными записями хранения с именем supportsHttpsTrafficOnly.
Определение требуемого эффекта
Решение о том, что делать с ресурсами, которые не отвечают требованиям, не менее важно, чем решение о том, что оценивать в первую очередь. Каждый возможный ответ несоответствующему ресурсу называется эффектом. Эффект определяет, будет ли несоответствующий ресурс зарегистрирован, заблокирован, к нему добавлены данные или связано с ним развертывание для возврата ресурса в состояние соответствия требованиям.
В нашем примере эффект, которого мы добиваемся deny, заключается в том, чтобы в нашей среде Azure не создавались ресурсы, не соответствующие требованиям. Аудит является хорошим первым выбором для оценки воздействия политики, чтобы определить, какое оно имеет влияние, перед тем как установить его на deny. Один из способов упростить изменение эффекта по назначению — параметризовать эффект. См. параметры для получения деталей.
Создание определения
Теперь у нас есть подробные сведения о свойстве, которым мы хотим управлять, включая его псевдоним. Затем мы создадим само правило политики. Если вы не знакомы с языком политики, ознакомьтесь с структурой определения политики для того, чтобы понять, как структурировать определение политики. Ниже приведен пустой шаблон определения политики:
{
"properties": {
"displayName": "<displayName>",
"description": "<description>",
"mode": "<mode>",
"parameters": {
<parameters>
},
"policyRule": {
"if": {
<rule>
},
"then": {
"effect": "<effect>"
}
}
}
}
Метаданные
Первые три компонента — это метаданные политики. Этим компонентам мы можем быстро задать значения, так как знаем, для чего создаем правило. Параметр mode касается главным образом тегов и расположения ресурсов. Так как нам не нужно ограничивать оценку ресурсами, поддерживающими теги, используйте все значение для mode.
"displayName": "Deny storage accounts not using only HTTPS",
"description": "Deny storage accounts not using only HTTPS. Checks the supportsHttpsTrafficOnly property on StorageAccounts.",
"mode": "all",
Параметры
Хотя мы не использовали параметр для изменения оценки, мы хотим использовать параметр, чтобы разрешить изменение effect для устранения неполадок. Вы определяете effectType параметр и ограничиваете его только deny и disabled. Эти два варианта обеспечивают соответствие нашим бизнес-требованиям. Готовый блок параметров выглядит следующим образом:
"parameters": {
"effectType": {
"type": "string",
"defaultValue": "Deny",
"allowedValues": [
"Deny",
"Disabled"
],
"metadata": {
"displayName": "Effect",
"description": "Enable or disable the execution of the policy"
}
}
},
Правило политики
Составление правила политики является последним шагом в создании определения пользовательской политики. Мы определили два утверждения для тестирования:
- Учетная запись хранения
typeMicrosoft.Storage/storageAccounts. - Учетная запись хранения
supportsHttpsTrafficOnlyнеtrue.
Так как нам нужно, чтобы оба этих оператора были истинными, используйте логический allOfоператор.
effectType Передайте параметр в эффект вместо того, чтобы сделать статическое объявление. Готовое правило имеет следующий вид:
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Storage/storageAccounts"
},
{
"field": "Microsoft.Storage/storageAccounts/supportsHttpsTrafficOnly",
"notEquals": "true"
}
]
},
"then": {
"effect": "[parameters('effectType')]"
}
Завершенное определение
Определив все три части политики, мы получили такое завершенное определение:
{
"properties": {
"displayName": "Deny storage accounts not using only HTTPS",
"description": "Deny storage accounts not using only HTTPS. Checks the supportsHttpsTrafficOnly property on StorageAccounts.",
"mode": "all",
"parameters": {
"effectType": {
"type": "string",
"defaultValue": "Deny",
"allowedValues": [
"Deny",
"Disabled"
],
"metadata": {
"displayName": "Effect",
"description": "Enable or disable the execution of the policy"
}
}
},
"policyRule": {
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Storage/storageAccounts"
},
{
"field": "Microsoft.Storage/storageAccounts/supportsHttpsTrafficOnly",
"notEquals": "true"
}
]
},
"then": {
"effect": "[parameters('effectType')]"
}
}
}
}
Завершенное определение можно использовать для создания новой политики. Портал Azure и все пакеты SDK (для Azure CLI, Azure PowerShell и REST API) по-разному принимают определения, поэтому просмотрите команды для каждого средства, чтобы правильно использовать определения. Затем назначьте её, используя параметризованный эффект, подходящим ресурсам для управления безопасностью своих учетных записей хранения.
Очистка ресурсов
Если вы закончите работу с ресурсами из этого руководства, выполните следующие действия, чтобы удалить все созданные назначения или определения:
Выберите Определения (или Назначения, если вы пытаетесь удалить назначение) в разделе Разработка в левой части страницы службы Политика Azure.
Найдите новую инициативу либо определение политики (или назначение), которые вы хотите удалить.
Щелкните строку правой кнопкой мыши или выберите многоточие в конце определения (или назначения), а затем выберите Удалить определение (или Удаление назначения).
Отзыв
В этом руководстве вы успешно выполнили следующие действия:
- определили бизнес-требования;
- сопоставили каждое требование со свойством ресурса Azure;
- сопоставили свойства c псевдонимами;
- определили требуемый эффект;
- составили определение политики.
Следующие шаги
Далее используйте определение пользовательской политики для создания и назначения политики.
Create and assign a policy definition (Создание и назначение определения политики).