Sprawdzone metody zabezpieczania interfejsu API

Klucze API są wymagane w przypadku aplikacji i projektów, które korzystają z interfejsów API Google Maps Platform i pakietów SDK. Podczas tworzenia kluczy bezpieczeństwa zapewnij ich maksymalną ochronę i minimalizację wysiłku.

Klucze interfejsu API można zabezpieczyć po ich utworzeniu i użyciu, jednak w zależności od sposobu ich użycia mogą obowiązywać inne ograniczenia. Aktualizowanie i zastępowanie kluczy w aplikacjach mobilnych (Android i iOS) jest najtrudniejsze, ponieważ klucze te nie zostaną zastąpione, dopóki wszyscy klienci nie zaktualizują swoich aplikacji. Aktualizowanie lub zastępowanie kluczy w aplikacjach JavaScript lub w usługach internetowych jest o wiele łatwiejsze, ale pamiętaj, że ich aktualizacja może wymagać starannego planowania i szybkiej pracy.

Procedury bezpieczeństwa poszczególnych usług Google Maps Platform, takich jak Maps JavaScript API, znajdziesz w sekcji Więcej informacji.

Ogranicz klucze interfejsu API

Gdy tworzysz klucze interfejsu API po raz pierwszy, ogranicz je za pomocą ograniczenia aplikacji i co najmniej jednego ograniczenia interfejsu API.

  • Ograniczenia aplikacji ograniczają używanie klucza interfejsu API do konkretnej platformy (Android lub iOS) lub określonych witryn (publiczny adres IP i witryna). Do każdego klucza interfejsu API można dodać tylko jeden typ ograniczenia aplikacji.

  • Ograniczenia dostępu do interfejsów API ograniczają możliwość korzystania z kluczy interfejsu API do jednego lub kilku interfejsów API Google Maps Platform lub pakietów SDK. Przetwarzane będą tylko żądania użycia interfejsów API lub pakietów SDK powiązanych z kluczem interfejsu API. W przypadku dowolnego klucza interfejsu API możesz określić dowolną liczbę ograniczeń interfejsu API.

Jeśli podczas tworzenia klucza interfejsu API nie zabezpieczono go, utwórz dodatkowe klucze interfejsu API i ogranicz je, a następnie zaktualizuj wszystkie aplikacje przy użyciu nowych kluczy. Jeden klucz na aplikację najlepiej nadaje się ze względów bezpieczeństwa, ale możesz używać kluczy z ograniczeniem w wielu aplikacjach, o ile rodzaje ograniczeń klucza nie spowodują problemów z zgodnością z aplikacjami, które mają ten sam klucz.

Jeśli ograniczasz klucze interfejsu API po ich utworzeniu, sprawdź użycie kluczy interfejsu API, aby mieć pewność, że ograniczenia nie zepsują żadnej z istniejących aplikacji.

  1. Otwórz stronę wskaźników w Google Cloud Console.

  2. Kliknij Pokaż filtry.

  3. W sekcji Grupowanie według wybierz Dane logowania. Zobaczysz, które klucze interfejsu API są używane w poszczególnych usługach Google.

  4. Kliknij Dane logowania.

  5. Odznacz wszystkie dane logowania.

  6. Wybierz klucz dla każdego wyświetlonego klucza i kliknij OK.

  7. W sekcji Grouped by (Zgrupowane według) wybierz API. Zobaczysz, które ograniczenia interfejsu API zostaną zastosowane do tego klucza.

    Wybranie opcji Metoda interfejsu API w narzędziu Grouped by (Zgrupowane według) może wyświetlić wskazówki na temat tego, który typ ograniczenia aplikacji jest odpowiedni dla klucza.

