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

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

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

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

API 키가 일반적으로 사용되는 방식과 달리 Firebase 서비스용 API 키는 백엔드 리소스에 대한 액세스를 제어하는 데 사용되지 않습니다. 이 액세스는 Firebase 보안 규칙(리소스에 액세스할 수 있는 사용자 제어) 및 앱 체크(리소스에 액세스할 수 있는 앱 제어)를 통해서만 제어할 수 있습니다.

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

Firebase 서비스용 API 키를 코드에 포함해도 되지만 API 키에 제한사항을 적용해야 하는 몇 가지 특정한 경우가 있습니다. 예를 들어 이메일/비밀번호 로그인 방법으로 Firebase ML, Firebase 인증을 사용하거나 청구 가능한 Google Cloud API를 사용하는 경우입니다. 이 페이지의 뒷부분에서 이러한 경우에 대해 자세히 알아보세요.

API 키 만들기

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

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

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

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

Google Cloud Console에서 직접 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 키를 명시적으로 사용할 수 있습니다. 이 예시에서는 동적 링크의 링크 단축 API에 요청을 보내는 방법을 보여줍니다.

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

앱은 Firebase API를 호출할 때 Firebase 구성 파일/객체에서 프로젝트의 API 키를 자동으로 조회합니다. 그러나 환경 변수를 비롯한 다른 메커니즘을 사용하여 API 키를 설정할 수 있습니다.

API 키에 제한사항 적용(권장)

Firebase 서비스용 API 키를 보안 비밀로 취급할 필요는 없지만, API 키 오용으로부터 프로젝트를 보호하기 위한 추가 조치를 취해야 하는 몇 가지 특정한 경우가 있습니다(아래 참조).

비밀번호 기반 인증 사용 시 할당량 제한

비밀번호 기반 Firebase 인증을 사용 중이며 누군가 API 키를 입수하더라도 Firebase 프로젝트의 데이터베이스 또는 Cloud Storage 데이터가 Firebase 보안 규칙으로 보호되는 한 이러한 데이터에 액세스할 수 없습니다. 그러나 사용자의 API 키를 사용하여 Firebase의 인증 엔드포인트에 액세스하고 프로젝트에 대한 인증 요청을 보낼 수는 있습니다.

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

특정 유형의 API에 별도의 제한된 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 로컬 에뮬레이터 도구 모음을 Firebase ML과 함께 사용하는 경우 디버그 전용 API 키를 만들고 사용해야 합니다. 이러한 종류의 키를 만드는 방법은 Firebase ML 문서를 참조하세요.

FAQ