AWS Redshiftのスーパーユーザと一般ユーザーの違い

目次

スーパーユーザと一般ユーザーの違いのまとめ

全オブジェクトへの
アクセス
ユーザー作成 システムテーブル参照
スーパーユーザ 可能 可能 全て可能
一般ユーザー 要 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;

関連の記事

AWS Redshiftを作成・削除・実行結果を確認する

△上に戻る