Amazon Redshift クラスターのシステムテーブルで他のユーザーが生成したデータを、Amazon Redshift ユーザーが閲覧できるようにしたいです。
解決策
デフォルトでは、Amazon Redshift データベースのスーパーユーザーのみがすべてのデータベースを閲覧するアクセス許可を持っています。他のユーザーがシステムテーブルで生成したデータを閲覧するには、UNRESTRICTED アクセス付き SYSLOG ACCESS パラメータを追加します。
注: SYSLOG ACCESS を持つユーザーは、スーパーユーザーのテーブルは閲覧できません。スーパーユーザーのみが、他のスーパーユーザーのテーブルを閲覧できます。
次の手順を実行します。
-
スーパーユーザーとして Amazon Redshift データベースに接続します。
-
SQL コマンド ALTER USER を実行します。
test=# ALTER USER testuser WITH SYSLOG ACCESS UNRESTRICTED;
ALTER USER
注: testuser は、アクセスを付与する対象ユーザー名に置き換えます。ALTER USER に必須のアクセス許可についても確認してください。
-
スーパーユーザーでの、Amazon Redshift データベースとの接続を切断します。
-
UNRESTRICTED アクセス付き SYSLOG ACCESS を持つユーザーとして Amazon Redshift データベースに接続します。
-
次のコマンドを実行してアクセスをテストします。
test=> select * from stv_inflight;
次の出力例は、UNRESTRICTED アクセスを付与したユーザーに、ユーザーのテーブルを閲覧するアクセス許可が付与されたことを示しています。
-[ RECORD 1 ]--------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
userid | 100
slice | 12811
query | 3036
label | default
xid | 35079530
pid | 1073746910
starttime | 2022-09-15 07:09:15.894317
text | select * from my_schema.dw_lu_tiers_test a, my_schema.dw_lu_tiers_test;
suspended | 0
insert_pristine | 0
concurrency_scaling_status | 0
-[ RECORD 2 ]--------------+---------------------------------------------------------------------------------------------------------------------------------------------------
userid | 181
slice | 12811
query | 3038
label | default
xid | 35079531
pid | 1073877909
starttime | 2022-09-15 07:09:17.694285
text | select * from stv_inflight;
suspended | 0
insert_pristine | 0
concurrency_scaling_status | 0