SlideShare a Scribd company logo
© 2023 NTT DATA Group Corporation
© 2023 NTT DATA Group Corporation
マネージドPostgreSQLの実現に向けた
PostgreSQL機能向上
2023年11月24日 PostgreSQL Conference Japan 2023
株式会社NTTデータグループ 技術開発本部
加藤 慎也
© 2023 NTT DATA Group Corporation 2
自己紹介
• 名前
• 加藤 慎也 @ShinyaKato_
• 所属
• 株式会社NTTデータグループ 技術開発本部
• 業務
• PostgreSQLコミュニティでの開発
• PostgreSQLの研究開発やサポート業務
© 2023 NTT DATA Group Corporation 3
本講演について
• 講演資料は、NTTデータグループのSlideShareアカウント上で公開中
• https://www.slideshare.net/nttdata-tech
• 検証環境
製品名 バージョン
Amazon RDS for PostgreSQL PostgreSQL 14.7
on x86_64-pc-linux-gnu, compiled by gcc (GCC) 7.3.1
20180712 (Red Hat 7.3.1-12), 64-bit
Azure Database for PostgreSQL
(フレキシブル サーバー)
PostgreSQL 14.7
on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 7.5.0-
3ubuntu1~18.04) 7.5.0, 64-bit
Cloud SQL for PostgreSQL PostgreSQL 14.7
on x86_64-pc-linux-gnu, compiled by Debian clang
version 12.0.1, 64-bit
オープンソース版PostgreSQL PostgreSQL 16.1
© 2023 NTT DATA Group Corporation 4
マネージドサービスを使用していて、
権限が足りなくてやりたいことができない、
と困ったことはありませんか?
スーパーユーザ使えないのか…?
ということはCHECKPOINTコマンド
実行できないな…
必要な権限を付与できない…
あれ、何故かこのパラメータは
変更できないぞ…
© 2023 NTT DATA Group Corporation 5
PostgreSQLの機能が向上することで
これらの課題が解決しつつあります!
スーパーユーザ使えないのか…?
ということはCHECKPOINTコマンド
実行できないな…
必要な権限を付与できない…
あれ、何故かこのパラメータは
変更できないぞ…
v15~
CHECKPOINTコマンドの権限を付与可能に!
v16~
権限付与のルールが変更
v15~
パラメータ毎にSET権限を設定可能
© 2023 NTT DATA Group Corporation 6
マネージドPostgreSQLの主な制約
スーパーユーザを使用できない OSにログインできない
• 一部のSQLコマンドを実行できない
• 一部の権限を付与できない
• 一部のパラメータを設定できない
• スーパーユーザの所有するリレーション
に対する任意の操作を実行できない
• サーバのファイルを読み書きできない
• サーバプログラムを実行できない
• 拡張機能をインストールできない
© 2023 NTT DATA Group Corporation 7
© 2023 NTT DATA Group Corporation
01
スーパーユーザを
使用できない問題
© 2023 NTT DATA Group Corporation 8
ポイント
権限をより細やかに管理できる
ような機能が充実
© 2023 NTT DATA Group Corporation 9
CHECKPOINTコマンド
• v14まではスーパーユーザしかCHECKPOINTコマンドを実行できなかった
• v15で実装されたpg_checkpoint事前定義ロールを付与することで、
一般ユーザでもCHECKPOINTコマンドを実行できるようになった
v15
=# CREATE ROLE not_have_pg_checkpoint ;
=# SET ROLE not_have_pg_checkpoint ;
=> CHECKPOINT ;
ERROR: 42501: permission denied to execute CHECKPOINT command
DETAIL: Only roles with privileges of the "pg_checkpoint" role may execute this
command.
=> RESET ROLE ;
=# CREATE ROLE has_pg_checkpoint IN ROLE pg_checkpoint ;
=# SET ROLE has_pg_checkpoint ;
=> CHECKPOINT ;
CHECKPOINT
pg_checkpointをもたないロールで
CHECKPOINTコマンドを実行するとエラー
pg_checkpointをもつロールで
CHECKPOINTコマンドを実行すると成功
© 2023 NTT DATA Group Corporation 10
CHECKPOINTコマンド
• Amazon RDS for PostgreSQL
• v14時点で独自に対応済み
• Azure Database for PostgreSQL
• v14時点で独自に対応済み
• Cloud SQL for PostgreSQL
• 未対応
=> CHECKPOINT ;
CHECKPOINT
v15
=> CHECKPOINT ;
ERROR: 42501: must be superuser to do
CHECKPOINT
つまりソースコードを変更している!
Cloud SQL for PostgreSQL
Amazon RDS for PostgreSQL, Azure Database for PostgreSQL
© 2023 NTT DATA Group Corporation 11
VACUUM、ANALYZE、CLUSTER、
REFRESH MATERIALIZED VIEW、REINDEX、LOCK TABLEコマンド
• リレーションを所有するなどの適切な権限をもつロールしか
これらのSQLコマンドを実行できなかった
• 例)スーパーユーザの所有するシステムカタログのVACUUMを一般ユーザは実行できない
• pg_maintain事前定義ロールを付与することで、
全リレーションに対してこれらのSQLコマンドを実行できるようになった
• v16で導入予定だったが、権限昇格のバグによりRevertされた
v16で実装されたが最終的にはRevert
© 2023 NTT DATA Group Corporation 12
VACUUM、ANALYZE、CLUSTER、
REFRESH MATERIALIZED VIEW、REINDEX、LOCK TABLEコマンド
• Amazon RDS for PostgreSQL
• v14時点で独自に対応済み
• Azure Database for PostgreSQL
• 未対応
• Cloud SQL for PostgreSQL
• 未対応
=> VACUUM pg_db_role_setting ;
VACUUM
=> VACUUM pg_db_role_setting ;
WARNING: skipping
"pg_db_role_setting" --- only
superuser can vacuum it
VACUUM
v16で実装されたが最終的にはRevert
Azure Database for PostgreSQL, Cloud SQL for PostgreSQL
Amazon RDS for PostgreSQL
© 2023 NTT DATA Group Corporation 13
CREATE EVENT TRIGGERコマンド
• CREATE EVENT TRIGGERコマンドはスーパーユーザしか実行できない
• PostgreSQL本体には実行権限を制御する機能はないが、
調査対象のクラウドでは独自に対応している
未対応
=> CREATE EVENT TRIGGER trgr ON ddl_command_start EXECUTE FUNCTION any_func() ;
ERROR: 42501: permission denied to create event trigger "abort_ddl"
HINT: Must be superuser to create an event trigger.
PostgreSQL 16
=> CREATE EVENT TRIGGER trgr ON ddl_command_start EXECUTE FUNCTION any_func() ;
CREATE EVENT TRIGGER
Amazon RDS for PostgreSQL, Azure Database for PostgreSQL, Cloud SQL for PostgreSQL
© 2023 NTT DATA Group Corporation 14
BYPASSRLS属性の付与
• v15まではスーパーユーザしかBYPASSRLS属性の付与ができなかった
• v16では自身がCREATEROLE属性とBYPASSRLS属性を
もっていれば付与できるようになった
=> ¥du shinya
List of roles
Role name | Attributes
-----------+-------------------------
shinya | Create role, Bypass RLS
=> CREATE ROLE has_bypassrls BYPASSRLS ;
CREATE ROLE
PostgreSQL 16
v16
© 2023 NTT DATA Group Corporation 15
BYPASSRLS属性の付与
• Amazon RDS for PostgreSQL
• v14時点で独自に対応済み
• Azure Database for PostgreSQL
• 未対応
• Cloud SQL for PostgreSQL
• v14時点で独自に対応済み
=> CREATE ROLE
has_bypassrls BYPASSRLS ;
CREATE ROLE
=> CREATE ROLE
has_replication REPLICATION ;
ERROR: must be superuser to create
bypassrls users
=> CREATE ROLE
has_bypassrls BYPASSRLS ;
CREATE ROLE
v16
Cloud SQL for PostgreSQL
Azure Database for PostgreSQL
Amazon RDS for PostgreSQL
© 2023 NTT DATA Group Corporation 16
REPLICATION属性の付与
• v15まではスーパーユーザしかREPLICATION属性の付与ができなかった
• v16では自身がCREATEROLE属性とREPLICATION属性を
もっていれば付与できるようになった
=> ¥du shinya
List of roles
Role name | Attributes
-----------+--------------------------
shinya | Create role, Replication
=> CREATE ROLE has_replication REPLICATION ;
CREATE ROLE
PostgreSQL 16
v16
© 2023 NTT DATA Group Corporation 17
REPLICATION属性の付与
• Amazon RDS for PostgreSQL
• 未対応
• Azure Database for PostgreSQL
• v14時点で独自に対応済み
• Cloud SQL for PostgreSQL
• v14時点で独自に対応済み
=> CREATE ROLE
has_replication REPLICATION ;
ERROR: 42501: must be superuser to
create replication users
=> CREATE ROLE
has_replication REPLICATION ;
CREATE ROLE
v16
Azure Database for PostgreSQL, Cloud SQL for PostgreSQL
Amazon RDS for PostgreSQL
© 2023 NTT DATA Group Corporation 18
任意のロールの付与
• v15まではCREATEROLE属性をもつロールは、
スーパーユーザ以外の任意のロールの付与・剥奪ができた
• v16ではADMIN OPTION付きで自身がもつロールの付与・剥奪のみ実行可能に
なった
=> ¥drg shinya
List of role grants
Role name | Member of | Options | Grantor
-----------+---------------+---------------------+---------
shinya | pg_checkpoint | ADMIN, INHERIT, SET | rocky
=> GRANT pg_checkpoint TO role_a ;
GRANT ROLE
=> GRANT pg_execute_server_program TO role_a ;
ERROR: 42501: permission denied to grant role "pg_execute_server_program"
DETAIL: Only roles with the ADMIN option on role "pg_execute_server_program" may grant
this role.
PostgreSQL 16
v16
ADMIN OPTIONつきでpg_checkpoint
をもつのでGRANT可能
もたないpg_execute_server_programはGRANT不可
© 2023 NTT DATA Group Corporation 19
任意のロールの付与
• Amazon RDS for PostgreSQL
• v14時点で独自に対応済み
• Azure Database for PostgreSQL
• v14時点で独自に対応済み
• Cloud SQL for PostgreSQL
• v14時点で独自に対応済み
=> GRANT pg_execute_server_program
TO role_a ;
ERROR: 42501: cannot alter members of
"pg_execute_server_program"
DETAIL: "pg_execute_server_program"
is a protected role.
LOCATION: check_granted_role,
rdsutils.c:1711
v16
rdsutils.cというファイルに
実装されている
Amazon RDS for PostgreSQL
© 2023 NTT DATA Group Corporation 20
【参考】 pg_execute_server_programロールによる権限昇格
https://www.slideshare.net/slideshow/embed_code/key/rscjGQhRUduPIL
© 2023 NTT DATA Group Corporation 21
設定パラメータのSET、ALTER SYSTEM SET権限
• v15から、設定パラメータの
SET、ALTER SYSTEM SET権限をGRANTコマンドで付与可能となった
v15
=> SELECT name, context FROM pg_settings
WHERE name IN ('deadlock_timeout', 'commit_delay') ;
name | context
------------------+-----------
commit_delay | superuser
deadlock_timeout | superuser
=# GRANT SET ON PARAMETER deadlock_timeout TO shinya ;
=# SET ROLE shinya ;
=> SET deadlock_timeout TO '5s’ ;
SET
=> SET commit_delay TO '5s' ;
ERROR: 42501: permission denied to set parameter "commit_delay"
deadlock_timeout
のSET権限を付与
deadlock_timeoutのSET成功
commit_delayのSET失敗
PostgreSQL 16
© 2023 NTT DATA Group Corporation 22
設定パラメータのSET、ALTER SYSTEM SET権限
• Amazon RDS for PostgreSQL
• v14時点で一部のパラメータのみ
SETできるように対応済み
• Azure Database for PostgreSQL
• v14時点で
session_replication_roleのみ
SETできるように対応済み
• Cloud SQL for PostgreSQL
• 未対応
=> SET deadlock_timeout TO '5s' ;
SET
=> SET session_replication_role
TO 'replica' ;
SET
=> SET deadlock_timeout TO '5s' ;
ERROR: permission denied to set
parameter "deadlock_timeout"
v15
Cloud SQL for PostgreSQL
Azure Database for PostgreSQL
Amazon RDS for PostgreSQL
© 2023 NTT DATA Group Corporation 23
(スーパーユーザ以外の)任意のロールのコネクションの予約
• スーパーユーザのコネクションは
superuser_reserved_connectionsパラメータで予約できた
• v16から、 pg_use_reserved_connectionsロールを付与したロールの
コネクションをreserved_connectionsパラメータで予約可能になった
v16
superuser_
reserved_connections
reserved_connections その他の接続
max_connections
同時接続可能な最大数
スーパーユーザのために
予約するコネクション数
pg_use_reserved_connections
ロールをもつロールのために
予約するコネクション数
© 2023 NTT DATA Group Corporation 24
(スーパーユーザ以外の)任意のロールのコネクションの予約
• Amazon RDS for PostgreSQL
• v14時点で独自にrds.rds_superuser_reserved_connectionsというパラメータで
RDS管理者ロールのコネクションを予約可能
• Azure Database for PostgreSQL
• 未対応
• Cloud SQL for PostgreSQL
• 未対応
=> SHOW rds.rds_superuser_reserved_connections ;
rds.rds_superuser_reserved_connections
----------------------------------------
2
v16
Amazon RDS for PostgreSQL
© 2023 NTT DATA Group Corporation 25
© 2023 NTT DATA Group Corporation
02
OSにログインできない問題
© 2023 NTT DATA Group Corporation 26
ポイント
ファイル操作を
SQLインターフェースで実行可能に
© 2023 NTT DATA Group Corporation 27
pg_ident_file_mappingsビュー
• v15から、pg_ident.confファイルの中身を
pg_ident_file_mappingsビューで確認できるようになった
• postgresql.confはpg_settingsビュー、
pg_hba.confはpg_hba_file_rulesビューで確認可能
• ただし、デフォルトではスーパーユーザのみSELECT可能なので
マネージドサービス利用者は使えない可能性が高い
v15
=# SELECT * FROM pg_ident_file_mappings ;
-[ RECORD 1 ]----------------------------------------
map_number | 1
file_name | /home/rocky/pgsql/16/data/pg_ident.conf
line_number | 73
map_name | mymap
sys_name | /^(.*)@mydomain¥.com$
pg_username | ¥1
error | [NULL]
PostgreSQL 16
© 2023 NTT DATA Group Corporation 28
pg_hba_file_rulesビュー
• デフォルトではスーパーユーザのみSELECT可能
• Amazon RDS for PostgreSQL
• SELECT権限が付与された状態でPostgreSQLが作成される
• Azure Database for PostgreSQL
• 未対応
• Cloud SQL for PostgreSQL
• 未対応
補足
=> SELECT * FROM pg_hba_file_rules LIMIT 3 ;
line_number | type | database | user_name | address | netmask | auth_method | options | error
-------------+-------+----------+------------+---------+---------+---------------+-----------+-------
2 | local | {all} | {rdsadmin} | [NULL] | [NULL] | peer | {map=rds} | [NULL]
6 | local | {all} | {all} | [NULL] | [NULL] | scram-sha-256 | [NULL] | [NULL]
12 | host | {all} | {rdsadmin} | all | [NULL] | reject | [NULL] | [NULL]
Amazon RDS for PostgreSQL
© 2023 NTT DATA Group Corporation 29
pg_walinspect拡張機能
• v15でcontribモジュールに追加された拡張機能
• マネージドサービスではOSにログインできずpg_waldumpを実行できないため、
SQLコマンドでWALの情報を確認できるようにと開発
• ただし、クラウド側でサポートされるまでは使用できない
• Amazon RDS for PostgreSQLはサポート済み
v15
=# SELECT start_lsn, end_lsn, prev_lsn, block_ref FROM
pg_get_wal_record_info('0/E419E28');
-[ RECORD 1 ]----+-------------------------------------------------
start_lsn | 0/E419E28
end_lsn | 0/E419E68
prev_lsn | 0/E419D78
block_ref | blkref #0: rel 1663/16385/1249 fork main blk 364
PostgreSQL 16
© 2023 NTT DATA Group Corporation 30
Trusted Language Extensions for PostgreSQL(pg_tle)
• AWSがOSSとして公開している、”安全な”拡張機能を開発するためのツール
• ファイルシステムアクセスやネットワーク設定を制限し、
安全性を備えた信頼性のある言語を提供
• JavaScript、Perl、PL/pgSQL、SQLでの拡張機能の作成をサポート
• Amazon RDS for PostgreSQLでは
pg_tleを使用して開発した拡張機能を自由にインストール可能
補足
© 2023 NTT DATA Group Corporation 31
まとめ
• マネージドPostgreSQLを実現するための
PostgreSQLの機能向上について説明しました
• クラウドにより対応状況は様々ですが、
利用者の利便性を向上させたり、危険な操作を防止するために、
PostgreSQLのソースコードを変更して独自に対応していることがわかりました
• マネージドPostgreSQLとオープンソース版PostgreSQLの違いを理解しつつ、
PostgreSQLのアップデートを楽しみましょう
© 2023 NTT DATA Group Corporation 32
参考文献
• https://www.postgresql.org/docs/15/release-15.html
• https://www.postgresql.org/docs/16/release-16.html
• https://www.slideshare.net/slideshow/embed_code/key/rscjGQhRUduPIL
• https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/PostgreSQL_trusted_
language_extension.html
• https://github.com/aws/pg_tle
その他、記載されている会社名、商品名、又はサービス名は、
各社の登録商標又は商標です。

