Dowiedz się o używaniu i zarządzaniu kluczami API dla Firebase

Klucz API to unikalny ciąg znaków używany do kierowania żądań do projektu Firebase podczas interakcji z usługami Firebase i Google. Na tej stronie opisano podstawowe informacje o kluczach API, a także najlepsze praktyki dotyczące używania kluczy API i zarządzania nimi w aplikacjach Firebase.

Ogólne informacje o kluczach API i Firebase

Klucze API dla Firebase różnią się od typowych kluczy API

W odróżnieniu od tego, jak zwykle używane są klucze API, klucze API dla usług Firebase nie są używane do kontrolowania dostępu do zasobów backendu ; można to zrobić tylko za pomocą reguł zabezpieczeń Firebase (w celu kontrolowania, którzy użytkownicy mogą uzyskać dostęp do zasobów) i sprawdzania aplikacji (w celu kontrolowania, które aplikacje mogą uzyskiwać dostęp do zasobów).

Zwykle trzeba skrupulatnie chronić klucze API (na przykład korzystając z usługi skarbca lub ustawiając klucze jako zmienne środowiskowe); jednakże klucze API dla usług Firebase można umieścić w kodzie lub zarejestrowanych plikach konfiguracyjnych.

Chociaż klucze API dla usług Firebase można bezpiecznie umieszczać w kodzie, istnieje kilka konkretnych przypadków , w których należy wymusić ograniczenia dotyczące klucza API. na przykład, jeśli korzystasz z Firebase ML, uwierzytelniania Firebase z metodą logowania za pomocą adresu e-mail/hasła lub płatnego interfejsu API Google Cloud. Więcej informacji na temat tych przypadków znajdziesz w dalszej części tej strony.

Tworzenie kluczy API

Projekt Firebase może mieć wiele kluczy API, ale każdy klucz API można powiązać tylko z jednym projektem Firebase.

Klucze API tworzone automatycznie przez Firebase dla Twoich aplikacji Firebase

Firebase automatycznie tworzy klucze API dla Twojego projektu, gdy wykonasz dowolną z poniższych czynności:

  • Utwórz projekt Firebase > Browser key został utworzony automatycznie
  • Utwórz aplikację Firebase Apple > Automatycznie utworzony iOS key
  • Utwórz aplikację Firebase na Androida > Android key został utworzony automatycznie

Możesz także tworzyć własne klucze API w konsoli Google Cloud , na przykład na potrzeby programowania lub debugowania . Więcej informacji o tym, kiedy może to być zalecane, znajdziesz w dalszej części tej strony.

Znajdowanie kluczy API

Możesz przeglądać wszystkie klucze API swojego projektu i zarządzać nimi w panelu API i usługi > Poświadczenia w konsoli Google Cloud.

W poniższych miejscach możesz także sprawdzić, który klucz API jest automatycznie dopasowywany do aplikacji Firebase . Domyślnie wszystkie aplikacje Firebase w Twoim projekcie na tę samą platformę (Apple, Android i Internet) będą używać tego samego klucza API.

  • Firebase Apple Apps — Znajdź automatycznie dopasowany klucz API aplikacji w pliku konfiguracyjnym Firebase, GoogleService-Info.plist , w polu API_KEY .

  • Aplikacje Firebase na Androida — znajdź automatycznie dopasowany klucz API aplikacji w pliku konfiguracyjnym Firebase, google-services.json , w polu current_key .

  • Firebase Web Apps — znajdź automatycznie dopasowany klucz API aplikacji w obiekcie konfiguracyjnym Firebase, w polu apiKey .

Korzystanie z klucza API

Klucze API służą do identyfikacji Twojego projektu Firebase podczas interakcji z usługami Firebase/Google. W szczególności służą do kojarzenia żądań API z projektem w zakresie limitów i rozliczeń. Przydają się także przy uzyskiwaniu dostępu do danych publicznych.

Można na przykład jawnie użyć klucza API, przekazując jego wartość do wywołania API REST jako parametr zapytania. Ten przykład pokazuje, jak możesz wysłać żądanie do interfejsu API narzędzia do skracania linków dynamicznych :

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

