Dowiedz się, jak używać kluczy API i zarządzać nimi w 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, jak klucze API są zazwyczaj używane, klucze API dla usług Firebase nie są używane do kontroli dostępu do zasobów zaplecza; można to zrobić tylko za pomocą reguł zabezpieczeń Firebase. 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 usług Firebase można umieszczać w kodzie lub w zapisanych plikach konfiguracyjnych.

Chociaż klucze API dla usług Firebase są bezpieczne umieścić w kodzie, istnieje kilka szczególnych przypadków, kiedy należy egzekwować limity klucz API; na przykład jeśli korzystasz z Firebase ML, Firebase Authentication z metodą logowania za pomocą adresu e-mail/hasła 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:

  • Tworzenie projektu Firebase> Browser key automatycznie tworzone
  • Tworzenie Firebase iOS App> iOS key auto-stworzony
  • Tworzenie Firebase Android App> Android key auto-stworzony

Można również tworzyć własne klucze API w konsoli Google Cloud , na przykład dla rozwoju lub debugowania . Dowiedz się więcej o tym, kiedy może to być zalecane w dalszej części tej strony.

Znajdowanie kluczy API

Można przeglądać i zarządzać klucze API wszystkie Twoje projektu w API i usług> Poświadczenia panelu w konsoli Google Cloud.

Można również dowiedzieć się, jakie klucz API jest automatycznie dopasowywany do Firebase aplikacji w następujących miejscach. Domyślnie wszystkie swoje przedsięwzięcia Firebase Apps dla tej samej platformie (iOS vs Android vs internetowej) będą używać tego samego klucza API.

  • Firebase iOS Aplikacje - Znajdź klucz auto-dopasowana danej aplikacji API w pliku konfiguracyjnym Firebase, GoogleService-Info.plist w API_KEY dziedzinie.

  • Firebase Aplikacje Android - Znajdź auto dopasowany klucz API danej aplikacji w pliku konfiguracyjnym Firebase, google-services.json w current_key dziedzinie.

  • Firebase Web Apps - Znajdź auto dopasowany klucz API danej aplikacji w config obiektu Firebase w apiKey dziedzinie.

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żna złożyć zamówienie na dynamiczne linki Link Shortener API :

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

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

Stosować 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 używasz hasła oparte Firebase uwierzytelniania i ktoś zdobędzie klucz API, nie będzie w stanie uzyskać dostęp do dowolnej bazy danych Twojego projektu Firebase lub danych Storage Cloud, o ile dane te są chronione przez Firebase zasad bezpieczeństwa . 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 złagodzić przed możliwością, że ktoś może nadużywać klucz API do próbować ataku brute force można dokręcić domyślną kwotę z identitytoolkit.googleapis.com końcowych odzwierciedlać normalne oczekiwania ruchu swojej 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. Można zmienić limity API swój projekt w tej konsoli Google Cloud .

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.

Na przykład, jeśli używasz Chmura Vision API Firebase ML na iOS, należy utworzyć osobne klucze API , które służy wyłącznie do uzyskiwania dostępu chmurze Vision API.

Za pomocą oddzielnych, ograniczonych klucze API dla non-Firebase API, można obrócić lub wymienić w razie potrzeby i klawiszy dodatkowych ograniczeń do kluczy API bez zakłócania korzystania z usług Firebase.

Użyj klawiszy specyficzne środowisko API (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 dotyczące tworzenia tego rodzaju klucza można znaleźć w docs Firebase ML .

FAQ