ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Supabase로 API 키를 안전하게 보호하는 서버리스 백엔드 구축하기
    사소한 개발팁 2025. 3. 9. 14:39
    반응형

    Supabase로 API 키를 안전하게 보호하는 서버리스 백엔드 구축하기

    API 키를 클라이언트에 직접 포함시키면 보안 문제가 발생할 수 있습니다. 이를 해결하기 위해 Supabase를 활용하여 서버리스 API 백엔드를 구축하는 방법을 소개합니다.

    1. Supabase 프로젝트 생성

    1.1 Supabase 가입 및 프로젝트 생성

    1. Supabase에 가입합니다.
    2. 새로운 프로젝트를 생성하고, 데이터베이스를 설정합니다.

    1.2 테이블 및 데이터 삽입

    Supabase의 Table Editor에서 API로 접근할 테이블을 생성합니다.

    CREATE TABLE messages (
        id SERIAL PRIMARY KEY,
        content TEXT NOT NULL,
        created_at TIMESTAMP DEFAULT now()
    );

    데이터를 테스트로 삽입할 수도 있습니다.

    INSERT INTO messages (content) VALUES ('Hello, Supabase!');

    2. Edge Functions을 활용한 API 백엔드 구축

    2.1 Supabase CLI 설치

    npm install -g supabase

    또는

    yarn global add supabase

    2.2 Edge Function 생성

    supabase functions new get-messages

    functions/get-messages/index.ts 파일을 열고 다음과 같이 수정합니다.

    import { serve } from 'https://deno.land/std@0.140.0/http/server.ts'
    import { createClient } from 'https://esm.sh/@supabase/supabase-js@2'
    
    serve(async (req) => {
        const supabase = createClient(Deno.env.get('SUPABASE_URL')!, Deno.env.get('SUPABASE_SERVICE_ROLE_KEY')!)
    
        const { data, error } = await supabase.from('messages').select('*')
        if (error) return new Response(JSON.stringify({ error: error.message }), { status: 500 })
    
        return new Response(JSON.stringify(data), { headers: { 'Content-Type': 'application/json' } })
    })

    2.3 환경 변수 설정

    .env 파일을 생성하여 환경 변수를 설정합니다.

    SUPABASE_URL=https://your-supabase-project.supabase.co
    SUPABASE_SERVICE_ROLE_KEY=your-secret-key

    2.4 Edge Function 배포

    supabase functions deploy get-messages

    배포가 완료되면 https://your-supabase-project.supabase.co/functions/v1/get-messages에서 API를 호출할 수 있습니다.

    3. 클라이언트에서 API 호출하기

    클라이언트에서 Supabase API를 직접 호출하는 것이 아니라, Edge Function을 통해 우회하여 API 키가 외부에 노출되지 않도록 합니다.

    fetch('https://your-supabase-project.supabase.co/functions/v1/get-messages')
        .then(response => response.json())
        .then(data => console.log(data));

    4. 정리

    이제 Supabase의 Edge Functions를 활용하여 API 키를 보호하면서 데이터를 안전하게 불러올 수 있습니다.

    • 클라이언트에서 API 키를 직접 사용하지 않음
    • Supabase Edge Functions을 활용하여 서버리스 API 구축
    • 환경 변수를 활용하여 보안 강화

    이 방법을 활용하면 보안이 강화된 서버리스 백엔드를 쉽게 운영할 수 있습니다!

    반응형
Designed by Tistory.