azurerm_management_group ресурс
Используйте ресурс аудита InSpec azurerm_management_group, чтобы проверить свойства, относящиеся к группе управления.
Версия Azure REST API
Этот ресурс взаимодействует с версией 2018-03-01-preview API Azure Management. Дополнительную информацию можно найти в официальной документации Azure.
В настоящее время, похоже, нет способа выбрать версию документации API Azure. Если вы обнаружите новую версию, упомянутую в официальной документации, пожалуйста, откройте вопрос или отправьте запрос на добавление с обновлённой версией.
Доступность
Установка
Этот ресурс доступен в inspec-azure пакете ресурсов. Чтобы использовать его, добавьте следующее в свой inspec.yml в вашем профиле верхнего уровня:
depends:
- name: inspec-azure
git: https://github.com/inspec/inspec-azure.git
Вам также потребуется настроить ваши учетные данные Azure; см. README пакета ресурсов.
Синтаксис
Параметр group_id должен быть указан в качестве параметра.
describe azurerm_management_group(group_id: 'MyGroupId') do
...
end
По желанию, вы можете использовать параметры expand, recurse и/или filter.
describe azurerm_management_group(group_id: 'MyGroupId', expand: 'children', recurse: true) do
...
end
describe azurerm_management_group(group_id: 'MyGroupId', expand: 'children', recurse: true, filter: 'children.childType ne Subscription') do
...
end
Примеры
describe azurerm_management_group(group_id: ‘20000000-0000-0000-0000-000000000000’, expand: ‘children’, recurse: true) do it { should exist } its(‘id’) { should eq ‘/providers/Microsoft.Management/managementGroups/20000000-0000-0000-0000-000000000000’ } its(‘type’) { should eq ‘/providers/Microsoft.Management/managementGroups’ } its(‘name’) { should eq ‘20000000-0000-0000-0000-000000000000’ } its(‘display_name’) { should eq ‘Имя отображения группы управления Один’ } its(‘tenant_id’) { should eq ‘56700000-0000-0000-0000-000000000000’ } its(‘parent_name’) { should eq ‘10000000-0000-0000-0000-000000000000’ } its(‘parent_id’) { should eq ‘/providers/Microsoft.Management/managementGroups/10000000-0000-0000-0000-000000000000’ } its(‘parent_display_name’) { should eq ‘Корневая группа арендатора’ } its(‘children_display_names’) { should include(‘Имя отображения дочерней группы управления’) } its(‘children_ids’) { should include('/providers/Microsoft.Management/managementGroups/40000000-0000-0000-0000-000000000000') } its(‘children_names’) { should include(‘40000000-0000-0000-0000-000000000000’) } its(‘children_types’) { should include('/providers/Microsoft.Management/managementGroups') } end
describe azurerm_management_group(group_id: ‘40000000-0000-0000-0000-000000000000’, expand: ‘children’, recurse: true) do it { should exist } its(‘id’) { should eq ‘/providers/Microsoft.Management/managementGroups/40000000-0000-0000-0000-000000000000’ } its(‘type’) { should eq ‘/providers/Microsoft.Management/managementGroups’ } its(‘name’) { should eq ‘40000000-0000-0000-0000-000000000000’ } its(‘display_name’) { should eq ‘Имя отображения дочерней группы управления’ } its(‘tenant_id’) { should eq ‘56700000-0000-0000-0000-000000000000’ } its(‘parent_name’) { should eq ‘20000000-0000-0000-0000-000000000000’ } its(‘parent_id’) { should eq ‘/providers/Microsoft.Management/managementGroups/20000000-0000-0000-0000-000000000000’ } its(‘parent_display_name’) { should eq ‘Имя отображения группы управления Один’ } its(‘children_display_names’) { should eq [] } its(‘children_ids’) { should eq [] } its(‘children_names’) { should eq [] } its(‘children_types’) { should eq [] } end
Параметры
group_idexpandrecursefilter
Примеры параметров
group_id (обязательно)
Определяет идентификатор группы управления, который вы хотите протестировать.
describe azurerm_management_group(group_id: 'MyGroupId') do
...
end
expand (необязательно)
Параметр строки запроса позволяет клиентам запрашивать включение дочерних элементов, чтобы вы могли их протестировать.
describe azurerm_management_group(group_id: 'MyGroupId', expand: 'children') do
...
end
recurse (необязательно)
Установка этого значения в true позволяет клиентам запросить включение всей иерархии в ответ. Обратите внимание, что expand: 'children' должен быть передан, если recurse установлен на true.
describe azurerm_management_group(group_id: 'MyGroupId', expand: 'children', recurse: true) do
...
end
filter (необязательно)
Фильтр, который позволяет исключить подписки из результатов (т. е. filter: 'children.childType ne Subscription').
describe azurerm_management_group(group_id: 'MyGroupId', expand: 'children', recurse: true, filter: 'children.childType ne Subscription') do
...
end
Атрибуты
idtypenametenant_idparent_nameparent_idparent_display_namechildren_display_nameschildren_idschildren_nameschildren_roleschildren_types
id
Идентификатор группы управления.
its('id') { should eq('/providers/Microsoft.Management/managementGroups/MyGroupId') }
id будет в формате:
'/providers/Microsoft.Management/managementGroups/<GROUP_ID>'
type
Тип группы управления.
its('type') { should eq('/providers/Microsoft.Management/managementGroups') }
name
Имя группы управления.
its('name') { should eq('MyGroupName') }
tenant_id
Идентификатор арендатора группы управления.
its('tenant_id') { should eq('00000000-0000-0000-0000-000000000000') }
parent_name
Имя родительской группы управления.
its('parent_name') { should eq('MyGroupsParentName') }
parent_id
Идентификатор родительской группы управления.
its('parent_id') { should eq('/providers/Microsoft.Management/managementGroups/MyGroupsParentId') }
parent_id будет в формате:
'/providers/Microsoft.Management/managementGroups/<GROUP_ID>'
parent_display_name
Имя отображения родительской группы управления.
its('parent_display_name') { should eq('My Groups Parent Display Name!') }
children_display_names
Имена отображения дочерних групп управления.
its('children_display_names') { should include('I am a child of the group!') }
children_ids
Идентификаторы дочерних групп управления.
its('children_ids') { should include('/providers/Microsoft.Management/managementGroups/a-child-name') }
children_names
Названия дочерних групп управления.
its('children_names') { should include('a-child-name') }
children_roles
Роли дочерних групп управления.
its('children_roles') { should include('/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635') }
children_types
Типы дочерних групп управления.
its('children_types') { should include('') }
Другие атрибуты
Существуют дополнительные атрибуты, к которым можно получить доступ, которые мы не задокументировали. Пожалуйста, ознакомьтесь с документацией Azure. Любой атрибут в ответе может быть доступен с ключами, разделенными точками (.).
API не всегда возвращает ключи, у которых нет связанных данных. В некоторых случаях глубоко вложенное свойство может не иметь нужного атрибута в вашей цепочке вызовов. Если вы обнаружите, что пишете тесты для свойств, которые могут быть nil, разделите этот пакет ресурсов и добавьте функцию доступа к ресурсу. В этой функции доступа вы сможете защититься от нулевых ключей. Запросы на добавление всегда приветствуются.
Матчи
Этот ресурс аудита InSpec имеет следующие специальные матчи. Полный список доступных матчей можно найти на нашей странице универсальных матчей.
exists
# If a management group is found it will exist
describe azurerm_management_group(groupd_id: 'MyGroupId') do
it { should exist }
end
# management groups that aren't found will not exist
describe azurerm_management_group(groupd_id: '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_management_group/