Firebase용 API 키 사용 및 관리에 대해 알아보기

API 키는 Firebase 및 Google 서비스와 상호작용할 때 Firebase 프로젝트로 요청을 라우팅하는 데 사용되는 고유 문자열입니다. 이 페이지에서는 API 키에 대한 기본 정보와 Firebase 앱에서 API 키를 사용하고 관리하는 방법에 대한 권장사항을 설명합니다.

API 키 및 Firebase에 대한 일반적인 정보

Firebase용 API 키와 일반적인 API 키의 차이점

API 키가 일반적으로 사용되는 방식과 달리 Firebase 서비스용 API 키는 백엔드 리소스에 대한 액세스를 제어하는 데 사용되지 않습니다. Firebase Security Rules(리소스에 액세스할 수 있는 최종 사용자 제어) 및 Firebase App Check(리소스에 액세스할 수 있는 제어)를 통해서만 액세스를 제어할 수 있습니다.

일반적으로 API 키는 Vault 서비스를 사용하거나 키를 환경 변수로 설정하여 완벽하게 보호해야 합니다. 그러나 Firebase 서비스용 API 키는 코드 또는 체크인된 구성 파일에 포함해도 괜찮습니다.

Firebase 서비스용 API 키를 코드에 포함해도 되지만 적절한 제한사항과 한도를 검토하고 적용해야 합니다.

API 키 만들기

Firebase 프로젝트에는 여러 API 키가 있을 수 있지만 각 API 키는 하나의 Firebase 프로젝트에만 연결할 수 있습니다.

Firebase에서 자동으로 생성한 Firebase 앱용 API 키

다음 중 하나를 수행하면 Firebase가 프로젝트의 API 키를 자동으로 생성합니다.

  • Firebase 프로젝트 만들기 > Browser key 자동 생성됨
  • Firebase Apple 앱 만들기 > iOS key 자동 생성됨
  • Firebase Android 앱 만들기 > Android key 자동 생성됨

Google Cloud 콘솔에서 직접 API 키를 만들 수도 있습니다(예: 개발 또는 디버깅용). 이 페이지의 뒷부분에서 이러한 작업이 권장되는 경우에 대해 자세히 알아보세요.

API 키 찾기

Google Cloud 콘솔의 API 및 서비스 > 사용자 인증 정보 패널에서 모든 프로젝트의 API 키를 보고 관리할 수 있습니다.

다음 위치에서 Firebase 앱과 자동으로 일치하는 API 키도 확인할 수 있습니다. 기본적으로 프로젝트의 모든 동일한 플랫폼(Apple, Android 또는 웹)용 Firebase 앱은 동일한 API 키를 사용합니다.

  • Firebase Apple 앱 - Firebase 구성 파일 GoogleService-Info.plistAPI_KEY 필드에서 자동 일치 API 키를 찾습니다.

  • Firebase Android 앱 - Firebase 구성 파일 google-services.jsoncurrent_key 필드에서 자동 일치 API 키를 찾습니다.

  • Firebase 웹 앱 - Firebase 구성 객체의 apiKey 필드에서 자동 일치 API 키를 찾습니다.

API 키 사용

API 키는 Firebase/Google 서비스와 상호작용할 때 Firebase 프로젝트를 식별하는 데 사용됩니다. 특히 할당량 및 결제를 위해 API 요청을 프로젝트와 연결하는 데 사용됩니다. 또한 공개 데이터에 액세스할 때도 유용합니다.

예를 들어 REST API 호출에 쿼리 매개변수로 API 키 값을 전달하여 API 키를 명시적으로 사용할 수 있습니다. 이 예시에서는 Dynamic Links 링크 단축 API에 요청을 보내는 방법을 보여줍니다.

POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY

앱이 모바일/웹 클라이언트에서 제공하는 API 키가 필요한 Firebase API를 호출하면 앱은 Firebase 구성 파일/객체에서 프로젝트의 API 키를 자동으로 조회합니다. 그러나 환경 변수를 포함한 다른 메커니즘을 사용하여 API 키를 앱에 제공할 수 있습니다.

API 키를 검토하고 적절한 제한사항 적용(권장)

Firebase 서비스용 API 키를 보안 비밀로 취급할 필요는 없지만 이 섹션의 설명대로 제한사항과 한도를 검토하고 적용해야 합니다.

