PostgreSQLのセキュリティを極める

Similar documents
Microsoft PowerPoint - 【修正版】OSS-DBセミナー講師資料_ pptx

MxLogonサーバサイドツールキット用UI

CodeGear Developer Camp

PostgreSQLによる データベースサーバ構築技法

PowerGres Plus V9.1 のご紹介 PostgreSQL をベースに信頼性とセキュリティをプラス SRA OSS,Inc. 日本支社マーケティング部 2015/10 Copyright 2015 SRA OSS, Inc. Japan All rights reserved. 1

Oracle 入門 ~ 研修受講後のスキルアップサポート ~ 対応バージョン :Oracle 10gR1 ~ 12cR1 本資料は アシスト Oracle 研修をご受講いただいたお客様からのご質問や 研修ではご案内できなかった情報などを FAQ にまとめたものです 研修受講後のスキルアップの一助とし

Mobile Access簡易設定ガイド

PowerPoint プレゼンテーション

1.SqlCtl クラスリファレンス SqlCtl クラスのリファレンスを以下に示します メソッドの実行中にエラーが発生した場合は標準エラー出力にメッセージを出力します (1)Connect() メソッド データベースへ connect 要求を行います boolean Connect(String

ムの共有アドレス帳 インスタント メッセージングの宛先に活用することも考えられる 統合アカウント管理 認証 認可 ( アクセス制御 ) の機能 サービス機能 サービス定義統合アカウント管理利用者の認証情報 ( ユーザ ID パスワード) と属性情報 ( グループ 所属部門等 ) を一元的に管理する機

VNX ファイル ストレージの管理

LEAP を使用して Cisco ワイヤレス クライアントを認証するための Funk RADIUS の設定

NAC(CCA): ACS 5.x 以降を使用した Clean Access Manager での認証の設定

CLUSTERPRO for Linux PostgreSQL HowTo

PowerPoint Presentation

レプリケーションについて レプリケーション元に設定したメイン機の共有フォルダーと レプリケーション先に指定した予備機の共有フォルダーを同期し 同じ状態に保ちます (LAN 環境により遅延が発生します ) 遠隔地へのレプリケーションにより メイン機側での災害 事故によるデータ損失のリスク低減ができます

PostgreSQL Plus 管理者ガイド

TOC 本講演の内容 PostgreSQL 開発とリリースの概要 PostgreSQL 9.5 新機能の検証報告 講演者について 高塚遙 SRA OSS, Inc. 日本支社にて PostgreSQL サポート 各種クラスタ構築技術支援 マイグレーション技術支援 などを担当 Copyright 20

目次 PostgreSQL の特徴 インストール インストール方法 環境変数 データベースクラスタ 起動 停止 設定ファイル postgresql.conf ログ出力設定 環境設定 ロール作成 データベース作成 psql バックスラッシュコマンド バックアップ リストア PITR (Point In

スライド 1

PostgreSQL の特徴 Copyright 2008 SRA OSS, Inc. Japan All rights reserved. 2

POSTGRESQL 9.2 /POSTGIS (WINDOWS 版 ) 導入 設定手順書 (VER. 1) June 20, 2014

SMTP ルーティングの設定

関係データベース

スライド 1

復習 (SQL 文 ) 3/6 復習 (SQL 文 ) 4/6 表の作成 CREATE TABLE...; 表の削除 DROP TABLE テーブル名 ; 表内のデータが全て消えてしまう. 表内のデータを得る SELECT 列名 FROM 表名...; 表にデータを挿入する. INSERT INTO

リレーショナルデータベース入門 SRA OSS, Inc. 日本支社 Copyright 2008 SRA OSS, Inc. Japan All rights reserved. 1

PostgreSQL 9.4 評価検証報告 SRA OSS, Inc. 日本支社高塚遙 :55 ~ 16:30 PostgreSQL 9.4 最新情報セミナー Copyright 2014 SRA OSS, Inc. Japan All rights reserved. 1

Cuoreテンプレート

ログインおよび設定

( 目次 ) 1. はじめに 開発環境の準備 仮想ディレクトリーの作成 ASP.NET のWeb アプリケーション開発環境準備 データベースの作成 データベースの追加 テーブルの作成

Mobile Access IPSec VPN設定ガイド



データベースアクセス

名古屋大学 COI 高精度地図フォーマット地図の使い方 文書の概要 2017 年 9 月 6 日版 この文書は, 名古屋大学 COI 高精度地図フォーマットの地図情報を RDBMS に格納し, 検索に利用するための手順を解説したものです. 本来であれば, 地図情報と動的情報は, ともにダイナミックマ

McAfee Application Control ご紹介

Zabbix で PostgreSQL を監視! pg_monz のご紹介 Zabbix Conference Japan 年 11 月 20 日 SRA OSS, Inc. 日本支社マーケティング部

RADIUS サーバを使用して NT のパスワード期限切れ機能をサポートするための Cisco VPN 3000 シリーズ コンセントレータの設定

別紙 : 検証環境の構築手順 ( 章 ) 1. サーバ設定 1.1 IP アドレス設定 サーバは以下の 6 台を用いる pgpool-ii サーバ 2 台 DB サーバ 3 台 上位サーバ 1 台 OS は全サーバで CentOS 6.4 x86_64 とする pgpool-ii のサー

Web 認証拡張機能簡易ドキュメント

シナリオ:サイトツーサイト VPN の設定

AW-PCS認証設定手順1805

6-2- 応ネットワークセキュリティに関する知識 1 独立行政法人情報処理推進機構

Symantec AntiVirus の設定

PASSEXAM

改版履歴 版数 改版日付 改版内容 /03/14 新規作成 2013/03まで製品サイトで公開していた WebSAM DeploymentManager Ver6.1 SQL Server 2012 製品版のデータベース構築手順書 ( 第 1 版 ) を本 書に統合しました 2

PowerPoint Presentation

eラーニング資料 e ラーニングの制作目標 データベース編 41 ページデータベースの基本となる概要を以下に示す この内容のコースで eラーニングコンテンツを作成予定 データベース管理 コンピュータで行われる基本的なデータに対する処理は 次の 4 種類です 新しいデータを追加する 既存のデータを探索

Microsoft Word - Android_SQLite講座_画面800×1280

今さら聞けない!? Oracle入門 ~後編~

OSSTechドキュメント

管理サーバの移行

OS5.2_SSLVPN設定手順書

SOC Report

Microsoft Word - koutiku-win.doc

Postgres Plus Advanced Server 9.3パーティションテーブルの特徴と性能検証レポート

スライド 1

KTest

スライド 1

データベース マネジメント ~ 研修受講後のスキルアップ サポート ~ 対応バージョン :Oracle 10gR1 ~ 12cR2 本資料は アシスト Oracle 研修をご受講いただいたお客様からのご質問や 研修ではご案内できなかった情報などをまとめたものです 研修受講後のスキルアップの一助として

Net'Attest EPS設定例

ALogシリーズ 監査レポート集

WLX302 取扱説明書

SSL サムプリントの検証 SSL サムプリントの検証はリモートユーザーがホストの信頼性を検証するために使用します この検証はリモートとホスト間の接続の安全性を確立して MITM 攻撃から保護するために実行する必要があります デフォルトで リモートユーザーが TCP/IP を使用してホストに接続しよ

Attain3 インストール説明書

メール全文検索アプリケーション Sylph-Searcher のご紹介 SRA OSS, Inc. 日本支社技術部チーフエンジニア Sylpheed 開発者 山本博之 Copyright 2007 SRA OSS, Inc. Japan All right

U コマンド

Untitled

インストールガイド ネットワーク PA システムマネージャー AI-1000SM このたびは TOA ネットワーク PA システムマネージャーをお買い上げいただき まことにありがとうございます 本書は AI-1000SM ネットワーク PA システムマネージャーをセットアップするための手順書です 正

Hyper-V 仮想マシンの設定

ハンドシェイク障害または証明書検証エラーによる NGFW サービス モジュール TLS の中断

VPN の IP アドレス

連絡先

1 暗号化通信におけるリスク ~ SSH に潜む落とし穴 ~ 暗号化すれば安全ですか? 目次 1. はじめに SSH とは SSH に潜む落とし穴 SSH での効果的な対策 最後に... 13

データベース暗号化ツール「D’Amo」性能検証

PC にソフトをインストールすることによって OpenVPN でセキュア SAMBA へ接続することができます 注意 OpenVPN 接続は仮想 IP を使用します ローカル環境にて IP 設定が被らない事をご確認下さい 万が一仮想 IP とローカル環境 IP が被るとローカル環境内接続が行えなくな

PowerPoint Presentation

HeartCoreインストールマニュアル

日本 PostgreSQL ユーザ会第 28 回しくみ + アプリケーション勉強会 Zabbix を使って PostgreSQL を監視してみよう 2014 年 2 月 1 日 TIS 株式会社中西剛紀 (Yoshinori Nakanishi)

スライドタイトル/TakaoPGothic

索引

パスワード管理

Microsoft Word - SSL-VPN接続サービスの使い方

WeChat 認証ベースのインターネット アクセス

PowerPoint Presentation

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

Microsoft Word - qtsi_120246jp_rhev.doc

mySQLの利用

WEBシステムのセキュリティ技術

ここからの作業は sudo が使用できるユーザで実行されることを前提にしています sudo 時に聞かれるパスワードは省略していますので 随時自分のパスワードを入力してください PostgreSQL の設定変更 リモートマシンから接続される ( 従サーバ の )Postgre

SAML認証

IPsec徹底入門

untitled

Web 環境におけるレイヤー別負荷の 2 違い DB サーバ AP サーバ 後ろのレイヤーほど負荷が高く ボトルネックになりやすい

ServerViewのWebアクセス制限方法

LDAP サーバと統合するための ISE の設定

はじめに コース概要と目的 Oracle を使用した開発 管理を行う上でのファースト ステップとして リレーショナル データベース管理ソフトウェアである Oracle の役割 基本機能 基本アーキテクチャを幅広く理解することを目的としています 受講対象者 これから Oracle を使用する方 データ

正誤表(FPT0417)

内容 Visual Studio サーバーエクスプローラで学ぶ SQL とデータベース操作... 1 サーバーエクスプローラ... 4 データ接続... 4 データベース操作のサブメニューコンテキスト... 5 データベースのプロパティ... 6 SQL Server... 6 Microsoft

Transcription:

PostgreSQL のセキュリティを極める PGConf.ASIA 2018 Day 2 2018 年 12 月 12 日 SRA OSS, Inc. 日本支社佐藤友章 sato@sraoss.co.jp 1

目次 おもなセキュリティの観点 データベース接続時のセキュリティ データベース内のセキュリティ そのほかのセキュリティ 2

おもなセキュリティの観点 考慮すべきセキュリティの観点は多岐に渡る TCP 接続 接続監視 データベースサーバ クライアント認証 データベース内 データ暗号化 通信暗号化 設定ファイル pg_hba.conf 操作 テーブル 権限 ローカル接続 クライアント ユーザ 属性 RLS ポリシー クライアント 監査ログ 3

データベース接続時のセキュリティ 4

通信暗号化 SSL でクライアントとデータベースサーバ間の通信を暗号化 設定例 ssl = on 悪意のあるユーザ # SSL による暗号化を有効に データベースサーバ 盗聴 SSL 接続 サーバ秘密鍵 サーバ証明書 SSL で暗号化されているので 通信を盗聴できない SSL 接続の強制はクライアント認証で設定 サーバ証明書も検証するには ルート証明書をクライアントに配置して 接続時に SSL モードを指定 SSL モード SSL モード disable allow prefer require verify-ca verify-all 非 SSL 接続 説明 非 SSL 接続を試みて できなければ SSL 接続 SSL 接続を試みて できなければ非 SSL 接続 ( デフォルト ) SSL 接続 SSL 接続 / サーバ証明書を検証 SSL 接続 / サーバ証明書とホスト名の一致を検証 クライアント ルート証明書 5

クライアント認証 クライアントに対してデータベースサーバ接続時に行う認証 データベースサーバ 接続先データベース 接続ユーザ 設定ファイル pg_hba.conf クライアント ( 接続元 IP アドレス ) pg_hba.conf で最初に一致したレコードで認証を行う 接続形式 ローカル接続 (local) TCP 接続 (host) SSL 接続 (hostssl) 非 SSL 接続 (hostnossl) pg_hba.conf の書式 local データベース名ユーザ名 認証方式 host データベース名ユーザ名 IPアドレス範囲認証方式 hostssl データベース名ユーザ名 IPアドレス範囲認証方式 hostnossl データベース名ユーザ名 IPアドレス範囲認証方式 おもな認証方式 認証方式 trust/reject 無条件で許可 / 拒否 説明 scram-sha-256 SCRAM 暗号化でパスワード認証 (10 以降 ) md5 MD5 暗号化でパスワード認証 password 平文でパスワード認証 ( 非推奨 ) ident/peer cert OS とデータベースユーザ名との一致で認証 SSL クライアント証明書で認証 6

listen_addresses パラメータ クライアントからの接続を監視するサーバのアドレスを指定するパラメータ 設定例 listen_addresses = 'localhost,129.168.0.10' データベースサーバ TCP 接続 192.168.0.10 TCP 接続 192.168.1.10 クライアント クライアントではなく サーバのアドレスを指定 未指定のアドレスでは接続要求を受けつけない デフォルトは local でローカルホストのみ * ですべてのアドレスを監視 ネットワークインタフェースが複数ある場合 リモートホストからの接続を受けつける場合 クライアント ローカル接続 /var/run/postgresql/.s.pgsql.5432 不要な接続要求を防止するため 必要なアドレスのみを指定すべき クライアント 7

データベース内のセキュリティ 8

ロールの属性 ロールに対して設定する権限 / パスワード / パラメータ CREATE ROLE/ALTER ROLE で設定 パスワードの設定は 平文での送信を回避するため psql の password で行う スーパーユーザ権限 (SUPERUSER) データベース作成権限 (CREATEDB) ロール作成権限 (CREATEROLE) ログイン権限 (LOGIN) レプリケーション権限 (REPLICATION) RLS RLS 無視権限 (9.5 以降 ) (BYPASSRLS) パスワード (PASSWORD パスワード ) パラメータ (SET パラメータ名 TO 値 ) 実行例 =# CREATE ROLE alice LOGIN; -- ログイン権限をもつロールaliceを作成 =# ALTER ROLE alice CREATEDB; -- ロールaliceにデータベース作成権限を与える =# password alice -- ロールaliceのパスワードを設定 =# ALTER ROLE alice SET work_mem TO '8MB'; -- ロールaliceが接続時のwork_memパラメータを8MBに設定 9

データベースオブジェクトの権限 データベースオブジェクトに対してロールができる操作の権限 所有者のみが基本的にデフォルトですべての権限をもつ 実行例 所有者 alice テーブル accounts GRANT で権限を与え REVOKE で取り消す SELECT INSERT すべての操作 一般ユーザ bob スーパーユーザ postgres 所有者以外に操作を許可するには 権限を与える必要がある スーパーユーザは権限に関係なく すべての操作ができる => GRANT SELECT ON TABLE accounts TO bob; -- テーブルaccountsにロールbobのSELECT 権限を与える => dp accounts Schema Name Type Access privileges Column privileges Policies --------+----------+-------+---------------------+-------------------+---------- public accounts table alice=arwddxt/alice+ aliceはすべての権限 (arwddxt) をもつ bob=r/alice bobはselect 権限 (r) をもつ 権限はaliceによって与えられた 10

おもなデータベースオブジェクトの権限一覧 データベースオブジェクト 権限 操作 データベースオブジェクト 権限 操作 テーブル / 列 / ビュー / 外部テーブル (TABLE) シーケンス (SEQUENCE) SELECT(r) INSERT(a) SELECT COPY TO INSERT COPY FROM UPDATE(w) UPDATE SELECT... FOR UPDATE/SHARE DELETE(d) TRUNCATE(D) REFERENCES(x) TRIGGER(t) USAGE(U) SELECT(r) UPDATE(w) DELETE TRUNCATE 外部キー制約作成 トリガ作成 currval nextval 関数実行 currval 関数実行 nextval setval 関数実行 データベース (DATABASE) 関数 / プロシージャ (FUNCTION) スキーマ (SCHEMA) テーブル空間 (TABLESPACE) CREATE(C) CONNECT(c) TEMPORARY(T) EXECUTE(X) CREATE(C) USAGE(U) CREATE(C) データベース内にスキーマ作成 データベース接続 データベース内に一時テーブル作成 関数 プロシージャ 演算子実行 スキーマ内にオブジェクト作成 スキーマ内のオブジェクトアクセス テーブル空間内にテーブル インデックス 一時ファイル作成 データベースの CONNECT TEMPORARY 権限 関数 / プロシージャの EXECUTE 権限 手続き言語 データ型 / ドメインの USAGE 権限はデフォルトですべてのユーザに与えられる 11

デフォルトロール スーパーユーザのみができる操作の権限を部分的に与えるためのロール (9.6 以降 ) ロール 操作 pg_read_all_settings すべてのパラメータを参照できる (10 以降 ) pg_read_all_stats すべての統計情報を参照できる (10 以降 ) pg_stat_scan_tables ACCESS SHAREロックを長時間取得する統計情報関数を実行できる (10 以降 ) pg_signal_backend サーバプロセスにシグナルを送信できる pg_read_server_files データベースサーバ上のファイルを読み取りできる (11 以降 ) pg_write_server_files データベースサーバ上のファイルに書き込みできる (11 以降 ) pg_execute_server_program データベースサーバ上のプログラムを実行できる (11 以降 ) pg_monitor pg_read_all_settings + pg_read_all_stats + pg_stat_scan_tablesと同じ (10 以降 ) 実行例 =# ALTER ROLE pg_monitor TO bob; -- ロール bob にデフォルトロール pg_monitor の権限を与える =# du bob Role name Attributes Member of -----------+------------+-------------- bob {pg_monitor} 12

public スキーマ デフォルトで存在するスキーマ すべてのユーザがデータベースオブジェクトを作成できる デフォルトで検索パスに含まれる public スキーマ ユーザ定義関数 lower(varchar) pg_catalog スキーマ 組み込み関数 lower(text) 攻撃を回避するには public スキーマに対するすべてのユーザの CREATE 権限を取り消す =# REVOKE CREATE -# ON SCHEMA public FROM PUBLIC; 作成 悪意のあるユーザ 実行 スーパーユーザ postgres 組み込み関数を実行しようとして 意図せずユーザ定義関数が実行されてしまう スキーマの検索パスから public スキーマを取り除く =# SET search_path TO '$user'; データベースオブジェクトのスキーマ名を明示的に指定する =# SELECT pg_catalog.lower(email) -# FROM accounts; 13

行単位セキュリティ (RLS) テーブルに対してロールが操作できる行を制限する仕組み (9.5 以降 ) 一般ユーザ bob グループロール managers 操作 操作 manager = bob テーブルの権限に追加して設定 操作できない行を参照しようとしても 可視できないだけで エラーにならない TRUNCATE など テーブル全体への操作は対象外 実行例 RLS ポリシー テーブル accounts =# ALTER ROLE managers TO bob; -- グループロールmanagersにロールbobを追加 =# ALTER TABLE accounts -- テーブルaccountsの行単位セキュリティを有効にする -# ENABLE ROW LEVEL SECURITY; =# CREATE POLICY account_managers -- テーブルaccountsにグループロールmanagersのメンバが -# ON accounts TO managers -- 自分がマネージャになっている行のみを操作できるように -# USING (manager = current_user); -- RLSポリシーを作成 14

そのほかのセキュリティ 15

データ暗号化 データベースに格納するデータを暗号化 おもなデータ暗号化の実現方式 pgcrypto モジュール 暗号化関数を提供する付属モジュール TDE for PG pgcryptoをベースにtde 機能を提供するモジュール T 暗号化データ型 ユーザ 暗号化関数 テーブル ユーザ テーブル暗号化キー 暗号化関数 PowerGres Plus TDE 機能を追加した PostgreSQL ベースの商用製品 ecryptfs/encfs/dm-crypt + LUKS 様々な暗号化ファイルシステム ユーザ テーブル暗号化キー ファイル ユーザ テーブルファイルディスク 16

監査ログ 不正アクセスの検出のため データベースの操作を記録したログ 設定例 log_destination = 'csvlog' log_connections = on log_disconenctions = on log_statement = all 操作 データベースサーバ ログ出力 # CSV 形式でログを取得 # 接続のログを記録 # 切断のログを記録 # すべてのSQLをログに記録 テーブル CSV 形式で出力したログをテーブルにインポートすれば SQL で検索できる 監査 OS の機能と組み合わせれば ログの設定でもある程度実現できる 監査ログ専用の機能ではないため 要件によっては pgadudit モジュールの導入が必要 pgaudit を使用すれば 取得対象の SQL の詳細な種類や テーブル / 列を指定できる 操作対象の完全なテーブル名や SQL のパラメータを取得できる ユーザ ログファイル インポート スーパーユーザ 17

オープンソースとともに 18