目次
スーパーユーザと一般ユーザーの違いのまとめ
| 全オブジェクトへの アクセス |
ユーザー作成 | システムテーブル参照 | |
|---|---|---|---|
| スーパーユーザ | 可能 | 可能 | 全て可能 |
| 一般ユーザー | 要 GRANT | 不可(権限がなければ) | 一部のみ |
運用上は スーパーユーザーの使用を最小限に抑え、一般ユーザーに必要な権限のみを付与が推奨されています。
スーパーユーザとは
Redshiftのスーパーユーザーとは、DB内のすべてを操作できる管理者ユーザーです。
特徴
- すべてのデータベースオブジェクトに対して無制限のアクセス権を持つ
- 他のユーザーやグループの作成・削除・変更が可能
- GRANT / REVOKE を使わずとも、すべてのテーブル・スキーマ・関数にアクセスできる
- システムカタログ(pg_catalog など)への完全なアクセスが可能
注意点
- 全てのデータを閲覧・削除できるため、日常的なクエリ実行に常用することは推奨されません。
- 管理者(Admin)用の最小限の人数に絞るのが一般的です。
代表的なスーパーユーザー
| awsuser | クラスター作成時に自動生成されるデフォルトのスーパーユーザー |
| 手動作成のスーパーユーザー | CREATE USER ... CREATEUSER で作成したユーザー |
作成方法
CREATE USER user_name PASSWORD 'xxxx' CREATEUSER;
-- または既存ユーザーに付与
ALTER USER user_name CREATEUSER;
-- スーパーユーザを外す
ALTER USER user_name NOCREATEUSER;
一般ユーザーとは
一般ユーザーとは、権限を付与された範囲のみ操作できる利用者ユーザーです。
特徴
- デフォルトでは自分が作成したオブジェクトのみ操作可能
- 他のオブジェクトへのアクセスには GRANT による権限付与が必要
- スキーマ・テーブル・ビュー・関数ごとに細かく権限を制御できる
作成方法
CREATE USER general_user PASSWORD 'xxxx';
-- 権限付与の例
GRANT USAGE ON SCHEMA myschema TO user_name;
GRANT SELECT ON ALL TABLES IN SCHEMA myschema TO user_name;
グループとロール
グループとロールは、複数ユーザーへの権限管理を効率化する仕組みです。
| 項目 | グループ (Group) | ロール (Role) |
|---|---|---|
| 導入時期 | 従来から存在 | 比較的新しい(推奨) |
| ネスト(階層化) | ❌ 不可 | ◯ 可能 |
| ユーザーへの付与 | ユーザーをグループに追加 | ロールをユーザーに付与 |
| ロールへの付与 | ❌ 不可 | ◯ ロールに別のロールを付与可能 |
| システムロールの利用 | ❌ なし | ◯ あり |
| 将来性 | 非推奨方向 | AWS 推奨 |
グループ
グループは、ユーザーをまとめて権限管理するためのシンプルな仕組みです。
ロール
ロールは、以下が行なえます。ロールの使用が推奨されています。
- 階層化により、権限設計がシンプルになる
- システムロールが使えてスーパーユーザーの利用を減らせる
システムロールとは
| システムロール | 説明 |
|---|---|
sys:superuser |
スーパーユーザー相当 |
sys:dba |
DB管理操作が可能 |
sys:operator |
運用・モニタリング操作が可能 |
sys:secadmin |
ユーザー・ロール管理が可能 |
sys:monitor |
システムテーブルの参照が可能 |
使用例
GRANT ROLE sys:dba TO user_name;
関連の記事
