Więcej informacji o używaniu kluczy interfejsu API dla Firebase i zarządzaniu nimi

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

Ogólne informacje o kluczach interfejsu API i Firebase

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

W przeciwieństwie do typowych kluczy interfejsu API klucze interfejsu 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 (do kontrolowania, którzy użytkownicy mają dostęp do zasobów) i Sprawdzania aplikacji Firebase (do kontrolowania, które aplikacje mogą uzyskiwać dostęp do zasobów).

Zwykle trzeba szybko zabezpieczać klucze interfejsu API (np. za pomocą usługi Vault lub ustawiając je jako zmienne środowiskowe), jednak klucze interfejsu API dla usług Firebase można umieścić w kodzie lub zameldowanych plikach konfiguracyjnych.

Chociaż klucze interfejsu API dla usług Firebase można bezpiecznie umieszczać w kodzie, należy przejrzeć i zastosować do nich odpowiednie ograniczenia.

Tworzenie kluczy interfejsu API

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

Klucze interfejsu API tworzone automatycznie przez Firebase dla Twoich aplikacji Firebase

Firebase automatycznie tworzy klucze interfejsu API dla Twojego projektu, gdy:

  • Utwórz projekt Firebase > Browser key utworzona automatycznie
  • Utwórz aplikację Firebase na iOS > iOS key utworzona automatycznie
  • Utwórz aplikację Firebase na Androida > Android key utworzona automatycznie

Możesz też tworzyć własne klucze interfejsu API w konsoli Google Cloud, na przykład do programowania lub debugowania. Na tej stronie dowiesz się więcej o tym, kiedy możemy Ci to polecać.

Znajdowanie kluczy interfejsu API

W konsoli Google Cloud możesz wyświetlać wszystkie klucze interfejsu API projektu i zarządzać nimi w panelu Interfejsy API i usługi > Dane logowania.

Informacje o tym, który klucz interfejsu API jest automatycznie dopasowywany do aplikacji Firebase, znajdziesz też w tych miejscach. Domyślnie wszystkie aplikacje Firebase w Twoim projekcie na tej samej platformie (Apple, Android i internet) będą używać tego samego klucza interfejsu API.

  • Aplikacje Apple z Firebase – znajdź automatycznie dopasowany klucz interfejsu API w pliku konfiguracyjnym Firebase GoogleService-Info.plist, w polu API_KEY.

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

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

Używanie klucza API

Klucze interfejsu API służą do identyfikowania projektu Firebase podczas interakcji z usługami Firebase/Google. Chodzi o powiązanie żądań do interfejsu API z projektem w zakresie limitów i płatności. Są one również przydatne, gdy chcesz uzyskać dostęp do danych publicznych.

Możesz na przykład bezpośrednio użyć klucza interfejsu API, przekazując jego wartość do wywołania interfejsu API REST jako parametr zapytania. Ten przykład pokazuje, jak wysłać żądanie do Dynamic Links link shortener API:

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

Gdy aplikacja wywołuje interfejs Firebase API, który wymaga klucza interfejsu API dostarczonego przez klienta mobilnego lub internetowego, aplikacja automatycznie wyszukuje klucz interfejsu API projektu w pliku/obiekcie konfiguracyjnym Firebase. Możesz jednak udostępniać klucze interfejsu API aplikacji za pomocą innego mechanizmu, w tym zmiennych środowiskowych.

Przejrzyj i zastosuj odpowiednie ograniczenia do kluczy interfejsu API (zalecane)

Chociaż nie musisz traktować klucza interfejsu API dla usług Firebase jako klucza tajnego, zalecamy zapoznanie się z ograniczeniami i limitami opisanymi w tej sekcji.

Przeglądanie interfejsów API, które zostały automatycznie dodane do listy dozwolonych dla kluczy interfejsu Firebase API

Gdy Firebase tworzy klucz interfejsu API w Twoim projekcie, automatycznie dodajemy do niego „Ograniczenia interfejsu API”. Interfejsy API dodane do tej listy dozwolonych to interfejsy Firebase API, które wymagają od klienta podania klucza interfejsu API przy wywołaniu. Większość interfejsów API wymaganych do korzystania z usług Firebase nie musi znajdować się na liście dozwolonych kluczy interfejsu API.