Firebase API 키의 허용 목록에 자동으로 추가된 API 검토

Firebase가 프로젝트에 API 키를 만들면 이 키에 'API 제한사항'이 자동으로 추가됩니다. 이 허용 목록에 추가된 API는 클라이언트에서 호출과 함께 API 키를 제공해야 하는 Firebase 관련 API입니다. Firebase 서비스를 사용하는 데 필요한 대부분의 API는 실제로 API 키의 허용 목록에 있을 필요가 없습니다.

Firebase는 모든 Firebase 서비스에 필요한 API를 추가하므로 API 키의 허용 목록에 사용하지 않는 제품의 API가 포함될 수 있습니다. 허용 목록에서 API를 삭제할 수 있지만 Firebase 및 사용 중인 Firebase 서비스에 필요한 API를 삭제하지 않도록 주의해야 합니다(각 서비스/제품의 허용 목록에 있어야 하는 Firebase 관련 API 목록 참조). 그러지 않으면 Firebase 서비스를 호출할 때 오류가 발생합니다.

Authentication 기반 인증 사용 시 할당량 제한

Firebase Authentication 기반 Firebase 인증을 사용하는데 누군가 API 키를 입수한 경우, 해당 데이터가 Firebase Security Rules에 의해 보호되는 한 Firebase 프로젝트의 데이터베이스 또는 Cloud Storage 데이터에 액세스할 수 없습니다. 그러나 사용자의 API 키를 사용하여 Firebase의 인증 엔드포인트에 액세스하고 프로젝트에 대한 인증 요청을 보낼 수 있습니다.

누군가 API 키를 오용하여 무차별 대입 공격을 시도할 가능성을 줄이기 위해 identitytoolkit.googleapis.com 엔드포인트의 기본 할당량을 앱의 정상 트래픽 예상치에 맞게 제한할 수 있습니다. 이 할당량을 제한하면 앱 사용자 수가 급증할 경우 할당량을 늘릴 때까지 로그인 오류가 발생할 수 있다는 점에 유의하세요. Google Cloud 콘솔에서 프로젝트의 API 할당량을 변경할 수 있습니다.

Firebase 이외의 서비스에 별도의 제한된 API 키 사용

Firebase 서비스에 사용되는 API 키를 일반적으로 보안 비밀로 취급할 필요는 없지만 다른 Google Cloud API와 함께 사용하는 API 키에 각별히 주의해야 합니다.

Firebase 서비스/제품용이 아닌 Google Cloud API를 사용하는 경우(플랫폼에 관계없음) 해당 API에 사용할 별도의 제한된 API 키를 만드는 것이 좋습니다. 이는 API가 청구 가능한 Google Cloud 서비스용일 때 특히 중요합니다.

예를 들어 iOS에서 Firebase ML 및 Cloud Vision API를 사용하는 경우 Cloud Vision API에 액세스하는 데만 사용하는 별도의 API 키를 만들어야 합니다.

Firebase API 이외의 API에 별도의 제한된 API 키를 사용하면 필요한 경우 키를 순환하거나 교체할 수 있으며 Firebase 서비스 사용에 지장 없이 API 키에 제한사항을 더 추가할 수 있습니다.

환경별 API 키 사용(권장)

스테이징 및 프로덕션과 같은 환경별로 Firebase 프로젝트를 설정하는 경우 각 앱 인스턴스가 해당하는 Firebase 프로젝트와 상호작용해야 합니다. 예를 들어 스테이징 앱 인스턴스는 프로덕션 Firebase 프로젝트와 통신해서는 안 됩니다. 즉, 스테이징 앱은 스테이징 Firebase 프로젝트와 관련된 API 키를 사용해야 합니다.

코드 변경사항을 개발 환경에서 스테이징, 프로덕션 환경으로 승격할 때 발생하는 문제를 줄이려면 API 키를 코드 자체에 포함하는 대신 환경 변수로 설정하거나 구성 파일에 포함합니다.

개발용 Firebase Local Emulator SuiteFirebase ML과 함께 사용하는 경우 디버그 전용 API 키를 만들고 사용해야 합니다. 이러한 종류의 키를 만드는 방법은 Firebase ML 문서를 참조하세요.

FAQ 및 문제 해결

FAQ

문제 해결