Gdy aplikacja wywołuje interfejs API Firebase, automatycznie szuka klucza API projektu w pliku/obiekcie konfiguracyjnym Firebase. Możesz jednak ustawić klucze API przy użyciu innego mechanizmu, w tym zmiennych środowiskowych.

Zastosuj ograniczenia do kluczy API (zalecane)

Chociaż nie jest konieczne traktowanie klucza API usług Firebase jako tajemnicy, istnieją pewne szczególne przypadki (patrz poniżej), w których warto podjąć dodatkowe środki, aby chronić swój projekt przed niewłaściwym użyciem klucza API.

Zwiększ limit, jeśli korzystasz z uwierzytelniania opartego na hasłach

Jeśli korzystasz z uwierzytelniania Firebase opartego na haśle i ktoś zdobędzie Twój klucz API, nie będzie mógł uzyskać dostępu do żadnej bazy danych Twojego projektu Firebase ani danych w chmurze , o ile dane te są chronione regułami bezpieczeństwa Firebase . Mogą jednak użyć Twojego klucza API, aby uzyskać dostęp do punktów końcowych uwierzytelniania Firebase i wysyłać żądania uwierzytelnienia w stosunku do Twojego projektu.

Aby zapobiec możliwości niewłaściwego użycia klucza API do próby ataku siłowego, możesz zawęzić domyślny limit punktów końcowych identitytoolkit.googleapis.com , aby odzwierciedlić normalne oczekiwania dotyczące ruchu w Twojej aplikacji. Pamiętaj, że jeśli zmniejszysz ten limit i Twoja aplikacja nagle zyska użytkowników, do czasu zwiększenia limitu mogą wystąpić błędy logowania. Limity API swojego projektu możesz zmienić w konsoli Google Cloud .

Używaj oddzielnych, zastrzeżonych kluczy API dla określonych typów interfejsów API

Chociaż klucze API używane w usługach Firebase zazwyczaj nie muszą być traktowane jako tajne, należy podjąć dodatkowe środki ostrożności w przypadku kluczy API używanych do udzielania dostępu do ręcznie włączonych interfejsów API Google Cloud.

Jeśli korzystasz z interfejsu API Google Cloud (na dowolnej platformie), który nie jest automatycznie włączany przez Firebase (co oznacza, że ​​sam go włączyłeś), powinieneś rozważyć utworzenie oddzielnych, zastrzeżonych kluczy API do użytku z tymi interfejsami API. Jest to szczególnie ważne, jeśli API dotyczy płatnej usługi Google Cloud.

Na przykład, jeśli korzystasz z interfejsów API Cloud Vision Firebase ML w systemie iOS, powinieneś utworzyć osobne klucze API , których będziesz używać wyłącznie do uzyskiwania dostępu do interfejsów API Cloud Vision.

Używając oddzielnych, zastrzeżonych kluczy API dla interfejsów API innych niż Firebase, możesz w razie potrzeby obracać lub zastępować klucze i dodawać dodatkowe ograniczenia do kluczy API bez zakłócania korzystania z usług Firebase.

Użyj kluczy API specyficznych dla środowiska (zalecane)

Jeśli skonfigurujesz różne projekty Firebase dla różnych środowisk, takich jak tymczasowe i produkcyjne, ważne jest, aby każda instancja aplikacji współdziałała z odpowiadającym jej projektem Firebase. Na przykład instancja aplikacji pomostowej nigdy nie powinna komunikować się z produkcyjnym projektem Firebase. Oznacza to również, że Twoja aplikacja testowa musi używać kluczy API powiązanych z Twoim projektem testowym Firebase.

Aby zmniejszyć problemy związane z promowaniem zmian w kodzie od programowania, przez przemieszczanie, aż po produkcję, zamiast dołączać klucze API do samego kodu, ustaw je jako zmienne środowiskowe lub umieść je w pliku konfiguracyjnym.

Pamiętaj, że jeśli używasz pakietu Firebase Local Emulator Suite do programowania wraz z Firebase ML, musisz utworzyć i używać klucza API przeznaczonego tylko do debugowania. Instrukcje tworzenia tego rodzaju klucza można znaleźć w dokumentacji Firebase ML .

Często zadawane pytania