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