SlideShare a Scribd company logo
Copyright © 2015 NTT DATA Corporation
2015年5月30日
NTTデータ 基盤システム事業本部
石井愛弓
PostgreSQL監査
PostgreSQLアンカンファレンス@東京 
2015/5
2Copyright © 2015 NTT DATA Corporation
目次
•  監査とは
•  PostgreSQLの監査
•  監査の課題
•  pg_audit紹介
•  まとめ
3Copyright © 2015 NTT DATA Corporation
監査とは
実際の業務が遵守すべきルールに則っているかどうかを、客観的に検証・指摘
する業務。
DBにおいては、不正アクセス・不正操作が無かったかどうか等の判断
を行う
•  監査情報は、アクセス/操作ログ。
•  不正なログインをしていないか?
•  重要な情報(クレジットカード情報等)を不正に抜き出していないか?…
etc
→ログは、部外者が閲覧や改ざんできないよう保護を行う。
・ログを確実にとること
・ログが改ざんされないようにすること
[DBの監査で重要なこと]
Copyright © 2015 NTT DATA Corporation 4
PostgreSQL監査
5Copyright © 2015 NTT DATA Corporation
どのタイミングでログを出力すべきか?
項目 必要な設定
1 ログイン log_connections=on
2
ログアウト log_disconnections =on
3
DBオブジェクト(テーブル等)の作成、
変更
log_statement=ddl
4
DBオブジェクト(テーブル等)の参照、
更新
log_statement=all
5 設定ファイル(postgresql.conf)の変更 OSでの監査が必要。
=# CREATE TABLE test (id integer, name varchar);
LOG: statement: CREATE TABLE test (id integer, name varchar);
6Copyright © 2015 NTT DATA Corporation
監査で必要な情報は何か?(log_statement以外の項目)
1 いつ タイムスタンプ
2 だれが データベースユーザ名
3 どこから 接続元IP/接続元ホスト名
4 どのデータベースに データベース名
5 どんな処理をして コマンドタグ
6
どのような結果になっ
たか
SQLSTATE エラーコード
7Copyright © 2015 NTT DATA Corporation
log_line_prefixによる情報の取得
postgresql.conf にて
log_line_prefix = ‘%t  %u  %h  %d  %i  %e‘
2015-05-19 15:21:37 JST  hoge  [local]  postgres  authentication 00000
タイムスタンプ ユーザ ホスト DB コマンドタグ エラーコード
8Copyright © 2015 NTT DATA Corporation
(参考)log_line_prefix
エスケープ 効果 セッションのみ
%a アプリケーション名 ○
%u ユーザ名 ○
%d データベース名 ○
%r 遠隔ホスト名、またはIPアドレス、およびポート番号 ○
%h 遠隔ホスト名、またはIPアドレス ○
%p プロセス識別子 ×
%t ミリ秒無しのタイムスタンプ ×
%m ミリ秒付きタイムスタンプ ×
%i コマンドタグ。セッションの現在のコマンド種類 ○
%e SQLSTATE エラーコード ×
%c セッションID。下記参照 ×
%l
各セッションまたは各プロセスのログ行の番号。1から始まりま
す。
×
%s プロセスの開始タイムスタンプ ×
%v 仮想トランザクションID(backendID/localXID) ×
%x トランザクションID (未割り当ての場合は0) ×
%q
何も出力しません。 非セッションプロセスではこのエスケープ以
降の出力を停止します。 セッションプロセスでは無視されます。
×
%% %文字そのもの ×
9Copyright © 2015 NTT DATA Corporation
一通りの監査をするための設定のまとめ
ログイン/ログアウト、DBオブジェクトの参照の監査が必要な場合、
少なくとも以下の設定を実施する。
postgresql.conf
•  log_line_prefix = ‘%t  %u  %h  %d  %i  %e‘
•  log_connections=on
•  log_disconnections =on
•  log_statement=all
Copyright © 2015 NTT DATA Corporation 1
監査の課題とpg_audit
11Copyright © 2015 NTT DATA Corporation
監査におけるPostgreSQLの現在の課題の例
•  テーブル単位、列単位で監査できない
•  大規模データベースでは、監査する対象を絞り込まないと、ログ出力量
が大きくなってしまう
•  監査対象のSQLを細かく指定(READのみ、FUNCTIONのみ等)できない
•  View、トリガ、doコマンド、PL/pgSQLの内部のコマンドが監査がで
きない
•  ログで出力されるテーブル名にスキーマ名が修飾されない
•  別スキーマの同名テーブルと区別できない
12Copyright © 2015 NTT DATA Corporation
そこで、pg_audit
2015/05 、pg_auditがcontribモジュールとしてコミットされた。(PostgreSQL9.5)
 監査機能を充実させるためのモジュール
