背景・目的
Aurora PostgreSQLのrds_superuserについて整理します。
まとめ
下記に特徴をまとめます。
| 特徴 | 説明 |
|---|---|
| ロール | データベース内のさまざまなオブジェクトに対して、ユーザー、グループ、またはグループやユーザーに与えられた特定のアクセス権限を定義できる |
| rds_superuserロール | postgres ユーザーには デフォルトで rds_superuser ロールの権限 が付与されている スーパーユーザー相当の作業を行うユーザー向け |
概要
下記を基に整理します。
- PostgreSQL では、ロールは、データベース内のさまざまなオブジェクトに対して、ユーザー、グループ、またはグループやユーザーに与えられた特定のアクセス権限を定義できる
- PostgreSQL では、ロールによって下記を定義できる
- ユーザー
- グループ
- ユーザー/グループに付与されるアクセス権限
- CREATE USER と CREATE GROUP は、CREATE ROLE に統合された
- CREATE USER および CREATE GROUP コマンドは 引き続き使用可能
- データベースユーザーは LOGIN 権限を持つロールとして扱われる
- postgres ユーザーの位置づけ(Aurora PostgreSQL)
- Aurora PostgreSQL DB クラスターにおいて、postgres は最も権限のあるデータベースユーザー
- postgres ユーザーは、CREATE ROLE 定義を持つ
rds_superuser ロール
- postgres ユーザーには デフォルトで rds_superuser ロールの権限 が付与されている
- postgres には以下の権限がある
- ロールの作成
- データベースの作成
- スーパーユーザー相当の作業を行うユーザー向け
- DBA またはシステム管理者への付与が推奨されている
その他のロール操作
- rds_superuser を持たないユーザーに対して、以下のロールを付与または剥奪できる
- rds_replication
- rds_password
- pg_stat_activity ビューにより、すべての DB 接続の状態を確認可能
- rds_superuser は以下の関数を使用して接続を制御できる
- pg_terminate_backend
- pg_cancel_backend
superuser 制限(Aurora の仕様)
- postgres ロールは PostgreSQL の superuser 権限を明示的に持たない
- Aurora PostgreSQL はマネージドサービスのため、ホスト OS へのアクセス不可、PostgreSQL superuser アカウントでの接続不可
- スタンドアロン PostgreSQL で superuser が必要な作業の多くは Aurora が自動管理
定義済みロール(事前定義ロール)
- rds_superuser は PostgreSQL DB クラスターの定義済みロールの 1 つ
- 定義済みロールは、下記の特徴がある
- 削除不可
- 名前変更不可
- 権限変更不可
- 変更を試みるとエラーになる
rds_password ロール
- rds_password ロールは以下を可能にする
- データベースユーザーのパスワード変更
- パスワード制約の設定
- rds_superuser には デフォルトで rds_password が付与されている
rdsadmin ロール
- スタンドアロン PostgreSQL における superuser 作業の多くを処理するためのロール
- Aurora PostgreSQL が内部的に使用する
参考