오늘 방문 /누적 방문 /완성한 레슨 소개 ↗
SECONDTEAM
데이터·DB
🗄️ 레슨

인증·권한 — 내 데이터는 나만 (RLS)

① 오늘의 미션
진짜 고객 데이터를 지킨다
이제 '우리동네 반찬가게'엔 손님들의 진짜 주문(주소·연락처·구매내역)이 쌓여요. 가장 무서운 사고는 — 손님 A의 주문을 손님 B가 보는 것이에요.

오늘은 '내 주문은 나만' 원칙을 데이터 자체에 새기는 인증·권한·RLS를 손으로 걸어요.

설명을 따라 진행하면, 여기서 직접 쳐보게 돼요 👇
~/my-shop
$ _
📚 「인증·권한 — 내 데이터는 나만 (RLS)」 레슨 내용 전체 텍스트로 훑어보기
진짜 고객 데이터를 지킨다
이제 '우리동네 반찬가게'엔 손님들의 진짜 주문(주소·연락처·구매내역)이 쌓여요. 가장 무서운 사고는 — 손님 A의 주문을 손님 B가 보는 것이에요.

오늘은 '내 주문은 나만' 원칙을 데이터 자체에 새기는 인증·권한·RLS를 손으로 걸어요.

우리 반찬가게에서 손님 A가 로그인했어요. A의 주문 내역을, 권한 없는 손님 B가 들여다볼 수 있을까요?
맞아요. 각 손님은 '자기가 접근 가능한 범위'만 봐요. A의 주문은 A만, B의 주문은 B만 봐요. 출입증 권한이 곧 한계예요.

비슷해 보이는 두 단어를 가르면 보안이 한눈에 들어와요.

🪪 인증 (너 누구야?)
로그인으로 '이 손님이 누구인지'를 확인하는 단계. (가게 회원 확인)
🔑 권한 (어디까지 돼?)
확인된 손님이 '무엇까지 볼 수 있나'를 정하는 단계. (자기 주문 내역만, 남의 건 X)
🛡️ RLS — 내 주문은 나만
주문 DB에 '행(row) 단위 잠금'을 거는 기능. "이 주문 줄은 주문한 본인만 본다"를 데이터 자체에 새겨둬서, 실수로라도 남의 주문이 새지 않게 해요.
헷갈리는 둘을 나란히 비교해보세요.
🪪 인증 (Authentication): '너 누구야?' — 로그인으로 신원 확인.
가게 문 앞에서 회원증 확인하는 단계.
🔑 권한 (Authorization): '어디까지 돼?' — 확인된 사람이 무엇까지 볼지 결정.
회원이어도 '자기 주문만' 열람 가능.

주문 한 줄 한 줄(행)에 '주인만 열람' 자물쇠를 거는 기능을 뭐라고 부를까요? 영어 약자로 채워보세요.

맞아요! RLS(Row Level Security, 행 수준 보안)예요. 앱 코드가 아니라 데이터베이스 자체에 잠금을 새겨서, 어디서 접근하든 남의 주문은 안 새요.

Claude에게 orders 테이블 RLS 켜서 본인 주문만 보이게 해줘 라고 하면 어떻게 될까요?

맞아요. Claude가 orders 테이블에 RLS를 켜고 '로그인한 본인 주문만 조회' 정책을 걸어줘요. 이제 남의 주문은 데이터 차원에서 막혀요. 직접 시켜볼까요? 👇

Claude를 켜고, 주문 테이블에 '내 주문은 나만' 잠금을 걸어달라고 말로 시켜요.

claude — Claude Code를 켜요
orders 테이블 RLS 켜서 본인 주문만 보이게 해줘 — 주문 테이블에 RLS를 켜달라고 해요
이제 주문 한 줄 한 줄에 '주인만 열람' 자물쇠가 걸렸어요.

손님 A로 로그인한 상태에서 주문을 조회시켜요. A의 것만 나와야 정상이에요.

지금 로그인한 손님의 주문 내역 보여줘 — A로 로그인한 상태에서 주문을 조회해요
정확히 A의 주문 3건만 나왔어요. RLS가 다른 손님 주문을 알아서 걸러냈어요.

손님 데이터를 안전하게 지키는 순서를 맞춰보세요. (↑↓로 정렬)

정확해요! 인증 → 권한 → RLS → 점검. 인증·권한으로 막고, RLS로 데이터에 직접 자물쇠를 새겨요.

마지막으로, 정말 남의 주문이 안 새는지 Claude에게 점검시켜요. 보안은 '확인'까지가 한 세트예요.

손님 A로 로그인한 채 손님 B의 주문도 보이는지 점검해줘 — 다른 손님 주문에 접근이 되는지 점검해요
남의 주문은 접근 자체가 차단됐어요. '내 주문은 나만' 원칙이 데이터에 새겨진 거예요.
"로그인은 했지만, 이 손님은 남의 주문을 못 본다" — 이건 무엇이 막은 걸까요?
맞아요. 로그인(인증)은 통과했지만 '어디까지'(권한)에서 막힌 거예요. RLS는 그 권한을 데이터 행 단위로 강제하는 마지막 자물쇠예요.
진짜 고객 데이터니까
반찬가게는 '진짜 고객 데이터(주문·주소·연락처)'를 다뤄요. 편리함만큼 '누가 무엇까지 볼 수 있나'를 먼저 점검하는 습관이 중요해요. 한 줄 새면 신뢰가 무너지니까요.
한 줄로
인증(너 누구야) → 권한(어디까지) 순서로 막고, RLS로 주문 한 줄 한 줄에 '주인만 열람' 자물쇠를 걸면 — 내 주문은 나만 봐요.
다음 레슨에서
남이 못 보게는 막았어요. 이제 내가 잃어버리지 않게 지킬 차례예요. 다음 '백업과 사고 대비 — 잃고 나서 후회 말고'에서, 데이터 사고가 나기 전에 깔아두는 안전장치를 배웁니다. 가게는 계속 자랍니다. 🌱