Research/Server

Firebase API Key공개, 안전한가?

moxie2ks 2025. 3. 8. 18:01
728x90
반응형

개요

Firebase를 사용할 때 API Key가 코드에 포함되는 경우가 많다. 특히, 프론트엔드 애플리케이션에서 Firebase를 활용할 경우 API Key가 노출되는 상황이 빈번하게 발생한다. 이에 따라 “Firebase API Key가 공개되어도 괜찮은가?“라는 의문이 자주 제기된다. 본 글에서는 Firebase API Key의 보안성, 잠재적 위험성, 그리고 보다 안전한 대안에 대해 다룬다.

Firebase API Key의 역할과 보안성

1. Firebase API Key는 일반적인 API Key와 다르다

일반적으로 API Key는 인증(Authentication) 및 권한 부여(Authorization) 역할을 수행하는 경우가 많다. 그러나 Firebase API Key는 대부분 인증이 아닌 프로젝트 식별용으로 사용된다. Firebase에서 API Key는 클라이언트가 Firebase 서비스와 통신할 때 프로젝트를 구분하는 역할을 하며, 기본적으로 단독으로는 민감한 데이터에 접근할 권한이 없다.

2. Firebase API Key가 노출될 경우 발생할 수 있는 문제

Firebase API Key는 공개되어도 즉시 보안 위협이 발생하는 것은 아니지만, 다음과 같은 위험이 존재한다.

  • 인증 없이 접근 가능한 리소스 노출 Firebase Realtime Database 또는 Firestore의 보안 규칙이 제대로 설정되지 않았다면, API Key만으로 데이터베이스에 접근할 가능성이 있다. 예를 들어, 인증 없이 읽기 및 쓰기가 가능하도록 설정된 경우 공격자가 API Key를 이용해 데이터를 조회하거나 수정할 수 있다.
  • Cloud Functions 및 기타 Firebase 서비스 악용 특정 Firebase 서비스(API Gateway 역할을 하는 Cloud Functions 등)를 잘못 설정하면, API Key만으로 요청을 보낼 수 있는 취약점이 생길 수 있다.
  • 사용량 초과 및 비용 증가 공격자가 노출된 API Key를 사용하여 Firebase 서비스에 대량의 요청을 보낼 경우, 예상치 못한 비용 증가가 발생할 수 있다.

Firebase API Key 보호를 위한 방법

1. Firebase 보안 규칙 설정

Firestore, Realtime Database 등은 반드시 보안 규칙을 설정해야 한다. 예를 들어, 인증된 사용자만 데이터에 접근할 수 있도록 Firebase Authentication과 연동하여 보안 규칙을 구성해야 한다.

{
    "rules":
    {
        ".read": "auth != null",
        ".write": "auth != null"
    }
}

이러한 보안 규칙이 없다면 API Key가 노출되지 않더라도 누구나 데이터베이스에 접근할 수 있게 된다.

2. API Key 제한 설정

Google Cloud Console에서 API Key에 대한 사용 제한을 설정할 수 있다. 예를 들어, 특정 도메인, IP 주소, 앱 패키지 이름에서만 API Key를 사용할 수 있도록 설정하면 악용 가능성을 줄일 수 있다.

3. 환경 변수 사용 및 API Key 숨기기

프론트엔드 애플리케이션에서는 환경 변수를 사용하여 API Key를 숨길 수 없다. 하지만 서버 측에서 Firebase를 사용할 경우 환경 변수로 관리하는 것이 좋다.

export FIREBASE_API_KEY="your-api-key"

그 후 코드에서는 다음과 같이 불러와서 사용한다.

import os
api_key = os.getenv("FIREBASE_API_KEY")

4. API Key 회수 및 재발급

만약 Firebase API Key가 공개되었거나 악용 가능성이 있다면, Google Cloud Console에서 해당 키를 삭제하고 새로운 키를 발급하는 것이 안전하다.

결론

Firebase API Key는 일반적인 API Key와 다르게 단독으로 민감한 데이터에 접근할 권한이 없다. 따라서 API Key가 코드에 포함되었다고 해서 즉시 보안 위협이 발생하지는 않는다. 하지만 보안 규칙이 부실한 경우에는 API Key만으로도 데이터베이스에 접근하거나, Firebase 서비스를 악용할 수 있는 위험이 존재한다.

이를 방지하기 위해서는 Firebase 보안 규칙을 강화하고, API Key에 대한 사용 제한을 설정하며, 환경 변수를 활용하여 서버 측에서는 API Key를 안전하게 관리해야 한다. 또한, 필요할 경우 API Key를 주기적으로 변경하고 불필요한 키는 삭제하는 것이 좋다.

참고문헌

[1] Firebase 공식 문서 - https://firebase.google.com/docs

[2] Google Cloud API Key 관리 가이드 - https://cloud.google.com/docs/authentication/api-keys

[3] Firebase 보안 규칙 가이드 - https://firebase.google.com/docs/firestore/security/get-started

728x90
반응형