Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Ohyama Masanori
PPTX, PDF
24,072 views
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
PGCon Japan 2015 の発表資料です。
Software
◦
Read more
8
Save
Share
Embed
Embed presentation
Download
Downloaded 61 times
1
/ 70
2
/ 70
3
/ 70
4
/ 70
5
/ 70
6
/ 70
7
/ 70
8
/ 70
9
/ 70
10
/ 70
11
/ 70
12
/ 70
13
/ 70
14
/ 70
15
/ 70
16
/ 70
17
/ 70
Most read
18
/ 70
19
/ 70
20
/ 70
21
/ 70
22
/ 70
23
/ 70
24
/ 70
25
/ 70
26
/ 70
27
/ 70
28
/ 70
29
/ 70
30
/ 70
Most read
31
/ 70
32
/ 70
33
/ 70
34
/ 70
35
/ 70
36
/ 70
37
/ 70
38
/ 70
39
/ 70
Most read
40
/ 70
41
/ 70
42
/ 70
43
/ 70
44
/ 70
45
/ 70
46
/ 70
47
/ 70
48
/ 70
49
/ 70
50
/ 70
51
/ 70
52
/ 70
53
/ 70
54
/ 70
55
/ 70
56
/ 70
57
/ 70
58
/ 70
59
/ 70
60
/ 70
61
/ 70
62
/ 70
63
/ 70
64
/ 70
65
/ 70
66
/ 70
67
/ 70
68
/ 70
69
/ 70
70
/ 70
More Related Content
PPTX
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
by
NTT DATA Technology & Innovation
PDF
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
by
NTT DATA Technology & Innovation
PDF
Vacuum徹底解説
by
Masahiko Sawada
PDF
アーキテクチャから理解するPostgreSQLのレプリケーション
by
Masahiko Sawada
PPTX
iostat await svctm の 見かた、考え方
by
歩 柴田
PPTX
Oracle Database Vaultのご紹介
by
オラクルエンジニア通信
PPTX
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
by
NTT DATA Technology & Innovation
PDF
Oracle Integration Cloud 概要(20200507版)
by
オラクルエンジニア通信
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
by
NTT DATA Technology & Innovation
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
by
NTT DATA Technology & Innovation
Vacuum徹底解説
by
Masahiko Sawada
アーキテクチャから理解するPostgreSQLのレプリケーション
by
Masahiko Sawada
iostat await svctm の 見かた、考え方
by
歩 柴田
Oracle Database Vaultのご紹介
by
オラクルエンジニア通信
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
by
NTT DATA Technology & Innovation
Oracle Integration Cloud 概要(20200507版)
by
オラクルエンジニア通信
What's hot
PPTX
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
by
NTT DATA Technology & Innovation
PPTX
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
by
NTT DATA Technology & Innovation
PDF
AWSのログ管理ベストプラクティス
by
Akihiro Kuwano
PDF
DevOps with Database on AWS
by
Amazon Web Services Japan
PDF
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
by
Amazon Web Services Japan
PDF
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
by
NTT DATA Technology & Innovation
PDF
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
by
Amazon Web Services Japan
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
by
Hiroshi Tokumaru
PDF
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
by
Noritaka Sekiyama
PDF
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
by
NTT DATA Technology & Innovation
PDF
pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)
by
NTT DATA Technology & Innovation
PDF
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
by
Amazon Web Services Japan
PDF
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
by
Recruit Technologies
PPTX
がっつりMongoDB事例紹介
by
Tetsutaro Watanabe
PPTX
Redisの特徴と活用方法について
by
Yuji Otani
PDF
Fluentdのお勧めシステム構成パターン
by
Kentaro Yoshida
PDF
KafkaとAWS Kinesisの比較
by
Yoshiyasu SAEKI
PDF
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
by
NTT DATA OSS Professional Services
PDF
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
by
都元ダイスケ Miyamoto
PDF
Zabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/Fall
by
Atsushi Tanaka
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
by
NTT DATA Technology & Innovation
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
by
NTT DATA Technology & Innovation
AWSのログ管理ベストプラクティス
by
Akihiro Kuwano
DevOps with Database on AWS
by
Amazon Web Services Japan
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
by
Amazon Web Services Japan
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
by
NTT DATA Technology & Innovation
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
by
Amazon Web Services Japan
SPAセキュリティ入門~PHP Conference Japan 2021
by
Hiroshi Tokumaru
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
by
Noritaka Sekiyama
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
by
NTT DATA Technology & Innovation
pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)
by
NTT DATA Technology & Innovation
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
by
Amazon Web Services Japan
RDB技術者のためのNoSQLガイド NoSQLの必要性と位置づけ
by
Recruit Technologies
がっつりMongoDB事例紹介
by
Tetsutaro Watanabe
Redisの特徴と活用方法について
by
Yuji Otani
Fluentdのお勧めシステム構成パターン
by
Kentaro Yoshida
KafkaとAWS Kinesisの比較
by
Yoshiyasu SAEKI
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
by
NTT DATA OSS Professional Services
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
by
都元ダイスケ Miyamoto
Zabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/Fall
by
Atsushi Tanaka
Similar to 監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
PDF
PostgreSQL監査
by
Ayumi Ishii
PDF
PostreSQL監査
by
NTT DATA OSS Professional Services
PDF
NTT DATA と PostgreSQL が挑んだ総力戦
by
NTT DATA OSS Professional Services
PPTX
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
by
NTT DATA Technology & Innovation
PDF
PostgreSQLの運用・監視にまつわるエトセトラ
by
NTT DATA OSS Professional Services
PDF
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
by
NTT DATA OSS Professional Services
PPTX
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
by
Miki Shimogai
PDF
PostgreSQLによるデータ分析ことはじめ
by
Ohyama Masanori
PPTX
SQLチューニング入門 入門編
by
Miki Shimogai
PDF
PostgreSQLセキュリティ総復習
by
Uptime Technologies LLC (JP)
PDF
TPC-DSから学ぶPostgreSQLの弱点と今後の展望
by
Kohei KaiGai
PDF
PostgreSQL9.3新機能紹介
by
NTT DATA OSS Professional Services
PDF
PostgreSQL13を検証してみた
by
Naoya Takeuchi
PDF
PostgreSQL13 新機能紹介
by
Satoshi Hirata
PDF
20190202-pgunconf-Access-Privilege-Inquiry-Functions
by
Toshi Harada
PDF
PostgreSQL15 新機能紹介
by
Satoshi Hirata
PDF
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
by
Yoshiyuki Asaba
PDF
20130203 OSS-DB Exam Silver 技術解説無料セミナー
by
Kazuko Itoda
PDF
20130203 oss-db-lpi
by
Shinichi Matsuda
PDF
OSC沖縄2014_JPUG資料
by
kasaharatt
PostgreSQL監査
by
Ayumi Ishii
PostreSQL監査
by
NTT DATA OSS Professional Services
NTT DATA と PostgreSQL が挑んだ総力戦
by
NTT DATA OSS Professional Services
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
by
NTT DATA Technology & Innovation
PostgreSQLの運用・監視にまつわるエトセトラ
by
NTT DATA OSS Professional Services
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
by
NTT DATA OSS Professional Services
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
by
Miki Shimogai
PostgreSQLによるデータ分析ことはじめ
by
Ohyama Masanori
SQLチューニング入門 入門編
by
Miki Shimogai
PostgreSQLセキュリティ総復習
by
Uptime Technologies LLC (JP)
TPC-DSから学ぶPostgreSQLの弱点と今後の展望
by
Kohei KaiGai
PostgreSQL9.3新機能紹介
by
NTT DATA OSS Professional Services
PostgreSQL13を検証してみた
by
Naoya Takeuchi
PostgreSQL13 新機能紹介
by
Satoshi Hirata
20190202-pgunconf-Access-Privilege-Inquiry-Functions
by
Toshi Harada
PostgreSQL15 新機能紹介
by
Satoshi Hirata
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
by
Yoshiyuki Asaba
20130203 OSS-DB Exam Silver 技術解説無料セミナー
by
Kazuko Itoda
20130203 oss-db-lpi
by
Shinichi Matsuda
OSC沖縄2014_JPUG資料
by
kasaharatt
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
1.
Copyright©2015 NTT Corp.
All Rights Reserved. 監査要件を有するシステムに対す る PostgreSQL 導入の課題と可能 性 NTT OSSセンタ 大山真実
2.
2Copyright©2015 NTT corp.
All Rights Reserved. 突然ですが、、、 DBの監査って重要ですよね!
3.
3Copyright©2015 NTT corp.
All Rights Reserved. 最近の内部不正事件 引用元:IPA 「組織における内部不正対策」 http://www.ipa.go.jp/files/000047237.pdf
4.
4Copyright©2015 NTT corp.
All Rights Reserved. 最近の内部不正事件 引用元:IPA 「組織における内部不正対策」 http://www.ipa.go.jp/files/000047237.pdf を用いて犯 行に至ることも!
5.
5Copyright©2015 NTT corp.
All Rights Reserved. DB管理者が疑われてしまう!? 示唆した。また情報に対する侵害を分類し、漏えい(機密性)、破壊(可用性)、改ざん(完 全性)についてそれぞれ質問し、加えてパスワードの漏えいについても質問したが、結果 はほぼ同じ傾向を示した。 Q: 将来、データベースに格納されている情報をこっそり売却するかも知れない。(図 3-20) そう思う 3.6% ややそう思う 7.1% どちらともい えない 13.4% あまりそう思 わない 10.4% そう思わない 65.5% 引用元:DBSC 「DBA 1,000 人に聞きました」アンケート調査報告書 http://www.db-security.org/report/dbsc_dba_ver1.0.pdf 約1割のDB管理者がDBに 格納されている情報を売 却するかもしれない!?
6.
6Copyright©2015 NTT corp.
All Rights Reserved. DB管理者が疑われてしまう!? Q: 将来、データベースに格納されている情報をこっそり改ざんするかも知れない。(図 3-22) そう思う 2.4% ややそう思う 7.4% どちらともい えない 14.4% あまりそう思 わない 10.7% そう思わない 65.1% 約1割のDB管理者がDBに 格納されている情報を改 ざんするかもしれない!? 引用元:DBSC 「DBA 1,000 人に聞きました」アンケート調査報告書 http://www.db-security.org/report/dbsc_dba_ver1.0.pdf
7.
7Copyright©2015 NTT corp.
All Rights Reserved. DB管理者が疑われてしまう!? Q: 将来、データベースを壊して業務を妨害することがあるかも知れない。(図 3-21) Q: 将来、データベースに格納されている情報をこっそり改ざんするかも知れない。(図 3-22) そう思う 2.9% ややそう思う 6.5% どちらとも いえない 15.5% あまりそう 思わない 9.6% そう思わない 65.5% 約1割のDB管理者がDBを 破壊するかもしれない!? 引用元:DBSC 「DBA 1,000 人に聞きました」アンケート調査報告書 http://www.db-security.org/report/dbsc_dba_ver1.0.pdf
8.
8Copyright©2015 NTT corp.
All Rights Reserved. 不正対策 3ポイント 1. 管理者の誘因 雇用条件/職場環境/幸福度の向上 「一般的に職場環境、雇用条件が満たされている管理者であれば 業務に対して責任を持った行動を取るはずである。」 2. 管理者の抑制 アクセス制御/権限分掌/暗号化/鍵管理 3. 運用の実施 「2.管理者の抑制」が有効になっていることを定期的に監査・監視する仕組 み・体制 ポリシーの制定 監査・監視 体制/ログの取得/ログ確認/ログ保全 引用元:DBSC 「DB 内部不正対策ガイドライン」 http://www.db-security.org/report/antifraud_guide_ver1.0.pdf
9.
9Copyright©2015 NTT corp.
All Rights Reserved. 操作ログの取得が有効 引用元:IPA「組織における内部不正対策」 http://www.ipa.go.jp/files/000047237.pdf Q. 「内部不正防止効果が期待できる対策は?」 以降、監査目的で取得するDBの操作ログのことを監査ログと呼称する。
10.
10Copyright©2015 NTT corp.
All Rights Reserved. でもPostgreSQLって監査ログ出力機能無いですよね?
11.
11Copyright©2015 NTT corp.
All Rights Reserved. でもPostgreSQLって監査ログ出力機能無いですよね? log_statement = all があるじゃない!
12.
12Copyright©2015 NTT corp.
All Rights Reserved. log_statement = all があるじゃない! * 2014 年度 WG3 活動報告 セキュリティ編, https://www.pgecons.org/downloads/101 PostgreSQLエンタープライズコンソーシアムでは、PCI DSS 要 件を満たす必要があるシステムに対して、PostgreSQL を導入し ようとした場合に、対応可能か、どのように対応すればいいかを 調査し、上記のように報告* OSの機能やサードパーティ/商用製品と組み合わ せることで、概ね課題をクリアできる PGEConsの報告 詳細は「付録A」参照
13.
13Copyright©2015 NTT corp.
All Rights Reserved. しかしながら...
14.
14Copyright©2015 NTT corp.
All Rights Reserved. サーバログを 監査ログとして使う上での課題 しかしながら...
15.
15Copyright©2015 NTT corp.
All Rights Reserved. サーバログを 監査ログとして使う上での課題 しかしながら... PGEConsの検討結果も参考に、より堅牢な監査が可能 か、性能上の課題がないかについて調査した
16.
16Copyright©2015 NTT corp.
All Rights Reserved. サーバログを監査ログとして使う上での課題 監査するのが大変なログ問題 運用ログと監査ログ混ざっちゃう問題 性能低下問題 スーパーユーザなんでもできちゃう問題
17.
17Copyright©2015 NTT corp.
All Rights Reserved. サーバログを監査ログとして使う上での課題 監査するのが大変なログ問題 • オブジェクト名 • SQLで渡されたパラメータ • スキーマ名 サーバログでは下記のような情報が出力されない。 1.Do文などの利用時にどのオブジェクトに対して どのような操作が行われたのか判別するのが困難 2.異なるスキーマの同一名テーブル判別不可 =>監査ログの分析が困難 これらの情報が出力されないのは大きな課題 例えば...
18.
18Copyright©2015 NTT corp.
All Rights Reserved. サーバログを監査ログとして使う上での課題 1.Do文利用時 ログ出力例(log_statement = all): SQL例: 監査するのが大変なログ問題 LOG: statement: DO $$ BEGIN EXECUTE 'SELECT * FROM import' || 'ant_table'; END $$; testdb=# DO $$ BEGIN EXECUTE 'SELECT * FROM import' || 'ant_table'; END $$; ログ分析時に’important_table’で検索しても上記のSELECTは発見 できない。
19.
19Copyright©2015 NTT corp.
All Rights Reserved. サーバログを監査ログとして使う上での課題 2.PREPARE文利用時 ログ出力例(log_statement = all, log_error_verbosity = default): SQL例: 監査するのが大変なログ問題 testdb=# PREPARE test (int) AS SELECT * FROM pgbench_accounts WHERE aid = $1; ... testdb=# EXECUTE test (3); このようなログでは、どのようなテーブルにどのようなクエリが投げら れたかを確認するのは大変。 LOG: statement: PREPARE test (int) AS SELECT * FROM pgbench_accounts WHERE aid = $1; ... LOG: statement: EXECUTE test (3); DETAIL: prepare: PREPARE test (int) AS SELECT * FROM pgbench_accounts WHERE aid = $1;
20.
20Copyright©2015 NTT corp.
All Rights Reserved. サーバログを監査ログとして使う上での課題 3.異なるスキーマの同一名テーブル判別不可 ログ出力例(log_statement = all): SQL例その1: 監査するのが大変なログ問題 testdb=# CREATE TABLE schm1.tbl(); testdb=# CREATE TABLE schm2.tbl(); testdb=# SET search_path TO schm1; testdb=# SELECT * FROM tbl; search_pathが設定されていた場合、上記のようにSQLの実行対象が 判別不可。 LOG: statement: CREATE TABLE schm1.tbl(); LOG: statement: CREATE TABLE schm2.tbl(); LOG: statement: SET search_path TO schm1; LOG: statement: SELECT * FROM tbl;
21.
21Copyright©2015 NTT corp.
All Rights Reserved. サーバログを監査ログとして使う上での課題 性能低下 ログ出力対象の範囲は一番小さい粒度でも • データベースごと • ロールごと 大量のログ出力に伴う性能低下の恐れ =>監査要件に必要な最小限の情報のみ出力したい 例えば... 特定のテーブル、列に関するSELECTのみ出力
22.
22Copyright©2015 NTT corp.
All Rights Reserved. 0.0 500.0 1000.0 1500.0 2000.0 2500.0 3000.0 3500.0 4000.0 20000 22000 24000 26000 28000 30000 1.log_statement=none 2.log_statement=all DBT-1ベンチマーク結果 EU数 スループット[BT] Dell PowerEdge R410 CPU:Xeon(R)E5645 2.40GHz 2CPU12core Memory:32GB OS:RHEL6u6 PostgreSQL:9.3.5rpm DBsize:148Gbyte 約20%性能ダウン サーバログを監査ログとして使う上での課題 性能低下
23.
23Copyright©2015 NTT corp.
All Rights Reserved. サーバログを監査ログとして使う上での課題 運用ログと監査ログ混ざっちゃう問題 1.運用者が業務に関係ない重要情報に触れてしまう サーバログは運用で利用する。 DB運用者が監査ログを閲覧できてしまうことになる。 2.分析するのが大変 3.サーバログ自体の監査が難しい 「2014 年度 WG3 活動報告 セキュリティ編」 ではOSの機能(auditd)の利用を推奨。 =>サーバログと監査ログを分離したい。 監査ログのみを別サーバに転送するなどして、 運用者、管理者が閲覧、改ざんできなくしたい。
24.
24Copyright©2015 NTT corp.
All Rights Reserved. サーバログを監査ログとして使う上での課題 スーパーユーザなんでもできちゃう問題 スーパーユーザは監査ログを容易に改変可能 監査ログに関する設定はGUCなので様々な方法で 設定を変更できる。 =>スーパーユーザの監査ログを適切に取得したい。 スーパーユーザでも簡単に監査ログ出力設定を 変更できないようにしたい。 例: $ env PGOPTIONS="-c log_statement=none" psql 上記の設定変更はサーバログに出力されない。 全く気づかれずに設定変更可能。
25.
25Copyright©2015 NTT corp.
All Rights Reserved. サーバログを監査ログとして使う上での課題 監査するのが大変なログ問題 運用ログと監査ログ混ざっちゃう問題 性能低下問題 スーパーユーザなんでもできちゃう問題
26.
26Copyright©2015 NTT corp.
All Rights Reserved. PostgreSQLの監査ログ出力ツール 「pgaudit」 そこで!
27.
27Copyright©2015 NTT corp.
All Rights Reserved. pgauditとは? PostgreSQLの監査ログ出力用外部ツール PostgreSQL9.5対応 pgaduitのこれまでの経緯 2014年の初めくらいからPostgreSQLコミュニティで議論。 2ndQuadrantが開発していた「pgaudit」を David Steele @ Crunchy Data Solutions が引き継ぎ「pg_audit」として コミュニティ開発を継続。 2015年5月、PostgreSQLのcontribにコミットされるも、数日 後に除外される。 2015年7月、「pgaudit」と名前を変えてGithubに公開。 https://github.com/pgaudit/pgaudit ※複数の pgaudit, pg_audit が存在しているので注意!
28.
28Copyright©2015 NTT corp.
All Rights Reserved. pgauditの特徴 pgauditの設定値は全てGUC • postgresql.conf、SQLでデータベースクラスタ全体に設定 • データベース単位で設定可能 • ロール単位で設定可能 ログはサーバログに出力される shared_preload_librariesにpgauditを設定 設定値の詳細は「付録B」参照 サーバログより粒度の細かいログ出力設定が可能 コマンドの種類(クラス)ごと Session Audit Logging モード テーブル、列ごと Object Auditing モード サーバログで取得できない情報を取得可能 テーブル名、スキーマ名 SQLで渡したパラメータ
29.
29Copyright©2015 NTT corp.
All Rights Reserved. pgauditの出力項目 出力項目名 説明 AUDIT_TYPE ログ出力モード:SESSION または OBJECT STATEMENT_ID 1セッション内の1SQLを識別する数字 SUBSTATEMENT_ID 関数の実行など、1SQL内で複数のSQLが実行された 場合に識別する数字 CLASS SQLの種類(クラス)→後述 COMMAND SQLの種類(コマンド単位):SELECTなど OBJECT_TYPE オブジェクトの種類:TABLEなど OBJECT_NAME オブジェクト名 STATEMENT 実行されたSQL文全体 PARAMETER 実行されたSQLに渡されたパラメータ + log_line_prefixで設定可能な出力項目
30.
30Copyright©2015 NTT corp.
All Rights Reserved. pgauditの出力項目 出力項目名 説明 AUDIT_TYPE ログ出力モード:SESSION または OBJECT STATEMENT_ID 1セッション内の1SQLを識別する数字 SUBSTATEMENT_ID 関数の実行など、1SQL内で複数のSQLが実行された 場合に識別する数字 CLASS SQLの種類(クラス)→後述 COMMAND SQLの種類(コマンド単位):SELECTなど OBJECT_TYPE オブジェクトの種類:TABLEなど OBJECT_NAME オブジェクト名 STATEMENT 実行されたSQL文全体 PARAMETER 実行されたSQLに渡されたパラメータ オブジェクト情報やSQL中のパラメータ情報を出力可能 + log_line_prefixで設定可能な出力項目
31.
31Copyright©2015 NTT corp.
All Rights Reserved. Session Audit Logging と Object Auditing Session Audit Logging 特定のクラスに属するSQLが実行されたらログ出力。 例えば... WRITEとDDLクラスに属するSQLが実行されたら出力。 Object Auditing 特定のオブジェクトに対して操作が実行されたらログ出力。 例えば... 特定のテーブルの特定の行に対してSELECTが 実行されたらログ出力。 ログ出力を制御する2つのログ出力モードが存在。 併用可。
32.
32Copyright©2015 NTT corp.
All Rights Reserved. Session Audit Logging について ・ログを出力したいSQLのクラスを指定する。 ‘ALL, -MISC’でMISCだけ除く、といった設定も可能 利用方法 pgaudit.log = クラス名, ... クラス名一覧 READ SELECT, VALUES, COPY など WRITE INSERT, UPDATE, DELETE, TRUNCATE, COPY など FUNCTION DO ROLE CREATE|ALTER|DROP USER|ROLE|GROUP, GRANT, REVOKE など DDL CREATE ... , ALTER ... , DROP ... , REINDEX, SELECT INTO など MISC VACUUM, ANALYZE, BEGIN, COMMIT, ROLLBACK, SET, LOCK など ALL 全てのSQL
33.
33Copyright©2015 NTT corp.
All Rights Reserved. Session Audit Logging について postgresql.conf LOG: AUDIT: SESSION,1,1,MISC,BEGIN,,,BEGIN;,<not logged> LOG: AUDIT: SESSION,2,1,WRITE,UPDATE,,, UPDATE pgbench_accounts SET bid = '4' WHERE aid = '1';,<not logged> LOG: AUDIT: SESSION,3,1,MISC,COMMIT,,,COMMIT;,<not logged> 設定例 shared_preload_libraries = pgaudit pgaudit.log = 'WRITE, DDL, MISC’ 出力例 SQL実行: testdb=# BEGIN; testdb=# SELECT * FROM pgbench_accounts LIMIT 1; testdb=# UPDATE pgbench_accounts SET bid = '4' WHERE aid = '1'; testdb=# COMMIT; 出力結果:SELECTは出力されていない
34.
34Copyright©2015 NTT corp.
All Rights Reserved. Object Auditingについて ‘ロール名’に特定のロールを設定。 このロールがオブジェクトに対して 実行可能な操作のログを出力する。 利用方法 ・ログを出力したいオブジェクトに対する 権限を付与したロールを指定する。 pgaudit.role = ロール名 設定可能な操作 SELECT, INSERT, UPDATE, DELETE
35.
35Copyright©2015 NTT corp.
All Rights Reserved. Object Auditingについて postgresql.conf(ロール名は任意) LOG: AUDIT: OBJECT,19,1,READ,SELECT,TABLE,public.pgbench_accounts, SELECT * FROM pgbench_accounts JOIN pgbench_branches ON (pgbench_accounts.bid = pgbench_branches.bid);,<none> 表単位のログ出力設定例 shared_preload_libraries = pgaudit pgaudit.role = 'auditor‘ 出力例 SQL実行: testdb=# SELECT * FROM pgbench_accounts JOIN pgbench_branches ON (pgbench_accounts.bid = pgbench_branches.bid); 出力結果:pgbench_branchesに関するログは出力されていない auditorロールを作成。ログを出力したいオブジェクトに対する権限を設定。 testdb=# CREATE ROLE auditor; testdb=# GRANT SELECT ON pgbench_accounts TO auditor;
36.
36Copyright©2015 NTT corp.
All Rights Reserved. Object Auditingについて LOG: AUDIT: OBJECT,21,1,READ,SELECT,TABLE,public.pgbench_accounts, SELECT aid FROM pgbench_accounts;,<none> LOG: AUDIT: SESSION,21,1,READ,SELECT,TABLE,public.pgbench_accounts, SELECT aid FROM pgbench_accounts;,<none> LOG: AUDIT: SESSION,22,1,READ,SELECT,TABLE,public.pgbench_accounts, select bid from pgbench_accounts;,<none> 列単位のログ出力設定例 出力例 SQL実行: testdb=# SELECT aid FROM pgbench_accounts; testdb=# SELECT bid FROM pgbench_accounts; 出力結果:bid列に関するObjectログは出力されていない auditorロールにpgbench_accountsのSELECT権限のみ付与 testdb=# GRANT SELECT (aid) ON pgbench_accounts TO auditor; 確認のため“pgaudit.log=READ”を設定。 sessionログは上記の2クエリに対して出力されている。
37.
37Copyright©2015 NTT corp.
All Rights Reserved. pgauditはサーバログの課題を解決可能か?
38.
38Copyright©2015 NTT corp.
All Rights Reserved. pgauditはサーバログの課題を解決可能か? 監査するのが大変なログ問題 • オブジェクト名 • SQLで渡されたパラメータ • スキーマ名 サーバログでは下記のような情報が出力されない。
39.
39Copyright©2015 NTT corp.
All Rights Reserved. pgauditはサーバログの課題を解決可能か? 監査するのが大変なログ問題 • オブジェクト名 • SQLで渡されたパラメータ • スキーマ名 サーバログでは下記のような情報が出力されない。 前述の具体例を使って pgaudit がどのような ログを出力するのか確認する。 pgaudit で出力可!
40.
40Copyright©2015 NTT corp.
All Rights Reserved. pgauditはサーバログの課題を解決可能か? 1.Do文利用時 ログ出力例(pgaudit.log = READ): SQL例: 監査するのが大変なログ問題 LOG: AUDIT: SESSION,2,1,READ,SELECT,TABLE, public.important_table, SELECT * FROM important_table,<none> testdb=# DO $$ BEGIN EXECUTE 'SELECT * FROM import' || 'ant_table'; END $$; オブジェクト名としてテーブル名が表示されている。 DO文の中で実行されたSQLが出力されている。 特定のテーブルに対するSELECT操作であることを容易に確認可。
41.
41Copyright©2015 NTT corp.
All Rights Reserved. pgauditはサーバログの課題を解決可能か? 2.PREPARE文利用時 ログ出力例(pgaudit.log = READ): SQL例その2: 監査するのが大変なログ問題 testdb=# PREPARE test (int) AS SELECT * FROM pgbench_accounts WHERE aid = $1; ... testdb=# EXECUTE test (3); pgbench_accountsに対して“aid=3”の条件で SELECTが実行されたことが1行のログで確認可能。 LOG: AUDIT: SESSION,5,1,READ,SELECT,TABLE, public.pgbench_accounts,PREPARE test (int) AS SELECT * FROM pgbench_accounts WHERE aid = $1;,3
42.
42Copyright©2015 NTT corp.
All Rights Reserved. pgauditはサーバログの課題を解決可能か? 3.異なるスキーマの同一名テーブル判別不可 ログ出力例(pgaudit.log = READ): SQL例その1: 監査するのが大変なログ問題 testdb=# CREATE TABLE schm1.tbl(); testdb=# CREATE TABLE schm2.tbl(); testdb=# SET search_path TO schm1; testdb=# SELECT * FROM tbl; search_pathが設定されていたとしても、schm1スキーマの テーブルに対してSELECTが実行されていることが1行のログで 確認可能。 LOG: AUDIT: SESSION,4,1,READ,SELECT,TABLE,schm1.tbl, SELECT * FROM tbl;,<none>
43.
43Copyright©2015 NTT corp.
All Rights Reserved. pgauditはサーバログの課題を解決可能か? 監査するのが大変なログ問題
44.
44Copyright©2015 NTT corp.
All Rights Reserved. pgauditはサーバログの課題を解決可能か? 監査するのが大変なログ問題 解決 メタ情報が出力されるので監査し易くなった!
45.
45Copyright©2015 NTT corp.
All Rights Reserved. pgauditはサーバログの課題を解決可能か? 監査するのが大変なログ問題 不必要なログ出力を抑制することが可能な ので、必要な情報のみを扱うことができる。 解決 メタ情報が出力されるので監査し易くなった! • オブジェクト名 • SQLで渡されたパラメータ • スキーマ名 下記のようなメタ情報が出力されるので、 サーバログより監査が容易。
46.
46Copyright©2015 NTT corp.
All Rights Reserved. pgauditはサーバログの課題を解決可能か? 性能低下
47.
47Copyright©2015 NTT corp.
All Rights Reserved. pgauditはサーバログの課題を解決可能か? 性能低下 解決 ログ出力に伴う性能低下を抑えることが可能!
48.
48Copyright©2015 NTT corp.
All Rights Reserved. pgauditはサーバログの課題を解決可能か? 性能低下 解決 ログ出力に伴う性能低下を抑えることが可能! 特定のテーブル、列、操作のみに限定して ログ出力が可能 監査要件に合わせて最小限の情報のみ 取得可能 ただし、 • 出力項目の柔軟なカスタマイズ • 時間帯を指定したログ出力 など、より粒度の細かいログ量調整は不可能。
49.
49Copyright©2015 NTT corp.
All Rights Reserved. pgauditはサーバログの課題を解決可能か? 運用ログと監査ログ混ざっちゃう問題
50.
50Copyright©2015 NTT corp.
All Rights Reserved. pgauditはサーバログの課題を解決可能か? 運用ログと監査ログ混ざっちゃう問題 未解決 全てのログはサーバログに出力される
51.
51Copyright©2015 NTT corp.
All Rights Reserved. pgauditはサーバログの課題を解決可能か? 運用ログと監査ログ混ざっちゃう問題 未解決 全てのログはサーバログに出力される pgauditの全てのログはサーバログに出力 サーバログを監査ログとして使う時と同じ 問題が依然として存在している。 1.運用者が業務に関係ない重要情報に触れてしまう 2.分析するのが大変 3.改ざんし易い 再掲:
52.
52Copyright©2015 NTT corp.
All Rights Reserved. pgauditはサーバログの課題を解決可能か? スーパーユーザなんでもできちゃう問題
53.
53Copyright©2015 NTT corp.
All Rights Reserved. pgauditはサーバログの課題を解決可能か? スーパーユーザなんでもできちゃう問題 未解決 スーパーユーザはpgauditの設定を自由に変更可能
54.
54Copyright©2015 NTT corp.
All Rights Reserved. pgauditはサーバログの課題を解決可能か? スーパーユーザなんでもできちゃう問題 未解決 スーパーユーザはpgauditの設定を自由に変更可能 pgauditの全ての設定値はGUC スーパーユーザの監査ログをいかに取得す るかは依然として大きな課題。 設定ファイルや監査ログをOSレベルで監査 することも必要。OSの機能(auditd)などを 利用することを検討する。
55.
55Copyright©2015 NTT corp.
All Rights Reserved. pgauditまとめ
56.
56Copyright©2015 NTT corp.
All Rights Reserved. pgauditまとめ pgauditは「サーバログを監査ログとして使う上での 課題」を解決することができるか? 再掲: 監査するのが大変なログ問題 運用ログと監査ログ混ざっちゃう問題 性能低下問題 スーパーユーザなんでもできちゃう問題
57.
57Copyright©2015 NTT corp.
All Rights Reserved. pgauditまとめ pgauditは「サーバログを監査ログとして使う上での 課題」を解決することができるか? 再掲: 監査するのが大変なログ問題 運用ログと監査ログ混ざっちゃう問題 性能低下問題 スーパーユーザなんでもできちゃう問題 pgauditで 解決! pgauditで 解決! pgauditでも 解決できず... pgauditでも 解決できず...
58.
58Copyright©2015 NTT corp.
All Rights Reserved. pgauditまとめ サーバログによる監査ログ出力と同様の権限分 掌問題は依然として解決しておらず、DB管理者 の操作ログを取得する目的での使用は適さない。 オブジェクト情報、スキーマ情報などサーバロ グで取得できなかったメタ情報が取得可能に なった。 細やかなログ出力設定が可能になり、監査ログ 出力要件に応じてログ出力量を抑えることが可 能になった。
59.
59Copyright©2015 NTT corp.
All Rights Reserved. pgauditに対する要望 スーパーユーザに設定を自由に変更させない pgauditの設定値をGUCではない値としたい 設定ファイルを分けたい サーバログと監査ログの出力先を分離 これに伴い接続やSQLやトランザクションの成功失敗を 出力させる必要ある 別のサーバに送信などできるとベスト 任意の出力項目、より柔軟なフィルタ 個別の監査要件に必要な出力項目を自由に設定 特定の時間帯に絞ったログ出力
60.
60Copyright©2015 NTT corp.
All Rights Reserved. ちなみに
61.
61Copyright©2015 NTT corp.
All Rights Reserved. Audit Log Analyzer 現状はβ版。 今後に期待! サーバログに出力されたpgauditのログをパースして pgauditテーブルに格納する。監査者はSQLを使って監 査ログを分析可能。 pgaudit_analyzeデーモンがサーバログ(CSV形式)を 自動で読み込み、pgauditテーブルに監査ログを格納す る。 pgaudit.audit_statement pgaudit.audit_substatement pgaudit.audit_substatement_detail pgaudit.log_event pgaudit.logevent_pk pgaudit.session pgaudit.vw_audit_event 下記テーブルを作成するスクリプトが提供されている。
62.
62Copyright©2015 NTT corp.
All Rights Reserved. 付録
63.
63Copyright©2015 NTT corp.
All Rights Reserved. 引用元:PGECons「2014 年度 WG3 活動報告 セキュリティ編」 https://www.pgecons.org/downloads/101 ※スライドのスペースの都合上、引用元より一部省略・要約しています。 # 要件 対応レベル 対応策 10.2.1 カード会員情報への全てのアクセス ◯ log_statement 10.2.2 スーパーユーザの全ての操作 ◯ log_statement 10.2.3 監査ログに対する全てのアクセス △ OS機能(auditdなど) 10.2.4 無効な操作の試行 ◯ log_min_messages 10.2.5 ログイン/ログアウト ◯ log_connection, log_disconnection 10.2.6 ログ出力機能の設定変更、初期化 △ OS機能(auditdなど) 10.2.7 DBオブジェクトの生成、削除 ◯ log_statement 10.2 ログの出力契機の要件 付録A:PostgreSQLログ出力機能のPCI DSS 対応状況 ◯: PostgreSQL標準機能で対応可 △:一部だけ、または外部ツールやOS機能を組み合わせれば対応可 ☓:対応不可 PCI DSS のログ出力契機の要件にほぼ対応することができる
64.
64Copyright©2015 NTT corp.
All Rights Reserved. 引用元:PGECons「2014 年度 WG3 活動報告 セキュリティ編」 https://www.pgecons.org/downloads/101 ※スライドのスペースの都合上、引用元より一部省略・要約しています。 # 要件 対応レベル 対応策 10.3.1 DB、OSアカウント名 △ log_line_prefix 10.3.2 SQLの種類、タイプなど ◯ log_line_prefix 10.3.3 日付と時刻 ◯ log_line_prefix 10.3.4 成功または失敗を示す情報 ◯ log_line_prefix 10.3.5 DB クライアントの IP アドレスなど ◯ log_line_prefix 10.3.6 オブジェクト名、オブジェクトID、 カラム名、カラムIDなど ☓ ー 10.3.1 DBのアカウント名、OSアカウント名 △ log_line_prefix 10.3 ログの出力項目の要件 付録A:PostgreSQLログ出力機能のPCI DSS 対応状況 ◯: PostgreSQL標準機能で対応可 △:一部だけ、または外部ツールやOS機能を組み合わせれば対応可 ☓:対応不可 PCI DSS のログ出力項目の要件にほぼ対応することができる
65.
65Copyright©2015 NTT corp.
All Rights Reserved. 付録A:PostgreSQLログ出力機能のPCI DSS 対応状況 既存のログ出力機能(サーバログ)でも PCI DSS 監査ログ出力要件に”ほぼ”対応できる postgresqsl.confを適切に設定 OSの権限を適切に設定 postgresqsl.confやサーバログへの操作ログを取得 auditdなどOSの機能を利用 スーパーユーザになれるOSユーザは postgresqsl.conf 変更不可 スーパーユーザになれるOSユーザはサーバログ改ざん不可 log_statement = all log_min_error_statement、log_min_messages log_connection、log_disconnection log_line_prefix log_error_verbosity log_file_mode = 0000
66.
66Copyright©2015 NTT corp.
All Rights Reserved. 付録B:pgauditのインストール PostgreSQLのインストール pgauditのインストール # git clone https://github.com/postgres/postgres.git # git checkout REL9_5_STABLE # ./configure # make install -s # cd contrib # git clone https://github.com/pgaudit/pgaudit.git # cd pgaudit # make -s check # make install
67.
67Copyright©2015 NTT corp.
All Rights Reserved. 付録B:pgaudit その他の設定 • pgaudit.log_relation セッションログ利用時に使用するパラメータ。 オブジェクトタイプ、オブジェクトネームを出力するかどうかを 設定。Object Auditing を利用している場合、必要ないのであれ ば出力させない。 • 設定例 pgaudit.log_relation = on (default: off) • 出力例 LOG: AUDIT: SESSION,1,1,MISC,BEGIN,,,BEGIN;,<not logged> LOG: AUDIT: SESSION,2,1,WRITE,UPDATE,TABLE,public.pgbench_accounts, UPDATE pgbench_accounts SET bid = '4' WHERE aid = '1';,<not logged> LOG: AUDIT: SESSION,3,1,MISC,COMMIT,,,COMMIT;,<not logged>
68.
68Copyright©2015 NTT corp.
All Rights Reserved. 付録B:pgaudit その他の設定 • pgaudit.log_parameter SQL中のパラメータで渡した値を出力する。 • 設定例 pgaudit.log_parameter = on(default: off) • 出力例 LOG: AUDIT: SESSION,1,1,READ,PREPARE,,,PREPARE test (int) AS SELECT * FROM pgbench_accounts where aid = $1;,<none> LOG: AUDIT: SESSION,2,1,READ,SELECT,TABLE,public.pgbench_accounts,PREPARE test (int) AS SELECT * FROM pgbench_accounts where aid = $1;,1 LOG: AUDIT: SESSION,2,2,MISC,EXECUTE,,,EXECUTE test (1);,<none> LOG: AUDIT: SESSION,1,1,READ,PREPARE,,,PREPARE test (int) AS SELECT * FROM pgbench_accounts where aid = $1;,<not logged> LOG: AUDIT: SESSION,2,1,READ,SELECT,TABLE,public.pgbench_accounts,PREPARE test (int) AS SELECT * FROM pgbench_accounts where aid = $1;,<not logged> LOG: AUDIT: SESSION,2,2,MISC,EXECUTE,,,EXECUTE test (1);,<not logged> ON設定時 OFF設定時
69.
69Copyright©2015 NTT corp.
All Rights Reserved. 付録B:pgaudit その他の設定 • pgaudit.log_statement_once 同じSQL文を複数回出力しない。 • 設定例 pgaudit.log_statement_once = on(default: off) • 出力例 LOG: AUDIT: OBJECT,19,1,READ,SELECT,TABLE,public.pgbench_accounts,select * from pgbench_accounts join pgbench_branches on (pgbench_accounts.bid = pgbench_branches.bid) limit 1;,<none> LOG: AUDIT: SESSION,19,1,READ,SELECT,TABLE,public.pgbench_accounts, <previously logged>,<previously logged> LOG: AUDIT: SESSION,19,1,READ,SELECT,TABLE,public.pgbench_branches, <previously logged>,<previously logged> LOG: AUDIT: SESSION,1,1,READ,SELECT,TABLE,public.pgbench_accounts, select * from pgbench_accounts join pgbench_branches on (pgbench_accounts.bid = pgbench_branches.bid) limit 10;,<not logged> LOG: AUDIT: SESSION,1,1,READ,SELECT,TABLE,public.pgbench_branches, <previously logged>,<previously logged> ON設定+オブジェクトログ混在時 ON設定時
70.
70Copyright©2015 NTT corp.
All Rights Reserved. 付録B:pgaudit その他の設定 • pgaudit.log_catalog pg_catalogに対するログを出力かを設定する。 • pgaudit.log_level pgauditが出力するログのログレベルを設定する。 • 設定例 pgaudit.log_level = warning (default: log) • 出力例 WARNING: AUDIT: SESSION,9,1,MISC,SET,,, set pgaudit.log_level = warning;,<none> WARNING: AUDIT: SESSION,10,1,READ,SELECT,TABLE,public.pgbench_accounts, select bid from pgbench_accounts;,<none>
Editor's Notes
#20
log_error_verbosity (enum) 有効な値は、TERSE、DEFAULT、およびVERBOSEで、それぞれは表示されるメッセージにより多くのフィールドを追加します。 TERSEはDETAIL、HINT、QUERY、およびCONTEXTエラー情報を除外します。 VERBOSE出力は、SQLSTATEエラーコード(付録Aも参照)、および、ソースコードファイル名、関数名、そしてエラーを生成した行番号を含みます。 スーパユーザのみこの設定を変更できます。
#26
PGEconsの資料にあったとおり、PostgreSQLでPDIDSSの要件を満たす監査ログ出力は可能。 ただし、実際に運用してみると、ここに上げたような問題が課題となる可能性がある。
#37
その他の設定に関しては付録B参照
Download