3
3

More than 3 years have passed since last update.

AWS Redshift Spectrumとviewの組み合わせのアクセス権限を調べる

Posted at

公式ドキュメントにわかりやすい説明が見つからなかったので、実際にRedshiftを動かして試した結果をまとめました。試した結果なので、違ってたらごめんなさい。

image.png

図の中の3つのライン

  1. 通常のRedshift内のtableにviewを通してアクセス(PostgreSQLでも同様)
  2. Redshift Spectrumの外部スキーマのtableに直接アクセス
  3. Redshift Spectrumの外部スキーマのtableにviewを通してアクセス

1. 通常のRedshift内のtableにviewを通してアクセス(PostgreSQLでも同様)

まず、DB userはviewへのSELECT権限が必要です。viewを作成したオーナーであればSELECT権限があります。viewを作成したのが別のDB userの場合は、オーナーを変更するかGRANTする必要があります。

次に、viewのオーナーはtableへのSELECT権限が必要です。tableを作成したオーナーであればSELECT権限があります。tableを作成したのが別のDB userの場合は、オーナーを変更するかGRANTする必要があります。

これらの条件を満たせば、DB userはtableへのSELECT権限を持っていなくても、viewを通すことでtableにあるデータにアクセスできます。

これはPostgreSQLでも同じです。

2. Redshift Spectrumの外部スキーマのtableに直接アクセス

DB userはSpectrumの外部スキーマのUSAGE権限が必要です。外部スキーマを作成したオーナーであればUSAGE権限があります。外部スキーマを作成したのが別のDB userの場合は、オーナーを変更するかGRANTする必要があります。

3. Redshift Spectrumの外部スキーマのtableにviewを通してアクセス

まず、DB userはviewへのSELECT権限が必要です。viewを作成したオーナーであればSELECT権限があります。viewを作成したのが別のDB userの場合は、オーナーを変更するかGRANTする必要があります。

次に、viewを参照するDB userは外部スキーマのUSAGE権限が必要です。外部スキーマを作成したオーナーであればUSAGE権限があります。外部スキーマを作成したのが別のDB userの場合は、オーナーを変更するかGRANTする必要があります。

1と2の事実からすると、3のケースでは、外部スキーマのUSAGE権限が必要なのはviewのオーナーだと思ったのですが、viewのオーナーは関係なくて、viewを参照するDB userが直接外部スキーマへの権限を必要とするようなんです。

そうなのか。。。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3