azurerm_virtual_network ресурс
Используйте ресурс аудита InSpec azurerm_virtual_network для проверки свойств, связанных с виртуальной сетью.
Версия Azure REST API
Этот ресурс взаимодействует с версией 2018-02-01 API управления Azure. Более подробная информация доступна в официальной документации Azure.
В настоящее время, похоже, нет способа выбрать версию документации API Azure. Если вы обнаружите упоминание новой версии в официальной документации, откройте вопрос или отправьте запрос на вытягивание с обновлённой версией.
Доступность
Установка
Этот ресурс доступен в 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
Примеры
Убедиться, что виртуальная сеть существует в регионе East US
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_серверы
Список 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"}
включить_защиту_от_ddos
Булево значение, показывающее, включена ли стандартная защита Azure DDoS в виртуальной сети.
its('enable_ddos_protection') { should eq true }
включить_защиту_вм
Булево значение, показывающее, включена ли защита ВМ в виртуальной сети.
its('enable_vm_protection') { should eq false }
Другие атрибуты
Существуют дополнительные атрибуты, к которым можно получить доступ, которые мы не задокументировали. Пожалуйста, ознакомьтесь с документацией Azure. Любой атрибут в ответе можно получить, используя имена ключей, разделенные точками (.).
API не всегда возвращает ключи, у которых нет связанных данных. Возможны случаи, когда глубоко вложенное свойство может не иметь желаемого атрибута вдоль цепочки вызова. Если вы обнаружите, что пишете тесты для свойств, которые могут быть nil, видоизмените этот набор ресурсов и добавьте аксессор к ресурсу. В этом аксессоре вы сможете защититься от нулевых ключей. Запросы на вытягивание всегда приветствуются.
Сопоставители
Этот ресурс аудита 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/