•  詳細なログ出力
•  テーブル単位、列単位監査
•  トリガ等内部処理のログ取得
[インストール方法]
$ make
# make install
shared_preload_libraries =‘pg_audit’  
5/29、revertされました。
13Copyright © 2015 NTT DATA Corporation
pg_audit紹介:ログの種類
•  SESSIONログ
•  細かい粒度で出力するログを設定できる(DDL, FUNCTION, MISC,
READ, ROLE, WRITE, NONE, ALL)
•  テーブルのスキーマ名を取得できる
•  View、トリガ、doコマンド、PL/pgSQLの内部コマンドのログも取得で
きる
•  OBJECTログ
•  OBJECT(テーブル、列)ごとにログを出力できる
→必要な機能を持つ一方のログ、または両方のログを選んで、監査を実施で
きる。
<ケース①>
ü  すべてのDDLをログ出力したい。
ü  credit_cardテーブルは、SELECTもログ出力したい。
pg_audit.log = ‘ddl’
pg_audit.role = ‘audit_user’
=# GRANT ALL ON credit_card TO audit_user;
コマンド
の種類
ごと
オブジェ
クトごと
14Copyright © 2015 NTT DATA Corporation
pg_audit紹介:ログの中身①
LOG: AUDIT: SESSION,8,1,READ,SELECT,,,"select * from
test,test2;",<none>
LOG: AUDIT: OBJECT,8,1,READ,SELECT,TABLE,public.test, 
<previously logged>,<previously logged>
LOG: AUDIT: <ログの種類>, <statementID>, <substatementID>,
<コマンドの種類1>, <コマンドの種類2>,<オブジェクトの種類>, <オブジェクト
名(スキーマ名付)>,<コマンド>,<パラメータ>
postgres=# select * from test,test2;
statementID:メイン文が発行されるごとに振られる連番。コネクション開始時は1。
substatementID:メイン文の中で、サブ文に振られる連番。最初は1。(関数使用時などは2,3と
続く)
LOG: statement: select * from test,test2;
↑log_statementよりも、より詳細な情報が得られる。
15Copyright © 2015 NTT DATA Corporation
pg_audit紹介:ログの中身②
postgres=# SELECT hoge();
LOG: AUDIT: SESSION,19,1,READ,SELECT,,,SELECT hoge();,<none>
LOG: AUDIT: SESSION,19,2,FUNCTION,EXECUTE,FUNCTION,public.hoge,SELECT
hoge2();,<none>
LOG: AUDIT: SESSION,19,3,MISC,REINDEX,,, REINDEX INDEX test2_idx ;SELECT
count(*) from test2;,<none>
LOG: AUDIT: OBJECT,19,4,READ,SELECT,TABLE,public.test2, REINDEX INDEX
test2_idx ;SELECT count(*) from test2;,<none>
LOG: AUDIT: SESSION,19,4,READ,SELECT,TABLE,public.test2,<previously
logged>,<previously logged>
CREATE FUNCTION hoge () returns bigint AS $$
REINDEX INDEX test2_idx;
SELECT count(*) from test2;
$$language 'sql';
① ②
④
③
LOG: statement: SELECT hoge();
16Copyright © 2015 NTT DATA Corporation
pg_audit紹介:その他いろいろな設定
パラメータ
取りうる値 デフォル
ト
説明
pg_audit.log
DDL, FUNCTION,
MISC, READ, ROLE,
WRITE, NONE, ALL
none 監査するSQL等の種類
pg_audit.role ユーザ名の文字列 “” 監査用ユーザを指定する。
pg_audit.log_catalog bool true pg_catalogのログを出力するか?
pg_audit.log_level
LOG, NOTICE,
WARNING, ERRORな
どログレベル各種
LOG リグレッションテストの際にNOTICEに
してクライアントにログ出力する。そ
れ以外はLOGなどでサーバログにて出
力する。
pg_audit.log_parameter
bool false PreparedStatementのパラメータをログ
に出力するか?
pg_audit.log_relation
bool false SESSIONログをリレーションごとに出
したい場合はtrue
→select * from test, test2のとき、2つ
出すか、1つだすか?
pg_audit.log_statement_o
nce
bool false OBJECTログとSESSIONログで同じ
SQLのログを残す際に、共通となる部
分を繰り返し表示するかどうか(また
はpreviously loggedとして省略する
か)
17Copyright © 2015 NTT DATA Corporation
pg_auditを使ってもできないことの例
•  スーパーユーザの監査
•  SET文等でパラメータを変更しログを出さないようにする、など
•  OSユーザの監査
•  postgresql.confの書き換えてログを出さないようにする、など
18Copyright © 2015 NTT DATA Corporation
pg_audit使いどころ まとめ
•  テーブル単位、列単位で監査したい
•  監査対象のSQLを細かく指定したい(READのみ,FUNCTIONのみ等)
•  View, トリガ, doコマンド, PL/pgSQLの内部の処理を監査したい
•  テーブル名がスキーマ名で修飾されるようにしたい
19Copyright © 2015 NTT DATA Corporation
PostgreSQL監査まとめ
•  PostgreSQLの監査で、できること・できないことを知る
•  必要に応じて、外部モジュールやOSのログと併せて、監査を行う
OS
PostgreSQL
外部モジュール
Copyright © 2011 NTT DATA Corporation
Copyright © 2015 NTT DATA Corporation

