postgres_session ресурс
Используйте postgres_session ресурс проверки аудита Chef InSpec для тестирования SQL-команд, выполняемых против базы данных PostgreSQL.
Доступность
Установка
Этот ресурс распространяется вместе с самим Chef InSpec. Вы можете использовать его автоматически.
Версия
Этот ресурс стал доступен впервые в версии v1.0.0 InSpec.
Синтаксис
Блок ресурса postgres_session объявляет имя пользователя и пароль для сессии, а затем команду, которую нужно выполнить:
# Create a PostgreSQL session:
sql = postgres_session('username', 'password', 'host', 'port', 'socketpath')
# default values:
# username: 'postgres'
# host: 'localhost'
# port: 5432
# socketpath (optional): nil
# Run an SQL query with an optional database to execute
sql.query('sql_query', ['database_name'])`
Полный пример:
sql = postgres_session('username', 'password', 'host', 'port', 'socketpath')
describe sql.query('SELECT * FROM pg_shadow WHERE passwd IS NULL;') do
its('output') { should eq '' }
end
где
-
its('output') { should eq '' }сравнивает результаты запроса с ожидаемым результатом в тесте -
socketpath— это необязательный параметр. Используйтеsocketpathдля установления сокет-соединения с Postgres, указав один из путей Unix-доменных сокетов Postgres. Поддерживается только на платформах на основе Unix.
Свойства
output
Свойство output тестирует результаты запроса:
its('output') { should eq(/^0/) }
Примеры
Следующие примеры показывают, как использовать этот ресурс проверки аудита Chef InSpec.
Тестирование пароля PostgreSQL shadow
sql = postgres_session('my_user', 'password', '192.168.1.2', 5432)
describe sql.query('SELECT * FROM pg_shadow WHERE passwd IS NULL;', ['testdb']) do
its('output') { should eq('') }
end
Тестирование на наличие рискованных записей в базе данных
describe postgres_session('my_user', 'password').query('SELECT count (*)
FROM pg_language
WHERE lanpltrusted = \'f\'
AND lanname!=\'internal\'
AND lanname!=\'c\';', ['postgres']) do
its('output') { should eq '0' }
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/postgres_session/