More Related Content

What's hot (20)

祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
NTT DATA Technology & Innovation
 
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA OSS Professional Services
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
 
トランザクションの設計と進化
トランザクションの設計と進化
Kumazaki Hiroki
 
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
NTT DATA Technology & Innovation
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
Hironobu Suzuki
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
NTT DATA Technology & Innovation
 
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
NTT DATA Technology & Innovation
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
NTT DATA Technology & Innovation
 
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
 
PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例
kazuhcurry
 
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
yoku0825
 
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
NTT DATA Technology & Innovation
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
NTT DATA Technology & Innovation
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
 
トランザクションの設計と進化
トランザクションの設計と進化
Kumazaki Hiroki
 
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
NTT DATA Technology & Innovation
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
Hironobu Suzuki
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
NTT DATA Technology & Innovation
 
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
NTT DATA Technology & Innovation
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
NTT DATA Technology & Innovation
 
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
 
PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例
kazuhcurry
 
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
yoku0825
 
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
NTT DATA Technology & Innovation
 

Similar to マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料) (20)

PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLセキュリティ総復習
PostgreSQLセキュリティ総復習
Uptime Technologies LLC (JP)
 
PostgreSQL9.3新機能紹介
PostgreSQL9.3新機能紹介
NTT DATA OSS Professional Services
 
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
NTT DATA Technology & Innovation
 
