๐ RLS(Row-Level Security, ํ ์์ค ๋ณด์) ์ ์ฑ : ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํน์ ๋ฐ์ดํฐ ํ์ ๋ํ ์ ๊ทผ ๊ถํ์ ์ฌ์ฉ์๋ณ, ์ญํ ๋ณ๋ก ์ธ๋ฐํ๊ฒ ์ ์ดํ๋ ์ ์ฑ
1. RLS ํ์ฑํ ์ฌ๋ถ ํ์ธ
Supabase ๋์๋ณด๋ > ํ๋ก์ ํธ > SQL Editor ์ ์ง์ ํด์ ์๋ ์ฟผ๋ฆฌ ์ค tablename IN ('', '') ๊ตฌ๋ฌธ์ RLS ์ฌ๋ถ๋ฅผ ํ์ธํ๊ณ ์ถ์ ํ ์ด๋ธ ๋ช ๋ค์ ๋ฃ๊ณ ์คํ์ํค๋ฉด ๋๋ค.
SELECT
schemaname,
tablename,
rowsecurity as rls_enabled
FROM pg_tables
WHERE schemaname = 'public'
AND tablename IN ('TABLE_NAME_1', 'TABLE_NAME_2')
ORDER BY tablename;
rls_enabled ํญ๋ชฉ์ด true๋ก ๋์ด์์ผ๋ฉด RLS๊ฐ ํ์ฑํ๋ ๊ฒ์ด๊ณ , false๋ก ๋์ด์๋ค๋ฉด RLS๊ฐ ๋นํ์ฑํ ๋ ๊ฒ์ด๋ค. ์๋ ์ด๋ฏธ์ง์ ๊ฒฝ์ฐ์๋ ํ ์ด๋ธ 2๊ฐ๊ฐ ๋ชจ๋ RLS์ด ํ์ฑํ๋์ด์๋ ์ํ๋ค.

๋ง์ฝ rls_enabled๊ฐ false๋ก ๋์ด์๋ค๋ฉด RLS๊ฐ ๋นํ์ฑํ ๋์๋ค๋ ๋ป์ด๋ฏ๋ก, ํ์ฑํ์์ผ์ค์ผ ํ๋ค.
-- RLS ํ์ฑํ
ALTER TABLE TABLE_NAME_1 ENABLE ROW LEVEL SECURITY;
ALTER TABLE TABLE_NAME_2 ENABLE ROW LEVEL SECURITY;
-- RLS ํ์ฑํ ์ฌ๋ถ ์ฌํ์ธ
SELECT
schemaname,
tablename,
rowsecurity as rls_enabled
FROM pg_tables
WHERE schemaname = 'public'
AND tablename IN ('TABLE_NAME_1', 'TABLE_NAME_2')
ORDER BY tablename;
2. ์ ์ฑ ํ์ธ
RLS ํ์ฑํ๊ฐ ๋ ๊ฒ์ ํ์ธํ๋ค๋ฉด, ์ด๋ฒ์๋ ์ ์ฑ ๋ด์ฉ์ด ์ ๋๋ก ๋์ด์๋์ง ํ์ธํด์ผ ํ๋ค.
SELECT
schemaname,
tablename,
policyname,
cmd, -- SELECT, INSERT, UPDATE, DELETE
qual, -- USING ์กฐ๊ฑด
with_check -- WITH CHECK ์กฐ๊ฑด
FROM pg_policies
WHERE schemaname = 'public'
AND tablename IN ('TABLE_NAME_1', 'TABLE_NAME_2')
ORDER BY tablename, cmd;
๊ฐ cmd์ ๋ฐ๋ผ qual, with_check์ด ์๋์ฒ๋ผ ๋์ด์๋์ง ํ์ธํ๋ฉด ๋๋ค.

์ด๋ ๊ฒ SQL์ ์คํ์์ผ์ ํ์ธ์์ผ๋ ๋๊ณ , Supabase ๋์๋ณด๋ > ํ๋ก์ ํธ > Table Editor์์ ํ ์ด๋ธ์ ์ ํ ํ RLS Policies ๋ฒํผ์ ํด๋ฆญํด์ ํ์ธํ๋ ๋ฐฉ๋ฒ๋ ์๋ค.

์๋ ์ด๋ฏธ์ง๋ฅผ ๋ณด๋ฉด RLS Policies ๋ฒํผ์ ๋๋ฅด๋ฉด ๋์ค๋ ํ๋ฉด์ธ๋ฐ, ์ ์ฑ ์ด ์ ์ ์ฉ๋์ด์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.

'๊ธฐํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [VSCode]์ ์ฉํ ๋น์ฃผ์ผ์คํ๋์ค์ฝ๋ ๋จ์ถํค (0) | 2024.12.08 |
|---|---|
| [EC2] ํ๋ฆฌํฐ์ด ์ฌ์ฉ ์ค ๊ณผ๊ธ ์์ธ(VPC) (0) | 2024.09.03 |
| MacOS DNS ์บ์ ์ง์ฐ๊ธฐ (0) | 2024.09.02 |
| MacOS iTerm์์ ๋ช ๋ น์ด๋ก AWS ์ ์ํ๊ธฐ (0) | 2024.07.08 |
| [Github] ์๋ฌ:: remote: Invalid username or password. (0) | 2024.06.13 |
