Supabase の storage に関する情報は storage.objects テーブルに集約されており、ここに RLS を設定することで、アクセス制限をかけることができる。
問題は、storage スキームは superuser の所有になっていて、postgres ユーザからは RLS が設定できないことである。
仕方がないので、storage スキームのみ、supabase の storage ⇨ policies で RLS を設定する。
例えば、作成ユーザと batch で DB ログインした場合のみアクセス許可する場合は
CURRENT_USER = 'batch'
OR
owner_id IN (SELECT id FROM user WHERE auth.uid() = id)
とする。設定が SELECT/UPDATE, INSERT/UPDATE 用が分かれていることに注意する。
DB 設定が development, preview, production に分かれている場合はそれぞれに設定が必要なので面倒だが、この操作は自動化できないようだ。最初の1回のみ設定すれば終わりなので、良しとする。
コメントを残す