<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>PostgreSQL on Kelly Dev</title><link>https://kelly-chui.github.io/tags/postgresql/</link><description>Recent content in PostgreSQL on Kelly Dev</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 20 Nov 2024 00:00:00 +0000</lastBuildDate><atom:link href="https://kelly-chui.github.io/tags/postgresql/index.xml" rel="self" type="application/rss+xml"/><item><title>SniffMEET. RLS와 테이블 권한</title><link>https://kelly-chui.github.io/posts/sniffmeet-dev-log-supabase-rls-empty-response/</link><pubDate>Wed, 20 Nov 2024 00:00:00 +0000</pubDate><guid>https://kelly-chui.github.io/posts/sniffmeet-dev-log-supabase-rls-empty-response/</guid><description>&lt;h2 id="문제"&gt;문제&lt;/h2&gt;
&lt;p&gt;Supabase에서 anon key로 Public 테이블에 접근하면 데이터가 보이는데, 익명 로그인 후 받은 JWT access token으로 접근하면 &lt;code&gt;200 OK&lt;/code&gt;만 오고 데이터가 비어 있었다.&lt;/p&gt;
&lt;img loading="lazy" src="https://kelly-chui.github.io/posts/sniffmeet-dev-log-supabase-rls-empty-response/image-003-optimized-image.webp"&gt;&lt;p&gt;처음에는 authenticated role이 anon role보다 상위 권한이라고 생각해서 더 헷갈렸다. 하지만 Supabase에서는 role의 상하관계보다 RLS 정책을 어떻게 작성했는지가 더 중요했다.&lt;/p&gt;
&lt;h2 id="확인"&gt;확인&lt;/h2&gt;
&lt;img loading="lazy" src="https://kelly-chui.github.io/posts/sniffmeet-dev-log-supabase-rls-empty-response/image-002-optimized-image.webp"&gt;&lt;p&gt;JWT가 만료된 경우에는 &lt;code&gt;401 Unauthorized&lt;/code&gt;가 발생했다. 반면 RLS 조건에 맞지 않는 경우에는 요청 자체는 성공해서 &lt;code&gt;200 OK&lt;/code&gt;가 오지만, row가 필터링되어 데이터가 내려오지 않았다.&lt;/p&gt;
&lt;img loading="lazy" src="https://kelly-chui.github.io/posts/sniffmeet-dev-log-supabase-rls-empty-response/image-004-optimized-image.webp"&gt;&lt;p&gt;authenticated 유저가 읽을 수 있도록 다음 policy를 추가하자 데이터를 읽을 수 있었다.&lt;/p&gt;</description></item></channel></rss>