Spec-Zone.ru › Chef 18

postgres_session ресурс

[править на GitHub]

Используйте 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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API