Безопасное развертывание назначений Политика Azure
По мере расширения среды это делает спрос на контролируемый конвейер непрерывного развертывания (CD) с прогрессивным контролем воздействия. Соответственно, корпорация Майкрософт рекомендует командам DevOps соблюдать платформу безопасных методов развертывания (SDP). Безопасное развертывание определений и назначений Политика Azure помогает ограничить влияние непреднамеренных действий ресурсов политики.
Высокоуровневый подход реализации SDP с Политика Azure заключается в постепенном развертывании назначений политик кольцами для обнаружения изменений политики, влияющих на среду на ранних этапах, прежде чем она влияет на критически важную облачную инфраструктуру.
Кольца развертывания можно упорядочить различными способами. В этом руководстве кольца разделены различными регионами Azure с кольцом 0, представляющими некритичные, низкие расположения трафика и кольцо 5, обозначающее наиболее критически важные, самые высокие расположения трафика.
Действия по безопасному развертыванию назначений Политика Azure с запретом или добавлением эффектов
Используйте следующую блок-схему в качестве ссылки, так как мы работаем над применением платформы SDP к Политика Azure назначениям, которые используют deny
эффекты политики или append
политики.
Примечание.
Дополнительные сведения о эффектах политики Azure см. в статье "Общие сведения о работе эффектов".
Номера шагов блок-схемы:
Выбрав определение политики, назначьте политику на уровне высшего уровня, включаемую во все круги развертывания. Примените селекторы ресурсов, чтобы сузить применимость к наименее критическому кругу с помощью
"kind": "resource location"
свойства.audit
Настройте тип эффекта с помощью переопределения назначений. Пример селектора с расположениемeastUS
и эффектом:audit
"resourceSelectors": [{ "name": "SDPRegions", "selectors": [{ "kind": "resourceLocation", "in": [ "eastUS" ] }] }], "overrides":[{ "kind": "policyEffect", "value": "Audit" }]
После развертывания назначения и завершения первоначальной проверки соответствия убедитесь, что результат соответствия соответствует ожидаемому.
Кроме того, следует настроить автоматические тесты, которые выполняют проверки соответствия требованиям. Проверка соответствия должна охватывать следующую логику:
- Сбор результатов соответствия
- Если результаты соответствия, как ожидалось, конвейер должен продолжаться.
- Если результаты соответствия не являются ожидаемыми, конвейер должен завершиться ошибкой и начать отладку
Например, можно настроить проверку соответствия с помощью других средств в определенном конвейере непрерывной интеграции или непрерывного развертывания (CI/CD).
На каждом этапе развертывания проверка работоспособности приложения должна подтвердить стабильность службы и влияние политики. Если результаты не соответствуют конфигурации приложения, рефакторинг приложения соответствующим образом.
Повторите, разверните значения свойств селектора ресурсов, чтобы включить следующие кольца. расположения и проверка ожидаемых результатов соответствия требованиям и работоспособности приложений. Пример селектора со значением добавленного расположения:
"resourceSelectors": [{ "name": "SDPRegions", "selectors": [{ "kind": "resourceLocation", "in": [ "eastUS", "westUS"] }] }]
После успешного назначения политики всем кольцам с помощью
audit
режима конвейер должен активировать задачу, которая изменяет эффектdeny
политики и сбрасывает селекторы ресурсов в расположение, связанное с кольцом 0. Пример селектора с одним регионом и набором эффектов, чтобы запретить:"resourceSelectors": [{ "name": "SDPRegions", "selectors": [{ "kind": "resourceLocation", "in": [ "eastUS" ] }] }], "overrides":[{ "kind": "policyEffect", "value": "Deny" }]
После изменения эффекта автоматические тесты должны проверить, выполняется ли принудительное применение должным образом.
Повторите, включив дополнительные кольца в конфигурацию селектора ресурсов.
Повторите этот процесс для всех рабочих кругов.
Действия по безопасному развертыванию назначений Политика Azure с изменениями или развертыванием эффектовIfNotExists
Действия по политикам с помощью modify
или deployIfNotExists
эффекты аналогичны шагам, описанным ранее с помощью режима принудительного применения и активации задачи исправления.
Просмотрите следующую блок-схему с измененными шагами 5-9.
Номера шагов блок-схемы:
Выбрав определение политики, назначьте политику на уровне высшего уровня, включаемую во все круги развертывания. Примените селекторы ресурсов, чтобы сузить применимость к наименее критическому кругу с помощью
"kind": "resource location"
свойства. Настройте режим принудительного применения назначения в DoNotEnforce. Пример селектора с расположением и применениемMode вeastUS
качестве DoNotEnforce:"resourceSelectors": [{ "name": "SDPRegions", "selectors": [{ "kind": "resourceLocation", "in": [ "eastUS" ] }] }], "enforcementMode": "DoNotEnforce"
После развертывания назначения и завершения первоначальной проверки соответствия убедитесь, что результат соответствия соответствует ожидаемому.
Кроме того, следует настроить автоматические тесты, которые выполняют проверки соответствия требованиям. Проверка соответствия должна охватывать следующую логику:
- Сбор результатов соответствия
- Если результаты соответствия, как ожидалось, конвейер должен продолжаться.
- Если результаты соответствия не являются ожидаемыми, конвейер должен завершиться ошибкой и начать отладку
Проверку соответствия можно настроить с помощью других средств в конвейере непрерывной интеграции и непрерывного развертывания (CI/CD).
На каждом этапе развертывания проверка работоспособности приложения должна подтвердить стабильность службы и влияние политики. Если результаты не соответствуют конфигурации приложения, рефакторинг приложения соответствующим образом.
Вы также можете активировать задачи исправления для исправления существующих несоответствующих ресурсов. Убедитесь, что задачи исправления обеспечивают соответствие требованиям.
Повторите, разверив значения свойств селектора ресурсов, чтобы включить расположения следующего круга и проверяя ожидаемые результаты соответствия и работоспособности приложения. Пример селектора со значением добавленного расположения:
"resourceSelectors": [{ "name": "SDPRegions", "selectors": [{ "kind": "resourceLocation", "in": [ "eastUS", "westUS"] }] }]
После успешного назначения политики всем кольцам с помощью режима DoNotEnforce конвейер должен активировать задачу, которая изменяет политику
enforcementMode
на включение по умолчанию и сбрасывает селекторы ресурсов в расположение, связанное с кольцом 0. Пример селектора с одним регионом и набором эффектов, чтобы запретить:"resourceSelectors": [{ "name": "SDPRegions", "selectors": [{ "kind": "resourceLocation", "in": [ "eastUS" ] }] }], "enforcementMode": "Default",
После изменения эффекта автоматические тесты должны проверить, выполняется ли принудительное применение должным образом.
Повторите, включив дополнительные кольца в конфигурацию селектора ресурсов.
Повторите этот процесс для всех рабочих кругов.
Действия по безопасному обновлению встроенной версии определения в рамках назначения Политика Azure
В рамках существующего назначения примените переопределения , чтобы обновить версию определения для наименьшего критического круга. Мы используем сочетание переопределения, чтобы изменить определениеVersion и селекторы в условии переопределения, чтобы сузить применимость по свойству
"kind": "resource location"
. Все ресурсы, которые находятся за пределами указанных расположений, будут оцениваться по версии изdefinitionVersion
свойства верхнего уровня в назначении. Пример переопределения обновляет версию определения2.0.*
и применяет его только к ресурсам.EastUs
"overrides":[{ "kind": "definitionVersion", "value": "2.0.*", "selectors": [{ "kind": "resourceLocation", "in": [ "eastus"] }] }]
После обновления назначения и завершения первоначальной проверки соответствия убедитесь, что результат соответствия соответствует ожидаемому.
Кроме того, следует настроить автоматические тесты, которые выполняют проверки соответствия требованиям. Проверка соответствия должна охватывать следующую логику:
- Сбор результатов соответствия
- Если результаты соответствия, как ожидалось, конвейер должен продолжаться.
- Если результаты соответствия не являются ожидаемыми, конвейер должен завершиться ошибкой и начать отладку
Например, можно настроить проверку соответствия с помощью других средств в определенном конвейере непрерывной интеграции или непрерывного развертывания (CI/CD).
На каждом этапе развертывания проверка работоспособности приложения должна подтвердить стабильность службы и влияние политики. Если результаты не соответствуют конфигурации приложения, рефакторинг приложения соответствующим образом.
Повторите, разверните значения свойств селектора ресурсов, чтобы включить следующие кольца. расположения и проверка ожидаемых результатов соответствия требованиям и работоспособности приложений. Пример с добавленным значением расположения:
"overrides":[{ "kind": "definitionVersion", "value": "2.0", "selectors": [{ "kind": "resourceLocation", "in": [ "eastus", "westus"] }] }]
После успешного включения всех необходимых расположений в _selectors можно удалить переопределение и обновить свойство definitionVersion в рамках назначения:
"properties": {
"displayName": "Enforce resource naming rules",
"description": "Force resource names to begin with DeptA and end with -LC",
"definitionVersion": "2.0.*",
}
Следующие шаги
- Узнайте, как программно создавать политики.
- Просмотрите Политика Azure как рабочие процессы кода.
- Изучите рекомендации Корпорации Майкрософт по вопросам безопасного развертывания.
- Просмотрите несоответствующие ресурсы с помощью Политика Azure.