20190202-pgunconf-Access-Privilege-Inquiry-Functions
20190202-pgunconf-Access-Privilege-Inquiry-Functions
Toshi Harada
 
PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
NTT DATA OSS Professional Services
 
[よくわかるクラウドデータベース] Amazon RDS for PostgreSQL検証報告
[よくわかるクラウドデータベース] Amazon RDS for PostgreSQL検証報告
Amazon Web Services Japan
 
PostgreSQL10徹底解説
PostgreSQL10徹底解説
Masahiko Sawada
 
PostgreSQL15 新機能紹介
PostgreSQL15 新機能紹介
Satoshi Hirata
 
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介
Masahiko Sawada
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
NTT DATA Technology & Innovation
 
PostgreSQLのソース・ターゲットエンドポイントとしての利用
PostgreSQLのソース・ターゲットエンドポイントとしての利用
QlikPresalesJapan
 
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
Ohyama Masanori
 
PostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめ
Ohyama Masanori
 
PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料)
PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料)
NTT DATA Technology & Innovation
 
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
NTT DATA Technology & Innovation
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
NTT DATA Technology & Innovation
 
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
NTT DATA Technology & Innovation
 
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
NTT DATA Technology & Innovation
 
20190202-pgunconf-Access-Privilege-Inquiry-Functions
20190202-pgunconf-Access-Privilege-Inquiry-Functions
Toshi Harada
 