More Related Content

What's hot

世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)
世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)
世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
NTT DATA Technology & Innovation
 
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
NTT DATA Technology & Innovation
 
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングまずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニング
Kosuke Kida
 
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
Masahiko Sawada
 
PostgreSQLアーキテクチャ入門
PostgreSQLアーキテクチャ入門PostgreSQLアーキテクチャ入門
PostgreSQLアーキテクチャ入門
Uptime Technologies LLC (JP)
 
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLコミュニティに飛び込もう
PostgreSQLコミュニティに飛び込もうPostgreSQLコミュニティに飛び込もう
PostgreSQLコミュニティに飛び込もう
NTT DATA OSS Professional Services
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
NTT DATA Technology & Innovation
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題
NTT DATA OSS Professional Services
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
Hironobu Suzuki
 
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
Miki Shimogai
 
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 

What's hot (20)

世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)
世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)
世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
 
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
 
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングまずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニング
 
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
 
PostgreSQLアーキテクチャ入門
PostgreSQLアーキテクチャ入門PostgreSQLアーキテクチャ入門
PostgreSQLアーキテクチャ入門
 
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQLコミュニティに飛び込もう
PostgreSQLコミュニティに飛び込もうPostgreSQLコミュニティに飛び込もう
PostgreSQLコミュニティに飛び込もう
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
 
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
 
PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
 
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
 
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
 

Similar to PostgreSQL監査

PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラPostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
NTT DATA OSS Professional Services
 
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
Shigeru Hanada
 
クラウドではじめるリアルタイムデータ分析 #seccamp
クラウドではじめるリアルタイムデータ分析 #seccampクラウドではじめるリアルタイムデータ分析 #seccamp
クラウドではじめるリアルタイムデータ分析 #seccamp
Masahiro NAKAYAMA
 
Azure Antenna はじめての Azure Data Lake
Azure Antenna はじめての Azure Data LakeAzure Antenna はじめての Azure Data Lake
Azure Antenna はじめての Azure Data Lake
Hideo Takagi
 
そんな監視で大丈夫か?
そんな監視で大丈夫か?そんな監視で大丈夫か?
そんな監視で大丈夫か?
Keiji Kamebuchi
 
シンプルでシステマチックな Oracle Database, Exadata 性能分析
シンプルでシステマチックな Oracle Database, Exadata 性能分析シンプルでシステマチックな Oracle Database, Exadata 性能分析
シンプルでシステマチックな Oracle Database, Exadata 性能分析
Yohei Azekatsu
 
