azurerm_webapp ресурс
Используйте azurerm_webapp ресурс аудита InSpec, чтобы протестировать свойства веб-приложения Azure.
Версия Azure REST API
Этот ресурс взаимодействует с версией 2016-08-01 API Azure Management. Дополнительную информацию см. в официальной документации Azure.
В настоящее время, похоже, нет способа выбрать версию документации API Azure. Если вы заметите упоминание новой версии в официальной документации, откройте вопрос или отправьте запрос на вытягивание с использованием обновлённой версии.
Доступность
Установка
Этот ресурс доступен в inspec-azure пакете ресурсов. Для его использования добавьте следующее в свой inspec.yml в профиле верхнего уровня:
depends:
inspec-azure:
git: https://github.com/inspec/inspec-azure.git
Вам также потребуется настроить свои учетные данные Azure; см. README пакета ресурсов.
Синтаксис
Блок ресурса azurerm_webapp идентифицирует веб-приложение AppService по имени и группе ресурсов.
describe azurerm_appservice_webapp(resource_group: 'example', name: 'webapp name') do
...
end
Примеры
Проверка наличия указанного веб-приложения в группе ресурсов
Проверьте, что в примере группы ресурсов есть указанное веб-приложение и проверьте, что настройки аутентификации включены. Проверьте, что включен HTTP 2.0.
describe azurerm_webapp(resource_group: 'example', name: 'webapp_name') do
it { should exist }
its('auth_settings.properties') { should have_attributes(enabled: false) }
its('configuration.properties') { should have_attributes(http20Enabled: true) }
end
Проверка веб-приложения на использование последней поддерживаемой версии .NET
describe azurerm_webapp(resource_group: resource_group, name: wa_name) do
it { should be_using_latest('aspnet') }
end
Проверка веб-приложения на использование последней поддерживаемой версии Python
describe azurerm_webapp(resource_group: resource_group, name: wa_name) do
it { should be_using_latest('python') }
end
Параметры
nameresource_group
Примеры параметров
Группа ресурсов, а также имя веб-приложения.
describe azurerm_webapp(resource_group: 'example', name: 'webapp_name') do
it { should exist }
end
describe azurerm_webapp(resource_group: 'example', name: 'webapp_name').auth_settings do
its('properties') { should have_attributes(enabled: true) }
end
Атрибуты
idnamelocationpropertiesidentityauth_settingsconfiguration
Все атрибуты доступны через нотацию точек. Это пример доступных в настоящее время атрибутов.
control 'azurerm_webapp' do
describe azurerm_webapp(resource_group: 'example', name: 'webapp_name') do
it { should exist }
its('properties.enabled') { should cmp true }
its('properties.clientCertEnabled') { should cmp true }
its('properties.enabledHostNames') { should cmp 'webapp_name.azurewebsites.net' }
its('properties.httpsOnly') { should cmp true }
end
end
Другие атрибуты
Существуют дополнительные атрибуты, к которым можно получить доступ, которые мы не документировали. Обратитесь к документации Azure. Любой атрибут в ответе можно получить, используя имена ключей, разделенные точками (.).
API не всегда возвращает ключи, не имеющие связанных данных. В некоторых случаях глубоко вложенное свойство может не содержать нужного атрибута в вашей цепочке вызовов. Если вы обнаружите необходимость тестирования свойств, которые могут быть null, разделите этот пакет ресурсов и добавьте аксессор к ресурсу. В этом аксессоре вы сможете защитить от нулевых ключей. Запросы на вытягивание всегда приветствуются.
Матчеры
Этот ресурс аудита InSpec имеет следующие специальные матчеры. Полный список доступных матчеров см. на нашей странице универсальных матчеров.
using_latest?(stack)
Проверяет, использует ли развернутое веб-приложение Azure последнюю поддерживаемую версию данного языка/стека. Поддерживаемые стеки (например, python, java, php, node) можно найти в разделе properties конфигурации веб-приложения в документации.
it { should be_using_latest('php') }
it { should be_using_latest('java') }
it { should be_using_latest('python') }
it { should be_using_latest('aspnet') }
it { should be_using_latest('dotnetcore') }
exists
Управление пройдёт, если ресурс вернёт результат. Используйте should_not если ожидается ноль совпадений.
# If we expect 'webapp_name' to have a Managed Service Identity
describe azurerm_webapp(resource_group: 'example', name: 'webapp_name') do
it { should have_identity }
end
Разрешения Azure
Ваш Сервисный Принцип должен быть настроен с ролью contributor на подписке, которую вы хотите протестировать.
© Chef Software, Inc.
Licensed under the Creative Commons Attribution 3.0 Unported License.
The Chef™ Mark and Chef Logo are either registered trademarks/service marks or trademarks/servicemarks of Chef, in the United States and other countries and are used with Chef Inc's permission.
We are not affiliated with, endorsed or sponsored by Chef Inc.
https://docs.chef.io/inspec/resources/azurerm_webapp/