[アップデート]Amazon Redshift で行レベルセキュリティが強化されました #AWSreinvent
アップデート概要
Amazon Redshift は、行レベルセキュリティ(RLS)ポリシーの CONJUNCTION TYPE のサポートと、標準ビューとレイトバインディングビューの RLS サポートを開始しました。このアップデートにより行レベルのよりきめ細かいアクセスを制御することが可能となり、基礎となるデータが更新されたりユーザー権限が変更された場合でもユーザーが閲覧権限のある行のみにアクセスできるようにすることができます。
CONJUNCTION TYPE について
CONJUNCTION TYPE がサポートされたことでユーザーに対して複数のポリシーが定義されている場合でもテーブルの RLS CONJUNCTION TYPE 設定に応じて、AND または OR 構文のいずれかですべてのポリシーを適用します。
行レベルセキュリティ(RLS)について
行レベルセキュリティ(RLS)を使用すると、機密データに対してきめ細かいアクセス制御を行うことができます。データベースオブジェクトレベルで定義されたセキュリティポリシーに基づきスキーマやテーブル内のデータの特定のレコードにアクセスできるユーザーやロールを制御することができます。
列のサブセットに対してユーザーにアクセス許可を与える列レベルのセキュリティに加えて、RLS ポリシーを使用すると、表示されている列の特定の行へのアクセスをさらに制限することができます。
RLS ポリシーの利用
テーブルに RLS ポリシーを適用すると、ユーザーがクエリを実行したときに返される結果セットを制限できます。
RLS ポリシーを作成する際、Amazon Redshift がクエリでテーブル内の既存の行を返すかどうかを決定する式を指定できます。RLS ポリシーを作成してアクセスを制限することで、クエリに追加の条件を追加したり外部化したりする必要がなくなります。
RLS ポリシーを作成する際は、ポリシー内の複雑なステートメントを避けシンプルなポリシーを作成することをお勧めします。また、RLS ポリシーを定義する場合、ポリシーに基づくポリシー定義で過剰なテーブル結合を使用することは非推奨となっています。
RLS ポリシーの管理
スーパーユーザー、セキュリティ管理者、sys:secadmin ロールを持つユーザーのいずれかであればテーブルのすべての RLS ポリシーを作成、修正、管理ができます。オブジェクトレベルでは、テーブルのスキーマ定義を修正せずに行レベルのセキュリティをオンまたはオフに切り替えることができます。
注意事項
RLS ポリシーがルックアップテーブルを参照する場合、Amazon Redshift はポリシーが存在するテーブルに加えて、追加のテーブルをスキャンします。RLS ポリシーがアタッチされているユーザーと、ポリシーがアタッチされていないユーザーとでは、同じクエリでもパフォーマンスに差が生じます。
利用可能なリージョン
RLS ポリシーの CONJUNCTION TYPE サポートと標準ビュー、レイトバインディングビューの RLS サポートは Amazon Redshift が利用可能な全ての商用リージョンと AWS GovCloud(US)リージョンで利用可能です。