-
Supabase로 API 키를 안전하게 보호하는 서버리스 백엔드 구축하기사소한 개발팁 2025. 3. 9. 14:39반응형
Supabase로 API 키를 안전하게 보호하는 서버리스 백엔드 구축하기
API 키를 클라이언트에 직접 포함시키면 보안 문제가 발생할 수 있습니다. 이를 해결하기 위해 Supabase를 활용하여 서버리스 API 백엔드를 구축하는 방법을 소개합니다.
1. Supabase 프로젝트 생성
1.1 Supabase 가입 및 프로젝트 생성
- Supabase에 가입합니다.
- 새로운 프로젝트를 생성하고, 데이터베이스를 설정합니다.
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 구축
- 환경 변수를 활용하여 보안 강화
이 방법을 활용하면 보안이 강화된 서버리스 백엔드를 쉽게 운영할 수 있습니다!
반응형'사소한 개발팁' 카테고리의 다른 글
MCP(Model Context Protocol)와 RAG(Retrieval-Augmented Generation)의 차이점 (0) 2025.03.09 Model Context Protocol(MCP)의 개념과 구현 방법 상세 가이드 (0) 2025.03.09 unsupported option '-g' for target 'x86_64-apple-ios10.0-simulator' (0) 2024.12.01 NULL SAFETY 는 중요하다 (0) 2024.01.09 Test Flight, App Store Connet에서 암화화 문서 관련 규정 매번 설정하지 않는 방법 (1) 2024.01.05