Ustawianie ograniczenia aplikacji dla klucza interfejsu API

  1. Otwórz stronę Dane logowania.
  2. Wybierz klucz interfejsu API, dla którego chcesz ustawić ograniczenie. Pojawi się strona właściwości klucza interfejsu API.

  3. W sekcji Ograniczenia klucza wybierz Ograniczenia aplikacji.

    Wybierz jeden z typów ograniczeń i podaj wymagane informacje zgodnie z listą ograniczeń.

    Typ ograniczenia Opis
    Strony odsyłające HTTP Podaj co najmniej jedną witrynę odsyłającą. Możesz używać symboli wieloznacznych do autoryzowania wszystkich subdomen (na przykład *.google.com akceptuje wszystkie witryny kończące się na .google.com). Określ https:// i http:// w stanie, w jakim się znajdujesz. W przypadku innych typów protokołów adresów URL stron odsyłających musisz użyć specjalnej reprezentacji. Na przykład użyj formatu file:///path/to/ jako __file_url__//path/to/*. Po włączeniu stron odsyłających sprawdź ich wykorzystanie, aby upewnić się, że spełnia Twoje oczekiwania. Obsługiwane są te protokoły odsyłające: about://, app://, applewebdata://, asset://, chrome://, content://, file://, ftp://, ionic://, local://, ms-appx://, ms-appx-web://, ms-local-stream://, prism://, qrc://, res://, saphtmlp://.
    Adresy IP Podaj 1 adres IPv4 lub IPv6 albo podsieć w notacji CIDR. Żądanie usługi internetowej sprawdza i porównuje zewnętrzny adres IP z ograniczeniem klucza interfejsu API,więc użyj publicznego adresu IP serwera.
    Aplikacje na Androida Dodaj w pliku AndroidManifest.xml odcisk cyfrowy certyfikatu SHA-1 i nazwę pakietu na Androida.
    Aplikacje na iOS Pod typami wybierz odpowiedni identyfikator pakietu na iOS.
  4. Kliknij Zapisz.

Ustawianie ograniczenia dotyczącego klucza interfejsu API

  1. Otwórz stronę danych logowania.

  2. Wybierz klucz interfejsu API, do którego dostęp chcesz ograniczyć. Pojawi się strona Ogranicz klucz interfejsu API i zmień jego nazwę.

  3. W sekcji Ograniczenia interfejsu API:

    • Kliknij Ogranicz klucz.

    • Kliknij menu Wybierz interfejsy API i za pomocą klucza interfejsu API wybierz z niego interfejsy API lub pakiety SDK, do których Twoja aplikacja ma mieć dostęp.

      Jeśli na liście nie ma interfejsu API lub pakietu SDK, musisz go włączyć.

  4. Kliknij Zapisz.

    Po wykonaniu tego kroku ograniczenie stanie się częścią definicji klucza interfejsu API. Jeśli nie podasz odpowiednich szczegółów lub nie klikniesz „Zapisz”, klucz interfejsu API nie zostanie ograniczony. Więcej informacji o odpowiednim API lub pakiecie SDK znajdziesz w przewodniku po uzyskiwaniu klucza interfejsu API.

Usuń nieużywane klucze interfejsu API

Zanim usuniesz klucz interfejsu API, sprawdź, czy nie jest on używany w środowisku produkcyjnym. Jeśli nie ma żadnego ruchu, prawdopodobnie klucz jest bezpieczny do usunięcia.

Aby usunąć klucz interfejsu API:

  1. Otwórz stronę Dane logowania.

  2. Wybierz klucz interfejsu API, który chcesz usunąć.

  3. Kliknij przycisk Usuń u góry strony.

  4. Gdy pojawi się okno Usuń dane logowania, kliknij Usuń.

    Rozpowszechnienie klucza interfejsu API może potrwać kilka minut. Po rozpowszechnieniu ruch używający usuniętego klucza interfejsu API będzie odrzucany.

Inne sposoby zabezpieczania interfejsów API

Zachowaj ostrożność podczas ponownego generowania kluczy interfejsu API

Ponowne wygenerowanie klucza interfejsu API spowoduje utworzenie nowego klucza, który będzie miał wszystkie ograniczenia. Spowoduje to również uruchomienie licznika 24 godzin, który dezaktywuje stary klucz interfejsu API.

W tym czasie zarówno stary, jak i nowy klucz są akceptowane, co daje Ci szansę na migrację aplikacji do nowego klucza. Po zakończeniu tego okresu aplikacje wciąż korzystające ze starego klucza interfejsu API przestaną jednak działać.

  1. Otwórz stronę kluczy interfejsów API.

  2. Kliknij Przywróć poprzedni klucz.

  3. W oknie Przywróć kliknij Przywróć klucz.

