wmi ресурс
Используйте wmi ресурс аудита Chef InSpec для проверки настроек WMI в Windows.
Доступность
Установка
Этот ресурс поставляется вместе с самим Chef InSpec. Вы можете использовать его автоматически.
Версия
Этот ресурс впервые стал доступен в версии v1.0.0 InSpec.
Синтаксис
Блок ресурса wmi тестирует настройки WMI в Windows:
describe wmi({
class: 'class_name',
namespace: 'path\\to\\setting',
filter: 'filter',
query: 'query'
}) do
its('setting_name') { should eq '' }
end
где
-
class,namespace,filter, иqueryсоставляют Ruby хеш объекта WMI -
('class')— это класс WMI, к которому относится настройка, напримерwin32_service -
('namespace')— путь к этому объекту, напримерroot\\cimv2 - Используйте
('filter')для настройки информации, определенной классом WMI, например, для поиска конкретной службы (filter: "name like '%winrm%'"), для поиска конкретной настройки (filter: 'KeyName = \'MinimumPasswordAge\' And precedence=1') и так далее - Используйте
('query')для выполнения запроса, возвращающего данные для проверки, например"SELECT Setting FROM RSOP_SecuritySettingBoolean WHERE KeyName='LSAAnonymousNameLookup' AND Precedence=1" -
('setting_name')— это настройка в объекте WMI, подлежащая проверке, аshould eq ''— ожидаемое значение этой настройки
Например, оба следующих теста проверят, присутствует ли WinRM на целевом узле. Первый проверяет, принадлежит ли WinRM к списку работающих служб в классе win32_service.
describe wmi({class: 'win32_service'}) do
its('DisplayName') { should include 'Windows Remote Management (WS-Management)'}
end
А второй использует фильтр в Ruby хеше для предварительного определения WinRM и последующего выполнения дополнительных проверок:
describe wmi({
class: 'win32_service',
filter: "name like '%winrm%'"
}) do
its('Status') { should cmp 'ok' }
its('State') { should cmp 'Running' }
its('ExitCode') { should cmp 0 }
its('DisplayName') { should eq 'Windows Remote Management (WS-Management)'}
end
Примеры
Следующие примеры показывают, как использовать этот ресурс аудита Chef InSpec.
Проверка политики смены паролей
describe wmi({
class: 'RSOP_SecuritySettingNumeric',
namespace: 'root\\rsop\\computer',
filter: 'KeyName = \'MinimumPasswordAge\' And precedence=1'
}) do
its('Setting') { should eq 1 }
end
Проверка возможности анонимного пользователя запросить Local Security Authority (LSA)
describe wmi({
namespace: 'root\\rsop\\computer',
query: "SELECT Setting FROM RSOP_SecuritySettingBoolean WHERE KeyName='LSAAnonymousNameLookup' AND Precedence=1"
}) do
its('Setting') { should eq false }
end
Сопоставители
Полный список доступных сопоставителей вы найдете на нашей странице сопоставителей.
© 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/wmi/