Ресурс 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/