Firebase dodaje interfejsy API niezbędne do wszystkich usług Firebase, więc lista dozwolonych kluczy interfejsu API może zawierać interfejsy API usług, których nie używasz. Możesz usunąć interfejsy API z listy dozwolonych, ale zachowaj szczególną ostrożność, by nie usunąć interfejsów API wymaganych przez Firebase ani używanych przez Ciebie usług Firebase (zobacz listę interfejsów API związanych z Firebase, które muszą znaleźć się na liście dozwolonych dla poszczególnych usług i usług). W przeciwnym razie podczas wywoływania usług Firebase pojawią się błędy.

Skracanie limitu w przypadku korzystania z uwierzytelniania na podstawie hasła

Jeśli korzystasz z uwierzytelniania Firebase na podstawie hasła i ktoś uzyska Twój klucz interfejsu API, nie uzyska dostępu do bazy danych ani danych Cloud Storage Twojego projektu Firebase, o ile dane te będą chronione przez reguły zabezpieczeń Firebase. Mogą jednak używać Twojego klucza interfejsu API, aby uzyskiwać dostęp do punktów końcowych uwierzytelniania Firebase i wysyłać żądania uwierzytelniania do Twojego projektu.

Aby ograniczyć ryzyko niewłaściwego użycia klucza interfejsu API do przeprowadzenia ataku brute-force, możesz zwiększyć domyślny limit punktów końcowych identitytoolkit.googleapis.com, aby odzwierciedlić normalny limit ruchu w aplikacji. Pamiętaj, że jeśli zmniejszysz ten limit i aplikacja nagle zyska użytkowników, do czasu jego zwiększenia mogą pojawić się błędy logowania. Limity interfejsów API projektu możesz zmienić w konsoli Google Cloud.

Używanie osobnych, ograniczonych kluczy interfejsu API na potrzeby dowolnej usługi spoza Firebase

Chociaż klucze interfejsu API używane przez usługi Firebase z reguły nie muszą być traktowane jako tajne, należy zachować dodatkowe środki ostrożności w przypadku kluczy interfejsu API, których używasz z innymi interfejsami API Google Cloud.

Jeśli używasz interfejsu Google Cloud API (na dowolnej platformie), który nie jest przeznaczony dla usługi lub usługi Firebase, zdecydowanie zalecamy utworzenie osobnych, ograniczonych kluczy interfejsu API do użytku z tymi interfejsami API. Jest to szczególnie ważne, jeśli interfejs API jest przeznaczony do rozliczania usługi Google Cloud.

Jeśli na przykład używasz systemów uczących się Firebase i interfejsów API Cloud Vision w iOS, musisz utworzyć osobne klucze interfejsu API, których będziesz używać tylko do uzyskiwania dostępu do interfejsów Cloud Vision API.

Używając osobnych, ograniczonych kluczy API do interfejsów API spoza Firebase, możesz w razie potrzeby wykonywać rotację lub zastępować klucze oraz dodawać do nich dodatkowe ograniczenia bez zakłócania korzystania z usług Firebase.

Używaj kluczy interfejsu API zależnych od środowiska (zalecane)

Jeśli skonfigurujesz różne projekty Firebase dla różnych środowisk, na przykład na etapie przejściowym i produkcyjnym, każda instancja aplikacji musi wejść w interakcję z odpowiadającym jej projektem Firebase. Na przykład instancja aplikacji przejściowej nie powinna nigdy komunikować się z produktowym projektem Firebase. Oznacza to również, że aplikacja testowa musi korzystać z kluczy interfejsu API powiązanych z testowym projektem Firebase.

Aby zmniejszyć problemy z przechodzeniem zmian w kodzie ze środowiska programistycznego do etapowego i produkcyjnego, zamiast umieszczać klucze interfejsu API w samym kodzie, ustaw je jako zmienne środowiskowe lub uwzględnij w pliku konfiguracji.

Pamiętaj, że jeśli używasz pakietu emulatorów lokalnych Firebase do programowania razem z Firebase ML, musisz utworzyć klucz interfejsu API przeznaczony tylko do debugowania. Instrukcje tworzenia takiego klucza znajdziesz w dokumentacji ML Firebase.

Najczęstsze pytania i rozwiązywanie problemów

Najczęstsze pytania

Rozwiązywanie problemów