SQL - RLS(Row Level Security) with Drizzle

2026. 7. 23. 11:03ยท๐Ÿงฉ SQL

Drizzle

 

 

โœ… RLS๋ฅผ Drizzle๋กœ ์ž‘์„ฑํ•˜๋ฉด ์ƒ๊ธฐ๋Š” ์ด์ 


1. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ž๋™ ์™„์„ฑ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

2. ์ž‘์„ฑํ•œ ๊ทœ์น™๋“ค์ด SQL migration ํŒŒ์ผ์— ๋“ค์–ด๊ฐ€๊ธฐ ๋•Œ๋ฌธ์—, git์œผ๋กœ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

3. Drizzle์—๋Š” ํŠน๋ณ„ํžˆ Supabase์™€ ํ•จ๊ป˜ RLS๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋”ฐ๋กœ ๋งˆ๋ จ๋˜์–ด ์žˆ๋‹ค. (์ข‹์€ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜๋“ค์ด ์žˆ์–ด์„œ ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๋‹ค.)

 

https://orm.drizzle.team/docs/rls#using-with-supabase

 

Drizzle ORM - Row-Level Security (RLS)

Drizzle ORM is a lightweight and performant TypeScript ORM with developer experience in mind.

orm.drizzle.team

 

 

โœ… Usage


export const todos = pgTable(
  "todos",
  {
    todo_id: bigint({ mode: "number" })
      .primaryKey()
      .generatedAlwaysAsIdentity(),
    title: text().notNull(),
    completed: boolean().notNull().default(false),
    created_at: timestamp().notNull().defaultNow(),
    profile_id: uuid()
      .references(() => profiles.profile_id, {
        onDelete: "cascade",
      })
      .notNull(),
  },
  (table) => [
    pgPolicy("todos-select-policy", {
      for: "select",
      to: authenticatedRole,
      as: "permissive",
      using: sql`${authUid} = ${table.profile_id}`,
    }),
    pgPolicy("todos-insert-policy", {
      for: "insert",
      to: authenticatedRole,
      as: "permissive",
      withCheck: sql`${authUid} = ${table.profile_id}`,
    }),
  ],
);

'๐Ÿงฉ SQL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

SQL - Supabase PostgreSQL - Cron Job  (0) 2026.07.16
SQL - PostgreSQL - Security Definer View  (0) 2026.07.15
SQL - PostgreSQL - RLS(Row Level Security)  (0) 2026.07.15
SQL - PostgreSQL - CREATE OR REPLACE๊ฐ€ ๊ฐ€๋Šฅํ•  ๋•Œ์™€ ๋ถˆ๊ฐ€๋Šฅํ•  ๋•Œ  (0) 2026.07.13
SQL - PostgreSQL - SET search_path = ''๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ?  (0) 2026.07.13
'๐Ÿงฉ SQL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • SQL - Supabase PostgreSQL - Cron Job
  • SQL - PostgreSQL - Security Definer View
  • SQL - PostgreSQL - RLS(Row Level Security)
  • SQL - PostgreSQL - CREATE OR REPLACE๊ฐ€ ๊ฐ€๋Šฅํ•  ๋•Œ์™€ ๋ถˆ๊ฐ€๋Šฅํ•  ๋•Œ
j2yonghwa
j2yonghwa
Trying to be a fullstack developer ๐Ÿš€
  • j2yonghwa
    j2yonghwa
    j2yonghwa
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (179)
      • โฐ Daily WakaTime (1)
      • ๐Ÿ–๏ธ ๋…ธ๋งˆ๋“œ์ฝ”๋” (2)
      • ๐Ÿบ Dev Setup (4)
      • ๐Ÿ”ญ Tech Info (1)
      • ๐Ÿ” Security (1)
      • ๐Ÿšซ Error (1)
      • ๐Ÿค– AI (4)
      • ๐Ÿ“‚ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (29)
      • ♣๏ธ Next.js 14 (10)
      • ♠๏ธ Next.js 12 (20)
      • ๐Ÿ›ธ React Native (12)
      • ๐Ÿฆ‹ TypeScript (2)
      • ๐Ÿ Python (2)
      • ๐ŸŒŠ TailwindCSS (4)
      • ๐Ÿงฉ SQL (32)
      • ๐Ÿ’Ž Prisma (5)
      • ๐ŸŒฑ MongoDB (4)
      • ๐ŸŽฏ Redis (1)
      • ๐Ÿงฌ GraphQL (2)
      • ๐Ÿ”ฅ Firebase (7)
      • ๐Ÿ’ธ Third-Party Services (5)
      • ๐Ÿ•ธ๏ธ Web (1)
      • ๐Ÿ† ์ฝ”๋”ฉํ…Œ์ŠคํŠธ (23)
      • ๐Ÿ“™ ๋ชจ๋”ฅ๋‹ค (5)
      • ๐Ÿ“— ์ฝ”ํ…Œ ํ•ฉ๊ฒฉ์ž ๋˜๊ธฐ -JS- (0)
      • ๐Ÿ“˜ ํด๋ฆฐ์ฝ”๋“œ (0)
      • ๐Ÿฏ ๊ฟ€ํŒ ๐Ÿ (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

    • ๊นƒํ—™
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    Next.js
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
    dev setup
    ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
    API
    Firebase
    Python
    next.js 12
    SQL
    mongoDB
    database
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ž…๋ฌธ
    React Native
    third-party services
    react router
    MySQL
    0๋ ˆ๋ฒจ
    Prisma
    PostgreSQL
    next.js 14
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
j2yonghwa
SQL - RLS(Row Level Security) with Drizzle
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”