3.6. 履歴データベースへの読み取り専用アクセスの許可
編集を許可せずに履歴データベースへのアクセスを許可するには、ovirt_engine_history
データベースにログインして読み取ることができる読み取り専用の PostgreSQL ユーザーを作成する必要があります。この手順は、履歴データベースがインストールされているシステムで実行する必要があります。
履歴データベースへの読み取り専用アクセスの許可
root として postgres ユーザーシェルにログインします。
# su - postgres
履歴データベースへの読み取り専用アクセスを許可するユーザーを作成します。
# psql -U postgres -c "CREATE ROLE username WITH LOGIN ENCRYPTED PASSWORD 'password';" -d ovirt_engine_history
新しく作成されたユーザーに、履歴データベースに接続するための権限を付与します。
# psql -U postgres -c "GRANT CONNECT ON DATABASE ovirt_engine_history TO username;"
新しく作成されたユーザーに
public
スキーマの使用を許可します。# psql -U postgres -c "GRANT USAGE ON SCHEMA public TO username;" ovirt_engine_history
新しく作成されたユーザーに付与される残りの権限を生成し、ファイルに保存します。
# psql -U postgres -c "SELECT 'GRANT SELECT ON ' || relname || ' TO username;' FROM pg_class JOIN pg_namespace ON pg_namespace.oid = pg_class.relnamespace WHERE nspname = 'public' AND relkind IN ('r', 'v');" --pset=tuples_only=on ovirt_engine_history > grant.sql
前の手順で作成したファイルを使用して、新たに作成したユーザーに権限を付与します。
# psql -U postgres -f grant.sql ovirt_engine_history
新しく作成されたユーザーに権限を付与するために使用したファイルを削除します。
# rm grant.sql
- Ctrl+d を押して postgres ユーザーシェルを終了します。
新しく作成されたユーザーの次の行を
local all all
で始まる行の前の/var/lib/pgsql/data/pg_hba.conf
に追加します。# TYPE DATABASE USER ADDRESS METHOD host ovirt_engine_history username 0.0.0.0/0 md5 host ovirt_engine_history username ::0/0 md5 local all all peer
PostgreSQL サービスをリロードします。
# systemctl reload postgresql
読み取り専用ユーザーのアクセス権限をテストするには、以下を実行します。
# su - postgres -c 'psql -U username ovirt_engine_history -h localhost' Password for user username: psql (9.2.23) Type "help" for help. ovirt_engine_history=>
-
ovirt_engine_history
データベースを終了するには、\q
を入力します。
ovirt_engine_history
データベースのテーブルとビューに対する読み取り専用ユーザーの SELECT
ステートメントは成功しますが、変更は失敗します。