はじめに
UL Systems Advent Calendar 2019 の16日目です。
データ分析などユーザーがアドホックなクエリを実行する環境では、誰が発行したクエリであるかを把握するために、作業者ごとにデータベースユーザーを作成することがあります。
Redshiftにはデータベースのユーザー認証もIAMで行うことができます。
本機能「IAM 認証を使用したデータベースユーザー認証情報の生成」が導入できるか技術検証を行った際、数点制約事項があることが判明したため、その情報共有となります。
パブリックインターネットアクセスが必須
データベースユーザーの認証情報生成API「get-cluster-credentials」にて、HTTPS (ポート443)でredshift.ap-northeast-1.amazonaws.comにアクセスします。
2019年12月現在、RedshiftはVPCエンドポイントに対応していないため、パブリックインターネット経由でのアクセスが必須となります。
プライベートサブネット上のEC2などからアクセスする場合、「NAT ゲートウェイ / NAT インスタンス」、「プロキシ」などを利用することになります。
get-cluster-credentialsで生成されたユーザーの権限情報を他ユーザーから参照できない
get-cluster-credentialsで生成されたユーザー(user_a)の権限を、他のユーザー(user_b)が参照することができません。
HAS_TABLE_PRIVILEGEなどの権限確認関数は、実行ユーザーによって結果がかわります。今回の例ではuser_aで実行すればtrue、user_bで実行すればfalseが返ります。
その為、user_aが作成したテーブルに対し、あるグループはデフォルトでselectできるようalter default privilegesで権限付与を行いたい場合、user_aでしか行えません。
まとめ
上記のような制約も多いため、導入する前に十分な技術検証期間を設けたほうがよいと思います。
また、公式ドキュメントはあるものの、導入事例の少ない技術でもあるため、問題が発生した場合、自力で解決することになります。
AWSサポートへの問い合わせがなければ解決が難しいことも多いため、ビジネスプラン以上を契約している環境で検証は行いましょう。