[社内勉強会]サクっと業務でつくったログ/データ調査環境(re:dash ☓ AWS Athena ☓ embulk)
[社内勉強会]サクっと業務でつくったログ/データ調査環境(re:dash ☓ AWS Athena ☓ embulk)[社内勉強会]サクっと業務でつくったログ/データ調査環境(re:dash ☓ AWS Athena ☓ embulk)
[社内勉強会]サクっと業務でつくったログ/データ調査環境(re:dash ☓ AWS Athena ☓ embulk)
Takahiro Moteki
 
OSC2019 LT 運用レコメンドプラットフォーム開発におけるマイクロサービス構成の実現
OSC2019 LT 運用レコメンドプラットフォーム開発におけるマイクロサービス構成の実現OSC2019 LT 運用レコメンドプラットフォーム開発におけるマイクロサービス構成の実現
OSC2019 LT 運用レコメンドプラットフォーム開発におけるマイクロサービス構成の実現
Daisuke Ikeda
 
Cuto紹介資料
Cuto紹介資料Cuto紹介資料
Cuto紹介資料
UNIRITA
 
hbstudy#06
hbstudy#06hbstudy#06
hbstudy#06
tsakaguchi
 
Logにまつわるエトセトラ
LogにまつわるエトセトラLogにまつわるエトセトラ
Logにまつわるエトセトラ
leverages_event
 
INF-010_そのログ、ただ集めているだけではありませんか? ~IT 運用の世界にも Big Data の活用を!~
INF-010_そのログ、ただ集めているだけではありませんか? ~IT 運用の世界にも Big Data の活用を!~INF-010_そのログ、ただ集めているだけではありませんか? ~IT 運用の世界にも Big Data の活用を!~
INF-010_そのログ、ただ集めているだけではありませんか? ~IT 運用の世界にも Big Data の活用を!~
decode2016
 
実践で学んだLog Analytics
実践で学んだLog Analytics実践で学んだLog Analytics
実践で学んだLog Analytics
Tetsuya Odashima
 
Domoによるモニタリングオートメーション
DomoによるモニタリングオートメーションDomoによるモニタリングオートメーション
Domoによるモニタリングオートメーション
Taro Yoshioka
 
情報システムの性能マネジメントについて
情報システムの性能マネジメントについて情報システムの性能マネジメントについて
情報システムの性能マネジメントについて
Takashi Natsume
 
PostgreSQL9.3新機能紹介
PostgreSQL9.3新機能紹介PostgreSQL9.3新機能紹介
PostgreSQL9.3新機能紹介
NTT DATA OSS Professional Services
 
Embulkを活用したログ管理システム
Embulkを活用したログ管理システムEmbulkを活用したログ管理システム
Embulkを活用したログ管理システム
Akihiro Ikezoe
 
Visual Studio App Centerで始めるCI/CD(iOS)
Visual Studio App Centerで始めるCI/CD(iOS)Visual Studio App Centerで始めるCI/CD(iOS)
Visual Studio App Centerで始めるCI/CD(iOS)
Shinya Nakajima
 
DB2の使い方 管理ツール編
DB2の使い方 管理ツール編DB2の使い方 管理ツール編
DB2の使い方 管理ツール編
Akira Shimosako
 

Similar to PostgreSQL監査 (20)

PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラPostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
 
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
PostgreSQLのトラブルシューティング@第5回中国地方DB勉強会
 
クラウドではじめるリアルタイムデータ分析 #seccamp
クラウドではじめるリアルタイムデータ分析 #seccampクラウドではじめるリアルタイムデータ分析 #seccamp
クラウドではじめるリアルタイムデータ分析 #seccamp
 
Azure Antenna はじめての Azure Data Lake
Azure Antenna はじめての Azure Data LakeAzure Antenna はじめての Azure Data Lake
Azure Antenna はじめての Azure Data Lake
 
そんな監視で大丈夫か?
そんな監視で大丈夫か?そんな監視で大丈夫か?
そんな監視で大丈夫か?
 
シンプルでシステマチックな Oracle Database, Exadata 性能分析
シンプルでシステマチックな Oracle Database, Exadata 性能分析シンプルでシステマチックな Oracle Database, Exadata 性能分析
シンプルでシステマチックな Oracle Database, Exadata 性能分析
 
[社内勉強会]サクっと業務でつくったログ/データ調査環境(re:dash ☓ AWS Athena ☓ embulk)
[社内勉強会]サクっと業務でつくったログ/データ調査環境(re:dash ☓ AWS Athena ☓ embulk)[社内勉強会]サクっと業務でつくったログ/データ調査環境(re:dash ☓ AWS Athena ☓ embulk)
[社内勉強会]サクっと業務でつくったログ/データ調査環境(re:dash ☓ AWS Athena ☓ embulk)
 
