Amazon Redshift編~5分で理解するユーザの権限設定~

Pocket

こんにちは、TKです。

今回はRedshiftのユーザ権限についてご紹介したいと思います。

Redshiftの権限概要

RedshiftはPostgreSQLを基にしているエンジンのため、PostgreSQLの一部構文を使うことができます。
GrantやALTERコマンドが対象になります。
ただし、ALTER ROLEなどRedshiftで使えないパターンも有るので注意しましょう。
詳しい権限の内容についての説明はこちらのURLを参考にしてください。
http://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_CREATE_USER.html
http://docs.aws.amazon.com/ja_jp/redshift/latest/dg/t_user_group_examples.html

ユーザの作成と権限の設定

それでは実際にユーザを作成して権限を設定します。
ユーザ作成及び、権限設定はスーパーユーザで行う必要があります。
また、権限を付加するテーブルまたはスキーマが存在するデータベースにログインしましょう。
ログイン後次のコマンドでユーザを作成します。

ユーザを作成後、ユーザグループを作成します。

グループにユーザを紐付けます。

既にグループが存在する場合は紐付けを同時に行いながらユーザ作成を行えます。

それでは権限を設定してみます。
今回はスキーマ’testschema’以下に存在する全てのテーブルにSELECT権限を設定してみます。
testuserが所属するtestgroupに紐付けることでグループに所属している全てのユーザが権限を得ます。
ユーザに個別に設定する場合はgroupをuserに変更します。

テーブルごとに細かく設定したい場合は以下のコマンドになります。

権限確認する場合は次のコマンドを入力します。

括弧の中、左からユーザ名、テーブル名、確認する権限の順に入力します。
結果として”t”、または”true”と返ってきた場合、権限があることを示しています。

以上の内容ではスキーマに存在する既存テーブルに対して権限を振ることができました。
しかし、別のユーザがテーブルを作成した場合、新しいテーブルには他のユーザの権限が存在しません。
テーブルを作成するたび権限を付け直していては手間がかかります。
今回の場合、テーブルを作成する側のユーザに対して、テーブル作成時に特定ユーザに権限を発行する設定を行います。

これで新たにテーブル作成した場合に、特定ユーザに自動的に権限が発行されます。

いかがでしたでしょうか。

今回はRedshiftの権限設定を説明しました。

Redshiftの権限設定についてお役に立てば幸いです。

次回をお楽しみに!