Ресурс azurerm_virtual_network
Используйте ресурс аудита InSpec azurerm_virtual_network для проверки свойств, связанных с виртуальной сетью.
Версия Azure REST API
Этот ресурс взаимодействует с версией 2018-02-01 API Azure Management. Более подробную информацию можно найти в официальной документации Azure.
В настоящий момент не представляется возможным выбрать версию документации Azure API. Если вы обнаружите ссылку на более новую версию в официальной документации, откройте вопрос или отправьте запрос на добавление с обновленной версией.
Доступность
Установка
Этот ресурс доступен в inspec-azure пакете ресурсов. Чтобы использовать его, добавьте следующее в свой inspec.yml в вашем профиле верхнего уровня:
depends:
- name: inspec-azure
git: https://github.com/inspec/inspec-azure.git
Вам также необходимо настроить свои учетные данные Azure; см. README пакета ресурсов.
Версия
Этот ресурс стал доступен в версии 1.1.0 пакета ресурсов inspec-azure.
Синтаксис
Параметры resource_group и виртуальной сети name должны быть заданы в качестве параметров.
describe azurerm_virtual_network(resource_group: 'MyResourceGroup', name: 'MyVnetName') do
...
end
Примеры
Убедитесь, что виртуальная сеть существует в регионе Восточная часть США
describe azurerm_virtual_network(resource_group: resource_group, name: 'MyVnetName') do
it { should exist }
its('location') { should eq 'East US' }
end
Убедитесь, что серверы DNS виртуальной сети настроены как ожидается
describe azurerm_virtual_network(resource_group: resource_group, name: 'MyVnetName') do
its('dns_servers') { should eq ["192.168.0.6"] }
end
Убедитесь, что адресное пространство виртуальной сети настроено как ожидается
describe azurerm_virtual_network(resource_group: resource_group, name: 'MyVnetName') do
its('address_space') { should eq ["192.168.0.0/24"] }
end
Параметры
resource_groupname
Примеры параметров
resource_group (обязательно)
Определяет группу ресурсов, в которой находится виртуальная сеть, которую вы хотите проверить.
describe azurerm_virtual_network(resource_group: 'MyResourceGroup', name: 'MyVnetName') do
...
end
name (обязательно)
Определяет имя виртуальной сети, которую вы хотите проверить.
describe azurerm_virtual_network(resource_group: 'MyResourceGroup', name: 'MyVnetName') do
...
end
Атрибуты
idnamelocationtagstypesubnetsaddress_spacedns_serversvnet_peeringsenable_ddos_protectionenable_vm_protection
id
Идентификатор виртуальной сети.
its('id') { should eq(id) }
Идентификатор будет иметь формат:
'/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/Inspec-Azure-mmclane/providers/Microsoft.Network/virtualNetworks/MyVnetName'
name
Имя виртуальной сети.
its('name') { should eq('MyVnetName') }
location
Расположение виртуальной сети.
its('location') { should eq('East US') }
type
Тип ресурса виртуальной сети.
its('type') { should eq 'Microsoft.Network/virtualNetworks' }
метки
Метки виртуальной сети.
its('tags') { should eq({ 'key' => 'value' }) }
подсети
Список имён подсетей, подключенных к этой виртуальной сети.
its('subnets') { should eq ["MySubnetName"] }
address_space
Список адресных пространств, используемых виртуальной сетью.
its('address_space') { should eq ["x.x.x.x/x"] }
dns_servers
Список серверов DNS, настроенных для виртуальной сети. Виртуальная сеть возвращает эти IP-адреса, когда виртуальные машины делают запрос DHCP.
its('dns_servers') { should eq ["x.x.x.x", "x.x.x.x"] }
vnet_peerings
Сопоставление имён и идентификаторов виртуальных сетей для виртуальных сетевых сопоставлений.
its('vnet_peerings') { should eq "MyVnetPeeringConnection"=>"PeeringConnectionID"}
enable_ddos_protection
Булево значение, показывающее, включена ли стандартная защита Azure DDoS для виртуальной сети.
its('enable_ddos_protection') { should eq true }
enable_vm_protection
Булево значение, показывающее, включена ли защита виртуальных машин для виртуальной сети.
its('enable_vm_protection') { should eq false }
Другие атрибуты
Доступны дополнительные атрибуты, которые мы не задокументировали. Пожалуйста, обратитесь к документации Azure. К любому атрибуту в ответе можно обратиться по именам ключей, разделенных точками (.).
API не всегда возвращает ключи, не имеющие связанных данных. Может возникнуть ситуация, когда у глубоко вложенного свойства отсутствует нужное свойство в вашем цепочке вызовов. Если вы столкнулись с необходимостью тестирования свойств, которые могут быть null, создайте форк этого пакета ресурсов и добавьте к нему метод доступа. В этом методе доступа вы сможете защититься от null-ключей. Запросы на добавление всегда приветствуются.
Обработчики соответствия
Этот ресурс аудита InSpec имеет следующие специальные обработчики соответствия. Полный список доступных обработчиков см. на нашей странице Универсальные обработчики.
exists
# If a virtual network is found it will exist
describe azurerm_virtual_network(resource_group: 'MyResourceGroup', name: 'MyVnetName') do
it { should exist }
end
# virtual networks that aren't found will not exist
describe azurerm_virtual_network(resource_group: 'MyResourceGroup', name: 'DoesNotExist') do
it { should_not exist }
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_virtual_network/