Gdy cofniesz, poprzednia „nowa” wersja stanie się poprzednią wersją i zostanie ustawiony dla niej nowy 24-godzinny minutnik dezaktywacji. Między tymi 2 wartościami klucza możesz je cofać, dopóki nie wygenerujesz go jeszcze raz.

Ta druga regeneracja zastępuje starą nieaktywną wartość klucza.

Monitorowanie wykorzystania interfejsu API

Aby sprawdzić użycie klucza interfejsu API:

  1. Otwórz stronę Dane.

  2. Kliknij Pokaż filtry.

  3. W sekcji Grupowanie według wybierz Metoda interfejsu API.

  4. W sekcji Kod odpowiedzi wybierz 2xx, aby wyświetlić udane żądania tego klucza.

W przypadku wykrycia nieautoryzowanego użycia:

  1. Ogranicz klucze.

    Jeśli ten sam klucz jest używany w wielu aplikacjach, przeprowadź migrację do wielu kluczy interfejsu API, najlepiej używając oddzielnych kluczy interfejsu API dla każdej aplikacji.

  2. Jeśli nieautoryzowane użycie będzie kontynuowane, ponownie wygeneruj lub usuń odpowiednie klucze.

  3. Skontaktuj się z zespołem pomocy

Używaj oddzielnych kluczy interfejsu API dla każdej aplikacji

Ogranicza to zakres każdego klucza. Jeśli klucz API zostanie przejęty, możesz go usunąć lub wygenerować ponownie bez konieczności aktualizowania pozostałych.

Migracja do wielu kluczy interfejsu API

Aby przeprowadzić migrację z jednego klucza interfejsu API do wielu aplikacji, na jeden unikalny klucz interfejsu API dla każdej aplikacji:

  1. Określ, które aplikacje będą potrzebować nowych kluczy.

    • Aplikacje internetowe najłatwiej zaktualizować, bo masz pełną kontrolę nad kodem. Zaplanuj zaktualizowanie wszystkich kluczy aplikacji internetowych.
    • Aplikacje mobilne są znacznie trudniejsze, ponieważ klienci muszą zaktualizować aplikacje, aby móc korzystać z nowych kluczy.
  2. Utwórz i ogranicz nowe klucze.

    • Dodaj ograniczenie dotyczące aplikacji i co najmniej jedno ograniczenie interfejsu API.
  3. Dodaj nowe klucze do różnych aplikacji.

    • W przypadku aplikacji mobilnych aktualizacja może potrwać kilka miesięcy, zanim wszyscy użytkownicy zdecydują się na użycie nowego klucza interfejsu API.

Metody ochrony aplikacji w interfejsach API usług internetowych Map Google lub statycznych interfejsów API

  • Przechowuj klucze interfejsu API i tajne klucze podpisywania poza kodem źródłowym aplikacji. Jeśli umieścisz zmienne interfejsu API lub inne prywatne informacje w zmiennych środowiskowych albo dołączysz pliki przechowywane osobno, a następnie udostępnisz kod, klucze interfejsu API lub tajne klucze podpisywania nie będą uwzględniane w udostępnionych plikach.

  • Przechowuj klucze interfejsu API lub obiekty tajne podpisywania w plikach poza drzewem źródłowym aplikacji. Jeśli przechowujesz w plikach klucze interfejsu API lub inne prywatne informacje, przechowuj je poza drzewem źródłowym aplikacji, aby zablokować klucze w systemie kontroli kodu źródłowego. Jest to szczególnie ważne, jeśli korzystasz z publicznego systemu zarządzania kodami źródłowymi, takiego jak GitHub.

Metody ochrony aplikacji mobilnych usług internetowych lub statycznych interfejsów API usług internetowych

Więcej informacji

W tych tabelach podano odpowiednie ograniczenia klucza interfejsu API oraz sprawdzone metody bezpieczeństwa interfejsu API związane z każdym interfejsem API, pakietem SDK i usługami Google Maps Platform.

Witryny z JavaScriptem, interfejsem do umieszczania na stronie lub interfejsami statycznymi API