OSC2019 LT 運用レコメンドプラットフォーム開発におけるマイクロサービス構成の実現
OSC2019 LT 運用レコメンドプラットフォーム開発におけるマイクロサービス構成の実現OSC2019 LT 運用レコメンドプラットフォーム開発におけるマイクロサービス構成の実現
OSC2019 LT 運用レコメンドプラットフォーム開発におけるマイクロサービス構成の実現
 
Cuto紹介資料
Cuto紹介資料Cuto紹介資料
Cuto紹介資料
 
hbstudy#06
hbstudy#06hbstudy#06
hbstudy#06
 
Logにまつわるエトセトラ
LogにまつわるエトセトラLogにまつわるエトセトラ
Logにまつわるエトセトラ
 
INF-010_そのログ、ただ集めているだけではありませんか? ~IT 運用の世界にも Big Data の活用を!~
INF-010_そのログ、ただ集めているだけではありませんか? ~IT 運用の世界にも Big Data の活用を!~INF-010_そのログ、ただ集めているだけではありませんか? ~IT 運用の世界にも Big Data の活用を!~
INF-010_そのログ、ただ集めているだけではありませんか? ~IT 運用の世界にも Big Data の活用を!~
 
実践で学んだLog Analytics
実践で学んだLog Analytics実践で学んだLog Analytics
実践で学んだLog Analytics
 
Domoによるモニタリングオートメーション
DomoによるモニタリングオートメーションDomoによるモニタリングオートメーション
Domoによるモニタリングオートメーション
 
情報システムの性能マネジメントについて
情報システムの性能マネジメントについて情報システムの性能マネジメントについて
情報システムの性能マネジメントについて
 
Fluentd casual
Fluentd casualFluentd casual
Fluentd casual
 
PostgreSQL9.3新機能紹介
PostgreSQL9.3新機能紹介PostgreSQL9.3新機能紹介
PostgreSQL9.3新機能紹介
 
Embulkを活用したログ管理システム
Embulkを活用したログ管理システムEmbulkを活用したログ管理システム
Embulkを活用したログ管理システム
 
Visual Studio App Centerで始めるCI/CD(iOS)
Visual Studio App Centerで始めるCI/CD(iOS)Visual Studio App Centerで始めるCI/CD(iOS)
Visual Studio App Centerで始めるCI/CD(iOS)
 
DB2の使い方 管理ツール編
DB2の使い方 管理ツール編DB2の使い方 管理ツール編
DB2の使い方 管理ツール編
 

Recently uploaded

単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 

Recently uploaded (14)

単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 