[よくわかるクラウドデータベース] Amazon RDS for PostgreSQL検証報告
[よくわかるクラウドデータベース] Amazon RDS for PostgreSQL検証報告
Amazon Web Services Japan
 
PostgreSQL10徹底解説
PostgreSQL10徹底解説
Masahiko Sawada
 
PostgreSQL15 新機能紹介
PostgreSQL15 新機能紹介
Satoshi Hirata
 
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL 9.6 新機能紹介
PostgreSQL 9.6 新機能紹介
Masahiko Sawada
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
NTT DATA Technology & Innovation
 
PostgreSQLのソース・ターゲットエンドポイントとしての利用
PostgreSQLのソース・ターゲットエンドポイントとしての利用
QlikPresalesJapan
 
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
Ohyama Masanori
 
PostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめ
Ohyama Masanori
 
PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料)
PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料)
NTT DATA Technology & Innovation
 
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
NTT DATA Technology & Innovation
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
NTT DATA Technology & Innovation
 
Ad

More from NTT DATA Technology & Innovation (20)

PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
NTT DATA Technology & Innovation
 
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
NTT DATA Technology & Innovation
 
つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)
つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)
NTT DATA Technology & Innovation
 
2025年現在のNewSQL (最強DB講義 #36 発表資料)
2025年現在のNewSQL (最強DB講義 #36 発表資料)
NTT DATA Technology & Innovation
 
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
NTT DATA Technology & Innovation
 
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
NTT DATA Technology & Innovation
 
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
 
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
NTT DATA Technology & Innovation
 
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
NTT DATA Technology & Innovation
 
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
NTT DATA Technology & Innovation
 
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
NTT DATA Technology & Innovation
 
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
NTT DATA Technology & Innovation
 
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
NTT DATA Technology & Innovation
 
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
NTT DATA Technology & Innovation
 
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
NTT DATA Technology & Innovation
 
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
NTT DATA Technology & Innovation
 
つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)
つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)
NTT DATA Technology & Innovation
 
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
NTT DATA Technology & Innovation
 
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
NTT DATA Technology & Innovation
 
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
 
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
NTT DATA Technology & Innovation
 
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
NTT DATA Technology & Innovation
 
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
NTT DATA Technology & Innovation
 
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
NTT DATA Technology & Innovation
 
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
NTT DATA Technology & Innovation
 
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
NTT DATA Technology & Innovation
 
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
NTT DATA Technology & Innovation
 
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
Ad

マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)

  • 1. © 2023 NTT DATA Group Corporation © 2023 NTT DATA Group Corporation マネージドPostgreSQLの実現に向けた PostgreSQL機能向上 2023年11月24日 PostgreSQL Conference Japan 2023 株式会社NTTデータグループ 技術開発本部 加藤 慎也
  • 2. © 2023 NTT DATA Group Corporation 2 自己紹介 • 名前 • 加藤 慎也 @ShinyaKato_ • 所属 • 株式会社NTTデータグループ 技術開発本部 • 業務 • PostgreSQLコミュニティでの開発 • PostgreSQLの研究開発やサポート業務
  • 3. © 2023 NTT DATA Group Corporation 3 本講演について • 講演資料は、NTTデータグループのSlideShareアカウント上で公開中 • https://www.slideshare.net/nttdata-tech • 検証環境 製品名 バージョン Amazon RDS for PostgreSQL PostgreSQL 14.7 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-12), 64-bit Azure Database for PostgreSQL (フレキシブル サーバー) PostgreSQL 14.7 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 7.5.0- 3ubuntu1~18.04) 7.5.0, 64-bit Cloud SQL for PostgreSQL PostgreSQL 14.7 on x86_64-pc-linux-gnu, compiled by Debian clang version 12.0.1, 64-bit オープンソース版PostgreSQL PostgreSQL 16.1
  • 4. © 2023 NTT DATA Group Corporation 4 マネージドサービスを使用していて、 権限が足りなくてやりたいことができない、 と困ったことはありませんか? スーパーユーザ使えないのか…? ということはCHECKPOINTコマンド 実行できないな… 必要な権限を付与できない… あれ、何故かこのパラメータは 変更できないぞ…
  • 5. © 2023 NTT DATA Group Corporation 5 PostgreSQLの機能が向上することで これらの課題が解決しつつあります! スーパーユーザ使えないのか…? ということはCHECKPOINTコマンド 実行できないな… 必要な権限を付与できない… あれ、何故かこのパラメータは 変更できないぞ… v15~ CHECKPOINTコマンドの権限を付与可能に! v16~ 権限付与のルールが変更 v15~ パラメータ毎にSET権限を設定可能
  • 6. © 2023 NTT DATA Group Corporation 6 マネージドPostgreSQLの主な制約 スーパーユーザを使用できない OSにログインできない • 一部のSQLコマンドを実行できない • 一部の権限を付与できない • 一部のパラメータを設定できない • スーパーユーザの所有するリレーション に対する任意の操作を実行できない • サーバのファイルを読み書きできない • サーバプログラムを実行できない • 拡張機能をインストールできない
  • 7. © 2023 NTT DATA Group Corporation 7 © 2023 NTT DATA Group Corporation 01 スーパーユーザを 使用できない問題
  • 8. © 2023 NTT DATA Group Corporation 8 ポイント 権限をより細やかに管理できる ような機能が充実
  • 9. © 2023 NTT DATA Group Corporation 9 CHECKPOINTコマンド • v14まではスーパーユーザしかCHECKPOINTコマンドを実行できなかった • v15で実装されたpg_checkpoint事前定義ロールを付与することで、 一般ユーザでもCHECKPOINTコマンドを実行できるようになった v15 =# CREATE ROLE not_have_pg_checkpoint ; =# SET ROLE not_have_pg_checkpoint ; => CHECKPOINT ; ERROR: 42501: permission denied to execute CHECKPOINT command DETAIL: Only roles with privileges of the "pg_checkpoint" role may execute this command. => RESET ROLE ; =# CREATE ROLE has_pg_checkpoint IN ROLE pg_checkpoint ; =# SET ROLE has_pg_checkpoint ; => CHECKPOINT ; CHECKPOINT pg_checkpointをもたないロールで CHECKPOINTコマンドを実行するとエラー pg_checkpointをもつロールで CHECKPOINTコマンドを実行すると成功
  • 10. © 2023 NTT DATA Group Corporation 10 CHECKPOINTコマンド • Amazon RDS for PostgreSQL • v14時点で独自に対応済み • Azure Database for PostgreSQL • v14時点で独自に対応済み • Cloud SQL for PostgreSQL • 未対応 => CHECKPOINT ; CHECKPOINT v15 => CHECKPOINT ; ERROR: 42501: must be superuser to do CHECKPOINT つまりソースコードを変更している! Cloud SQL for PostgreSQL Amazon RDS for PostgreSQL, Azure Database for PostgreSQL
  • 11. © 2023 NTT DATA Group Corporation 11 VACUUM、ANALYZE、CLUSTER、 REFRESH MATERIALIZED VIEW、REINDEX、LOCK TABLEコマンド • リレーションを所有するなどの適切な権限をもつロールしか これらのSQLコマンドを実行できなかった • 例)スーパーユーザの所有するシステムカタログのVACUUMを一般ユーザは実行できない • pg_maintain事前定義ロールを付与することで、 全リレーションに対してこれらのSQLコマンドを実行できるようになった • v16で導入予定だったが、権限昇格のバグによりRevertされた v16で実装されたが最終的にはRevert
  • 12. © 2023 NTT DATA Group Corporation 12 VACUUM、ANALYZE、CLUSTER、 REFRESH MATERIALIZED VIEW、REINDEX、LOCK TABLEコマンド • Amazon RDS for PostgreSQL • v14時点で独自に対応済み • Azure Database for PostgreSQL • 未対応 • Cloud SQL for PostgreSQL • 未対応 => VACUUM pg_db_role_setting ; VACUUM => VACUUM pg_db_role_setting ; WARNING: skipping "pg_db_role_setting" --- only superuser can vacuum it VACUUM v16で実装されたが最終的にはRevert Azure Database for PostgreSQL, Cloud SQL for PostgreSQL Amazon RDS for PostgreSQL
  • 13. © 2023 NTT DATA Group Corporation 13 CREATE EVENT TRIGGERコマンド • CREATE EVENT TRIGGERコマンドはスーパーユーザしか実行できない • PostgreSQL本体には実行権限を制御する機能はないが、 調査対象のクラウドでは独自に対応している 未対応 => CREATE EVENT TRIGGER trgr ON ddl_command_start EXECUTE FUNCTION any_func() ; ERROR: 42501: permission denied to create event trigger "abort_ddl" HINT: Must be superuser to create an event trigger. PostgreSQL 16 => CREATE EVENT TRIGGER trgr ON ddl_command_start EXECUTE FUNCTION any_func() ; CREATE EVENT TRIGGER Amazon RDS for PostgreSQL, Azure Database for PostgreSQL, Cloud SQL for PostgreSQL
  • 14. © 2023 NTT DATA Group Corporation 14 BYPASSRLS属性の付与 • v15まではスーパーユーザしかBYPASSRLS属性の付与ができなかった • v16では自身がCREATEROLE属性とBYPASSRLS属性を もっていれば付与できるようになった => ¥du shinya List of roles Role name | Attributes -----------+------------------------- shinya | Create role, Bypass RLS => CREATE ROLE has_bypassrls BYPASSRLS ; CREATE ROLE PostgreSQL 16 v16
  • 15. © 2023 NTT DATA Group Corporation 15 BYPASSRLS属性の付与 • Amazon RDS for PostgreSQL • v14時点で独自に対応済み • Azure Database for PostgreSQL • 未対応 • Cloud SQL for PostgreSQL • v14時点で独自に対応済み => CREATE ROLE has_bypassrls BYPASSRLS ; CREATE ROLE => CREATE ROLE has_replication REPLICATION ; ERROR: must be superuser to create bypassrls users => CREATE ROLE has_bypassrls BYPASSRLS ; CREATE ROLE v16 Cloud SQL for PostgreSQL Azure Database for PostgreSQL Amazon RDS for PostgreSQL
  • 16. © 2023 NTT DATA Group Corporation 16 REPLICATION属性の付与 • v15まではスーパーユーザしかREPLICATION属性の付与ができなかった • v16では自身がCREATEROLE属性とREPLICATION属性を もっていれば付与できるようになった => ¥du shinya List of roles Role name | Attributes -----------+-------------------------- shinya | Create role, Replication => CREATE ROLE has_replication REPLICATION ; CREATE ROLE PostgreSQL 16 v16
  • 17. © 2023 NTT DATA Group Corporation 17 REPLICATION属性の付与 • Amazon RDS for PostgreSQL • 未対応 • Azure Database for PostgreSQL • v14時点で独自に対応済み • Cloud SQL for PostgreSQL • v14時点で独自に対応済み => CREATE ROLE has_replication REPLICATION ; ERROR: 42501: must be superuser to create replication users => CREATE ROLE has_replication REPLICATION ; CREATE ROLE v16 Azure Database for PostgreSQL, Cloud SQL for PostgreSQL Amazon RDS for PostgreSQL
  • 18. © 2023 NTT DATA Group Corporation 18 任意のロールの付与 • v15まではCREATEROLE属性をもつロールは、 スーパーユーザ以外の任意のロールの付与・剥奪ができた • v16ではADMIN OPTION付きで自身がもつロールの付与・剥奪のみ実行可能に なった => ¥drg shinya List of role grants Role name | Member of | Options | Grantor -----------+---------------+---------------------+--------- shinya | pg_checkpoint | ADMIN, INHERIT, SET | rocky => GRANT pg_checkpoint TO role_a ; GRANT ROLE => GRANT pg_execute_server_program TO role_a ; ERROR: 42501: permission denied to grant role "pg_execute_server_program" DETAIL: Only roles with the ADMIN option on role "pg_execute_server_program" may grant this role. PostgreSQL 16 v16 ADMIN OPTIONつきでpg_checkpoint をもつのでGRANT可能 もたないpg_execute_server_programはGRANT不可
  • 19. © 2023 NTT DATA Group Corporation 19 任意のロールの付与 • Amazon RDS for PostgreSQL • v14時点で独自に対応済み • Azure Database for PostgreSQL • v14時点で独自に対応済み • Cloud SQL for PostgreSQL • v14時点で独自に対応済み => GRANT pg_execute_server_program TO role_a ; ERROR: 42501: cannot alter members of "pg_execute_server_program" DETAIL: "pg_execute_server_program" is a protected role. LOCATION: check_granted_role, rdsutils.c:1711 v16 rdsutils.cというファイルに 実装されている Amazon RDS for PostgreSQL
  • 20. © 2023 NTT DATA Group Corporation 20 【参考】 pg_execute_server_programロールによる権限昇格 https://www.slideshare.net/slideshow/embed_code/key/rscjGQhRUduPIL
  • 21. © 2023 NTT DATA Group Corporation 21 設定パラメータのSET、ALTER SYSTEM SET権限 • v15から、設定パラメータの SET、ALTER SYSTEM SET権限をGRANTコマンドで付与可能となった v15 => SELECT name, context FROM pg_settings WHERE name IN ('deadlock_timeout', 'commit_delay') ; name | context ------------------+----------- commit_delay | superuser deadlock_timeout | superuser =# GRANT SET ON PARAMETER deadlock_timeout TO shinya ; =# SET ROLE shinya ; => SET deadlock_timeout TO '5s’ ; SET => SET commit_delay TO '5s' ; ERROR: 42501: permission denied to set parameter "commit_delay" deadlock_timeout のSET権限を付与 deadlock_timeoutのSET成功 commit_delayのSET失敗 PostgreSQL 16
  • 22. © 2023 NTT DATA Group Corporation 22 設定パラメータのSET、ALTER SYSTEM SET権限 • Amazon RDS for PostgreSQL • v14時点で一部のパラメータのみ SETできるように対応済み • Azure Database for PostgreSQL • v14時点で session_replication_roleのみ SETできるように対応済み • Cloud SQL for PostgreSQL • 未対応 => SET deadlock_timeout TO '5s' ; SET => SET session_replication_role TO 'replica' ; SET => SET deadlock_timeout TO '5s' ; ERROR: permission denied to set parameter "deadlock_timeout" v15 Cloud SQL for PostgreSQL Azure Database for PostgreSQL Amazon RDS for PostgreSQL
  • 23. © 2023 NTT DATA Group Corporation 23 (スーパーユーザ以外の)任意のロールのコネクションの予約 • スーパーユーザのコネクションは superuser_reserved_connectionsパラメータで予約できた • v16から、 pg_use_reserved_connectionsロールを付与したロールの コネクションをreserved_connectionsパラメータで予約可能になった v16 superuser_ reserved_connections reserved_connections その他の接続 max_connections 同時接続可能な最大数 スーパーユーザのために 予約するコネクション数 pg_use_reserved_connections ロールをもつロールのために 予約するコネクション数
  • 24. © 2023 NTT DATA Group Corporation 24 (スーパーユーザ以外の)任意のロールのコネクションの予約 • Amazon RDS for PostgreSQL • v14時点で独自にrds.rds_superuser_reserved_connectionsというパラメータで RDS管理者ロールのコネクションを予約可能 • Azure Database for PostgreSQL • 未対応 • Cloud SQL for PostgreSQL • 未対応 => SHOW rds.rds_superuser_reserved_connections ; rds.rds_superuser_reserved_connections ---------------------------------------- 2 v16 Amazon RDS for PostgreSQL
  • 25. © 2023 NTT DATA Group Corporation 25 © 2023 NTT DATA Group Corporation 02 OSにログインできない問題
  • 26. © 2023 NTT DATA Group Corporation 26 ポイント ファイル操作を SQLインターフェースで実行可能に
  • 27. © 2023 NTT DATA Group Corporation 27 pg_ident_file_mappingsビュー • v15から、pg_ident.confファイルの中身を pg_ident_file_mappingsビューで確認できるようになった • postgresql.confはpg_settingsビュー、 pg_hba.confはpg_hba_file_rulesビューで確認可能 • ただし、デフォルトではスーパーユーザのみSELECT可能なので マネージドサービス利用者は使えない可能性が高い v15 =# SELECT * FROM pg_ident_file_mappings ; -[ RECORD 1 ]---------------------------------------- map_number | 1 file_name | /home/rocky/pgsql/16/data/pg_ident.conf line_number | 73 map_name | mymap sys_name | /^(.*)@mydomain¥.com$ pg_username | ¥1 error | [NULL] PostgreSQL 16
  • 28. © 2023 NTT DATA Group Corporation 28 pg_hba_file_rulesビュー • デフォルトではスーパーユーザのみSELECT可能 • Amazon RDS for PostgreSQL • SELECT権限が付与された状態でPostgreSQLが作成される • Azure Database for PostgreSQL • 未対応 • Cloud SQL for PostgreSQL • 未対応 補足 => SELECT * FROM pg_hba_file_rules LIMIT 3 ; line_number | type | database | user_name | address | netmask | auth_method | options | error -------------+-------+----------+------------+---------+---------+---------------+-----------+------- 2 | local | {all} | {rdsadmin} | [NULL] | [NULL] | peer | {map=rds} | [NULL] 6 | local | {all} | {all} | [NULL] | [NULL] | scram-sha-256 | [NULL] | [NULL] 12 | host | {all} | {rdsadmin} | all | [NULL] | reject | [NULL] | [NULL] Amazon RDS for PostgreSQL
  • 29. © 2023 NTT DATA Group Corporation 29 pg_walinspect拡張機能 • v15でcontribモジュールに追加された拡張機能 • マネージドサービスではOSにログインできずpg_waldumpを実行できないため、 SQLコマンドでWALの情報を確認できるようにと開発 • ただし、クラウド側でサポートされるまでは使用できない • Amazon RDS for PostgreSQLはサポート済み v15 =# SELECT start_lsn, end_lsn, prev_lsn, block_ref FROM pg_get_wal_record_info('0/E419E28'); -[ RECORD 1 ]----+------------------------------------------------- start_lsn | 0/E419E28 end_lsn | 0/E419E68 prev_lsn | 0/E419D78 block_ref | blkref #0: rel 1663/16385/1249 fork main blk 364 PostgreSQL 16
  • 30. © 2023 NTT DATA Group Corporation 30 Trusted Language Extensions for PostgreSQL(pg_tle) • AWSがOSSとして公開している、”安全な”拡張機能を開発するためのツール • ファイルシステムアクセスやネットワーク設定を制限し、 安全性を備えた信頼性のある言語を提供 • JavaScript、Perl、PL/pgSQL、SQLでの拡張機能の作成をサポート • Amazon RDS for PostgreSQLでは pg_tleを使用して開発した拡張機能を自由にインストール可能 補足
  • 31. © 2023 NTT DATA Group Corporation 31 まとめ • マネージドPostgreSQLを実現するための PostgreSQLの機能向上について説明しました • クラウドにより対応状況は様々ですが、 利用者の利便性を向上させたり、危険な操作を防止するために、 PostgreSQLのソースコードを変更して独自に対応していることがわかりました • マネージドPostgreSQLとオープンソース版PostgreSQLの違いを理解しつつ、 PostgreSQLのアップデートを楽しみましょう
  • 32. © 2023 NTT DATA Group Corporation 32 参考文献 • https://www.postgresql.org/docs/15/release-15.html • https://www.postgresql.org/docs/16/release-16.html • https://www.slideshare.net/slideshow/embed_code/key/rscjGQhRUduPIL • https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/PostgreSQL_trusted_ language_extension.html • https://github.com/aws/pg_tle