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

Klucz interfejsu 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 oraz sprawdzone metody korzystania z 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 przeciwieństwie do typowych kluczy API, klucze API usług Firebase nie są używane do kontrolowania dostępu do zasobów zaplecza . można to zrobić tylko za pomocą reguł zabezpieczeń Firebase (aby kontrolować, którzy użytkownicy mają dostęp do zasobów) i App Check (aby kontrolować, które aplikacje mają dostęp do zasobów).

Zwykle trzeba skrupulatnie strzec kluczy API (na przykład używając usługi repozytorium lub ustawiając klucze jako zmienne środowiskowe); jednak klucze API dla usług Firebase można umieszczać w kodzie lub w zapisanych 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 dla klucza API; na przykład jeśli korzystasz z Firebase ML, Firebase Authentication z metodą logowania e-mailem/hasłem lub płatnego interfejsu Google Cloud API. Dowiedz się więcej o tych przypadkach później na tej stronie.

Tworzenie kluczy API

Projekt Firebase może mieć wiele kluczy API, ale każdy klucz API może być powiązany 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 jedną z tych czynności:

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

Możesz także tworzyć własne klucze API w Google Cloud Console , na przykład do programowania lub debugowania . Dowiedz się więcej o tym, kiedy może to być zalecane w dalszej części tej strony.

Znajdowanie kluczy API

Możesz przeglądać wszystkie klucze API swojego projektu i zarządzać nimi w panelu APIs & Services > Credentials w Google Cloud Console.

W poniższych miejscach możesz też 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 interfejsu API aplikacji w pliku konfiguracyjnym Firebase, GoogleService-Info.plist , w polu API_KEY .

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

  • Aplikacje internetowe Firebase – znajdź automatycznie dopasowany klucz interfejsu API aplikacji w obiekcie konfiguracyjnym Firebase w polu apiKey .

Korzystanie z klucza API

Klucze API służą do identyfikowania projektu Firebase podczas interakcji z usługami Firebase/Google. W szczególności służą do kojarzenia żądań interfejsu API z projektem w celu uzyskania limitu i rozliczeń. Przydają się również do uzyskiwania dostępu do danych publicznych.

Na przykład można jawnie użyć klucza interfejsu API, przekazując jego wartość do wywołania interfejsu API REST jako parametru zapytania. Ten przykład pokazuje, jak możesz przesłać żądanie do interfejsu API skracania linków Dynamic Links :

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

Gdy aplikacja wywoła interfejs API Firebase, automatycznie wyszuka w pliku/obiekcie konfiguracji Firebase klucz interfejsu API projektu. Możesz jednak ustawić swoje klucze API za pomocą innego mechanizmu, w tym zmiennych środowiskowych.

Zastosuj ograniczenia do kluczy API (zalecane)

Chociaż nie jest konieczne traktowanie klucza API dla usług Firebase jako tajnego, w pewnych szczególnych przypadkach (patrz poniżej) możesz chcieć zastosować dodatkowe środki, aby chronić swój projekt przed niewłaściwym wykorzystaniem klucza API.

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

Jeśli korzystasz z uwierzytelniania Firebase opartego na hasłach, a ktoś wejdzie w posiadanie Twojego klucza API, nie będzie mógł uzyskać dostępu do żadnej bazy danych projektu Firebase ani danych Cloud Storage , o ile są one chronione przez reguły zabezpieczeń 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 Twoim projekcie.

Aby ograniczyć możliwość niewłaściwego użycia klucza interfejsu API w celu przeprowadzenia ataku typu brute force, 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, a Twoja aplikacja nagle zyska użytkowników, możesz otrzymywać błędy logowania, dopóki nie zwiększysz limitu. Limity interfejsu API projektu możesz zmienić w Google Cloud Console .

Używaj oddzielnych, ograniczonych kluczy API dla określonych typów API

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

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

Jeśli na przykład korzystasz z interfejsów API Cloud Vision Firebase ML w systemie iOS, utwórz oddzielne klucze API , których używasz tylko do uzyskiwania dostępu do interfejsów Cloud Vision API.

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

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

Jeśli konfigurujesz różne projekty Firebase dla różnych środowisk, takich jak tymczasowe i produkcyjne, ważne jest, aby każde wystąpienie aplikacji współdziałało z odpowiadającym mu projektem Firebase. Na przykład instancja aplikacji tymczasowej 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 testowym projektem Firebase.

Aby zmniejszyć problemy z promowaniem zmian w kodzie od programowania przez przemieszczanie do produkcji, zamiast dołączać klucze API w samym kodzie, ustaw je jako zmienne środowiskowe lub dołącz je do pliku konfiguracyjnego.

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

FAQ