PostgreSQL監査

  • 1. Copyright © 2015 NTT DATA Corporation 2015年5月30日 NTTデータ 基盤システム事業本部 石井愛弓 PostgreSQL監査 PostgreSQLアンカンファレンス@東京  2015/5
  • 2. 2Copyright © 2015 NTT DATA Corporation 目次 •  監査とは •  PostgreSQLの監査 •  監査の課題 •  pg_audit紹介 •  まとめ
  • 3. 3Copyright © 2015 NTT DATA Corporation 監査とは 実際の業務が遵守すべきルールに則っているかどうかを、客観的に検証・指摘 する業務。 DBにおいては、不正アクセス・不正操作が無かったかどうか等の判断 を行う •  監査情報は、アクセス/操作ログ。 •  不正なログインをしていないか? •  重要な情報(クレジットカード情報等)を不正に抜き出していないか?… etc →ログは、部外者が閲覧や改ざんできないよう保護を行う。 ・ログを確実にとること ・ログが改ざんされないようにすること [DBの監査で重要なこと]
  • 4. Copyright © 2015 NTT DATA Corporation 4 PostgreSQL監査
  • 5. 5Copyright © 2015 NTT DATA Corporation どのタイミングでログを出力すべきか? 項目 必要な設定 1 ログイン log_connections=on 2 ログアウト log_disconnections =on 3 DBオブジェクト(テーブル等)の作成、 変更 log_statement=ddl 4 DBオブジェクト(テーブル等)の参照、 更新 log_statement=all 5 設定ファイル(postgresql.conf)の変更 OSでの監査が必要。 =# CREATE TABLE test (id integer, name varchar); LOG: statement: CREATE TABLE test (id integer, name varchar);
  • 6. 6Copyright © 2015 NTT DATA Corporation 監査で必要な情報は何か?(log_statement以外の項目) 1 いつ タイムスタンプ 2 だれが データベースユーザ名 3 どこから 接続元IP/接続元ホスト名 4 どのデータベースに データベース名 5 どんな処理をして コマンドタグ 6 どのような結果になっ たか SQLSTATE エラーコード
  • 7. 7Copyright © 2015 NTT DATA Corporation log_line_prefixによる情報の取得 postgresql.conf にて log_line_prefix = ‘%t  %u  %h  %d  %i  %e‘ 2015-05-19 15:21:37 JST  hoge  [local]  postgres  authentication 00000 タイムスタンプ ユーザ ホスト DB コマンドタグ エラーコード
  • 8. 8Copyright © 2015 NTT DATA Corporation (参考)log_line_prefix エスケープ 効果 セッションのみ %a アプリケーション名 ○ %u ユーザ名 ○ %d データベース名 ○ %r 遠隔ホスト名、またはIPアドレス、およびポート番号 ○ %h 遠隔ホスト名、またはIPアドレス ○ %p プロセス識別子 × %t ミリ秒無しのタイムスタンプ × %m ミリ秒付きタイムスタンプ × %i コマンドタグ。セッションの現在のコマンド種類 ○ %e SQLSTATE エラーコード × %c セッションID。下記参照 × %l 各セッションまたは各プロセスのログ行の番号。1から始まりま す。 × %s プロセスの開始タイムスタンプ × %v 仮想トランザクションID(backendID/localXID) × %x トランザクションID (未割り当ての場合は0) × %q 何も出力しません。 非セッションプロセスではこのエスケープ以 降の出力を停止します。 セッションプロセスでは無視されます。 × %% %文字そのもの ×
  • 9. 9Copyright © 2015 NTT DATA Corporation 一通りの監査をするための設定のまとめ ログイン/ログアウト、DBオブジェクトの参照の監査が必要な場合、 少なくとも以下の設定を実施する。 postgresql.conf •  log_line_prefix = ‘%t  %u  %h  %d  %i  %e‘ •  log_connections=on •  log_disconnections =on •  log_statement=all
  • 10. Copyright © 2015 NTT DATA Corporation 1 監査の課題とpg_audit
  • 11. 11Copyright © 2015 NTT DATA Corporation 監査におけるPostgreSQLの現在の課題の例 •  テーブル単位、列単位で監査できない •  大規模データベースでは、監査する対象を絞り込まないと、ログ出力量 が大きくなってしまう •  監査対象のSQLを細かく指定(READのみ、FUNCTIONのみ等)できない •  View、トリガ、doコマンド、PL/pgSQLの内部のコマンドが監査がで きない •  ログで出力されるテーブル名にスキーマ名が修飾されない •  別スキーマの同名テーブルと区別できない
  • 12. 12Copyright © 2015 NTT DATA Corporation そこで、pg_audit 2015/05 、pg_auditがcontribモジュールとしてコミットされた。(PostgreSQL9.5)  監査機能を充実させるためのモジュール •  詳細なログ出力 •  テーブル単位、列単位監査 •  トリガ等内部処理のログ取得 [インストール方法] $ make # make install shared_preload_libraries =‘pg_audit’   5/29、revertされました。
  • 13. 13Copyright © 2015 NTT DATA Corporation pg_audit紹介:ログの種類 •  SESSIONログ •  細かい粒度で出力するログを設定できる(DDL, FUNCTION, MISC, READ, ROLE, WRITE, NONE, ALL) •  テーブルのスキーマ名を取得できる •  View、トリガ、doコマンド、PL/pgSQLの内部コマンドのログも取得で きる •  OBJECTログ •  OBJECT(テーブル、列)ごとにログを出力できる →必要な機能を持つ一方のログ、または両方のログを選んで、監査を実施で きる。 <ケース①> ü  すべてのDDLをログ出力したい。 ü  credit_cardテーブルは、SELECTもログ出力したい。 pg_audit.log = ‘ddl’ pg_audit.role = ‘audit_user’ =# GRANT ALL ON credit_card TO audit_user; コマンド の種類 ごと オブジェ クトごと
  • 14. 14Copyright © 2015 NTT DATA Corporation pg_audit紹介:ログの中身① LOG: AUDIT: SESSION,8,1,READ,SELECT,,,"select * from test,test2;",<none> LOG: AUDIT: OBJECT,8,1,READ,SELECT,TABLE,public.test,  <previously logged>,<previously logged> LOG: AUDIT: <ログの種類>, <statementID>, <substatementID>, <コマンドの種類1>, <コマンドの種類2>,<オブジェクトの種類>, <オブジェクト 名(スキーマ名付)>,<コマンド>,<パラメータ> postgres=# select * from test,test2; statementID:メイン文が発行されるごとに振られる連番。コネクション開始時は1。 substatementID:メイン文の中で、サブ文に振られる連番。最初は1。(関数使用時などは2,3と 続く) LOG: statement: select * from test,test2; ↑log_statementよりも、より詳細な情報が得られる。
  • 15. 15Copyright © 2015 NTT DATA Corporation pg_audit紹介:ログの中身② postgres=# SELECT hoge(); LOG: AUDIT: SESSION,19,1,READ,SELECT,,,SELECT hoge();,<none> LOG: AUDIT: SESSION,19,2,FUNCTION,EXECUTE,FUNCTION,public.hoge,SELECT hoge2();,<none> LOG: AUDIT: SESSION,19,3,MISC,REINDEX,,, REINDEX INDEX test2_idx ;SELECT count(*) from test2;,<none> LOG: AUDIT: OBJECT,19,4,READ,SELECT,TABLE,public.test2, REINDEX INDEX test2_idx ;SELECT count(*) from test2;,<none> LOG: AUDIT: SESSION,19,4,READ,SELECT,TABLE,public.test2,<previously logged>,<previously logged> CREATE FUNCTION hoge () returns bigint AS $$ REINDEX INDEX test2_idx; SELECT count(*) from test2; $$language 'sql'; ① ② ④ ③ LOG: statement: SELECT hoge();
  • 16. 16Copyright © 2015 NTT DATA Corporation pg_audit紹介:その他いろいろな設定 パラメータ 取りうる値 デフォル ト 説明 pg_audit.log DDL, FUNCTION, MISC, READ, ROLE, WRITE, NONE, ALL none 監査するSQL等の種類 pg_audit.role ユーザ名の文字列 “” 監査用ユーザを指定する。 pg_audit.log_catalog bool true pg_catalogのログを出力するか? pg_audit.log_level LOG, NOTICE, WARNING, ERRORな どログレベル各種 LOG リグレッションテストの際にNOTICEに してクライアントにログ出力する。そ れ以外はLOGなどでサーバログにて出 力する。 pg_audit.log_parameter bool false PreparedStatementのパラメータをログ に出力するか? pg_audit.log_relation bool false SESSIONログをリレーションごとに出 したい場合はtrue →select * from test, test2のとき、2つ 出すか、1つだすか? pg_audit.log_statement_o nce bool false OBJECTログとSESSIONログで同じ SQLのログを残す際に、共通となる部 分を繰り返し表示するかどうか(また はpreviously loggedとして省略する か)
  • 17. 17Copyright © 2015 NTT DATA Corporation pg_auditを使ってもできないことの例 •  スーパーユーザの監査 •  SET文等でパラメータを変更しログを出さないようにする、など •  OSユーザの監査 •  postgresql.confの書き換えてログを出さないようにする、など
  • 18. 18Copyright © 2015 NTT DATA Corporation pg_audit使いどころ まとめ •  テーブル単位、列単位で監査したい •  監査対象のSQLを細かく指定したい(READのみ,FUNCTIONのみ等) •  View, トリガ, doコマンド, PL/pgSQLの内部の処理を監査したい •  テーブル名がスキーマ名で修飾されるようにしたい
  • 19. 19Copyright © 2015 NTT DATA Corporation PostgreSQL監査まとめ •  PostgreSQLの監査で、できること・できないことを知る •  必要に応じて、外部モジュールやOSのログと併せて、監査を行う OS PostgreSQL 外部モジュール
  • 20. Copyright © 2011 NTT DATA Corporation Copyright © 2015 NTT DATA Corporation