Interfejs API/SDK/usługa Ograniczenie aplikacji (1) Ograniczenie interfejsu API (1) Sprawdzone metody
Interfejs Maps JavaScript API (2) Ograniczenie dotyczące strony odsyłającej HTTP Maps JavaScript API
Usługa wyznaczania trasy, Maps JavaScript API Ograniczenie dotyczące strony odsyłającej HTTP Trasa API, Maps JavaScript API
Usługa macierzy odległości, Maps JavaScript API Ograniczenie dotyczące strony odsyłającej HTTP Interfejs API odległości, Maps JavaScript API
Usługa wysokości, Maps JavaScript API Ograniczenie dotyczące strony odsyłającej HTTP Interfejs API Elevation, Maps JavaScript API
Usługa geokodowania, Maps JavaScript API Ograniczenie dotyczące strony odsyłającej HTTP Interfejs Geocode API, Maps JavaScript API
Biblioteka miejsc, Maps JavaScript API Ograniczenie dotyczące strony odsyłającej HTTP Interfejs API interfejsów API, Maps JavaScript API
Interfejs API Map Google do umieszczania na stronie Ograniczenie dotyczące strony odsyłającej HTTP Maps Embed API
Statyczny interfejs API Map Google Ograniczenie dotyczące strony odsyłającej HTTP Maps Static API
Statyczny interfejs API Street View Ograniczenie dotyczące strony odsyłającej HTTP Street View Static API

Aplikacje i serwery korzystające z usług internetowych

Interfejs API/SDK/usługa Ograniczenie aplikacji (1) Ograniczenie interfejsu API (1) Sprawdzone metody
Adres API do weryfikacji Ograniczenie adresu IP(4) Address Validation API
Trasa API Ograniczenie adresu IP(4) Directions API
Interfejs API odległości Ograniczenie adresu IP(4) Distance Matrix API
Interfejs API Elevation Ograniczenie adresu IP(4) Elevation API
Interfejs API do kodowania geograficznego Ograniczenie adresu IP(4) Geocoding API
Geolokalizacja API Ograniczenie adresu IP(4) Geolocation API
Places API (5) Ograniczenie adresu IP(4) Places API
Interfejs API dla reklam w Rosji Ograniczenie adresu IP(4) Roads API
Routes API Ograniczenie adresu IP(4) Routes API
Interfejs API strefy czasowej Ograniczenie adresu IP(4) Time Zone API

Aplikacje na Androida

Interfejs API/SDK/usługa Ograniczenie aplikacji (1) Ograniczenie interfejsu API (1) Sprawdzone metody
Pakiet SDK Map na Androida Ograniczenie Androida Maps SDK na Androida
Pakiet SDK Miejsc na Androida Ograniczenie Androida Places API

Aplikacje na iOS

Interfejs API/SDK/usługa Ograniczenie aplikacji (1) Ograniczenie interfejsu API (1) Sprawdzone metody
Pakiet SDK Map na iOS Ograniczenie iOS Maps SDK na iOS
Pakiet SDK Miejsc na iOS Ograniczenie iOS Places API

1 Możesz użyć nieograniczonego klucza interfejsu API z każdym interfejsem Google Maps Platform API lub pakietem SDK. Zdecydowanie zalecamy jednak ograniczenie kluczy kluczy, zwłaszcza w tych sytuacjach:

  • Środowisko testowe będzie widoczne lub widoczne publicznie.

  • Aplikacja korzystająca z klucza interfejsu API jest gotowa do użycia w środowisku produkcyjnym.

2 W przypadku aplikacji mobilnych rozważ użycie natywnego pakietu SDK Map na Androida i Map SDK na iOS.

3 W przypadku statycznego interfejsu API Map Google i interfejsu Street View Static API oprócz klucza interfejsu API musisz podać podpis cyfrowy, który będzie przekraczał dzienny limit 25 000 wczytań mapy.

Jeśli podpisujesz prośby, sprawdź, ile żądań bez podpisów chcesz zaakceptować dziennie, i odpowiednio dostosuj limity niepodpisanych żądań.

4 Ograniczenia IP mogą nie być stosowane w niektórych sytuacjach, np. w aplikacjach mobilnych i środowiskach chmurowych, które zależą od dynamicznych adresów IP. Jeśli w tych sytuacjach używasz interfejsu API usługi internetowej Map, zabezpiecz swoje aplikacje, używając serwera proxy lub zaciemniania kodu.

5 W przypadku aplikacji mobilnych rozważ użycie natywnego pakietu Places SDK na Androida i Places SDK na iOS.