Sprawdzone metody zabezpieczania interfejsu API

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Klucze API są wymagane w przypadku aplikacji i projektów korzystających z interfejsów API i pakietów SDK Google Maps Platform. Aby zapewnić maksymalny poziom bezpieczeństwa i minimalny nakład pracy, zabezpiecz klucze interfejsu API podczas ich tworzenia.

Chociaż możliwe jest zabezpieczenie kluczy interfejsu API po ich utworzeniu i użyciu, mogą istnieć różne ograniczenia w zależności od tego, jak są używane. Najbardziej skomplikowane są aktualizacje lub zastępowanie kluczy w aplikacjach mobilnych (Android i iOS), ponieważ klucze nie zostaną zastąpione, dopóki wszyscy klienci nie zaktualizują aplikacji. Aktualizowanie i zastępowanie kluczy w języku JavaScript oraz aplikacjach internetowych jest o wiele łatwiejsze. Aktualizowanie lub zastępowanie tych kluczy może jednak wymagać starannego planowania i szybkiej pracy.

Sposoby zabezpieczeń związane z poszczególnymi usługami Google Maps Platform, takimi jak Maps JavaScript API, są wymienione w sekcji Więcej informacji.

Ogranicz klucze interfejsu API

Gdy tworzysz klucze interfejsu API po raz pierwszy, ogranicz je za pomocą ograniczeń aplikacji oraz co najmniej 1 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 interfejsu API ograniczają możliwość korzystania z kluczy interfejsu API do co najmniej jednego interfejsu API lub pakietu SDK Google Maps Platform. Przetwarzane są tylko żądania dotyczące interfejsów API lub pakietów SDK powiązanych z kluczem interfejsu API. W przypadku każdego klucza interfejsu API możesz określić dowolną liczbę ograniczeń interfejsu API.

Jeśli podczas tworzenia klucza interfejsu API nie został przez Ciebie zabezpieczony, utwórz dodatkowe klucze interfejsu API i ogranicz je, a następnie zaktualizuj wszystkie swoje aplikacje za pomocą nowych kluczy. Jeden klucz na aplikację idealnie nadaje się do bezpieczeństwa, ale możesz używać kluczy z ograniczeniami w wielu aplikacjach, o ile typy ograniczeń aplikacji nie spowodują niezgodności z aplikacjami, które mają taki sam klucz.

Jeśli ograniczasz utworzone klucze interfejsu API po ich utworzeniu, sprawdź użycie klucza 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. Wybierz Pokaż filtry.

  3. W sekcji Grouped by (Zgrupowane według) wybierz Credential (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 menu Grouped by (Pogrupowane według) wybierz API. Zobaczysz, które ograniczenia interfejsu API zostaną zastosowane w przypadku tego klucza.

    Wybór opcji Metoda interfejsu API w sekcji Pogrupowane według może wskazać, który typ ograniczenia aplikacji najlepiej pasuje do 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 żądane informacje zgodnie z listą ograniczeń.

    Typ ograniczenia Opis
    Strony odsyłające HTTP Podaj co najmniej jedną witrynę odsyłającą. Symbole wieloznaczne są akceptowane do autoryzowania wszystkich subdomen (np. *.google.com akceptuje wszystkie witryny kończące się na .google.com). Określ https:// i http:// w niezmienionym stanie. W przypadku innych typów protokołów adresu URL strony odsyłającej 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 mieć pewność, że jest zgodne z Twoimi oczekiwaniami. 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 jeden adres IPv4 lub IPv6 albo podsieć w notacji CIDR. Ponieważ żądanie usługi internetowej sprawdza i porównuje zewnętrzny adres IP z ograniczeniem klucza interfejsu API,użyj publicznego adresu IP serwera.
    Aplikacje na Androida Dodaj odcisk cyfrowy certyfikatu podpisywania SHA-1 i nazwę pakietu na Androida z pliku AndroidManifest.xml.
    Aplikacje na iOS Pod typami wybierz odpowiedni identyfikator pakietu na iOS.
  4. Kliknij Zapisz.

Ustawianie ograniczenia interfejsu API dla 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 wybierz interfejsy API lub pakiety SDK, do których aplikacja ma uzyskiwać dostęp za pomocą klucza interfejsu API.

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

  4. Kliknij Zapisz.

    Po tym 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 znajdziesz w przewodniku po uzyskiwaniu klucza interfejsu API dla odpowiedniego interfejsu API lub pakietu SDK.

Usuń nieużywane klucze interfejsu API

Zanim usuniesz klucz interfejsu API, upewnij się, że nie jest on używany w środowisku produkcyjnym. Jeśli nie ma żadnego ruchu zakończonego powodzeniem, klucz jest prawdopodobnie 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. W oknie Usuń dane logowania wybierz 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 generowania kluczy API

.

Ponowne wygenerowanie klucza interfejsu API spowoduje utworzenie nowego klucza, który będzie miał wszystkie ograniczenia starego klucza. Spowoduje to również uruchomienie 24-godzinnego licznika czasu do dezaktywacji starego klucza interfejsu API.

W tym czasie zarówno stary, jak i nowy klucz są akceptowane, co umożliwi Ci migrację aplikacji na nowy klucz. Jednak po zakończeniu tego okresu aplikacje, które nadal używają starego klucza interfejsu API, przestaną działać.

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

  2. Wybierz Przywróć poprzedni klucz.

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

Po przywróceniu poprzedniej wersji „poprzednia” wersja klucza staje się poprzednią wersją i ustawiono dla niego 24-godzinny minutnik dezaktywacji. Można przywrócić te dwie wartości klucza do momentu ponownego wygenerowania klucza.

Druga generacja zastępuje starą wartość nieaktywnego klucza.

Monitorowanie wykorzystania interfejsu API

Aby sprawdzić użycie klucza interfejsu API:

  1. Otwórz stronę Dane.

  2. Kliknij Pokaż filtry.

  3. W sekcji Grouped by (Zgrupowane według) wybierz API method (Metoda interfejsu API).

  4. W polu Kod odpowiedzi wybierz 2xx, aby zobaczyć pomyślne żądania dotyczące tego klucza.

Jeśli wykryjemy nieautoryzowane użycie, wykonaj te czynności:

  1. Ogranicz klucze.

    Jeśli tego samego klucza używasz w wielu aplikacjach, przeprowadź migrację do wielu kluczy API, najlepiej używając oddzielnych kluczy interfejsu API dla każdej aplikacji.

  2. Jeśli nieautoryzowane użycie będzie kontynuowane, 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 interfejsu API zostanie przejęty, możesz usunąć lub ponownie wygenerować klucz, którego dotyczy problem, bez konieczności aktualizowania pozostałych.

Migracja do wielu kluczy interfejsu API

Aby przeprowadzić migrację z używania jednego klucza interfejsu API dla wielu aplikacji, do jednego unikalnego klucza interfejsu API dla każdej aplikacji wykonaj te czynności:

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

    • Aplikacje internetowe najłatwiej zaktualizować, bo to Ty zarządzasz kodem. Zaplanuj aktualizację wszystkich kluczy aplikacji internetowych.
    • Aplikacje mobilne są znacznie trudniejsze, ponieważ klienci muszą zaktualizować aplikacje, aby móc korzystać z nowych kluczy.
  2. Utwórz nowe klucze i ogranicz je.

    • Dodaj ograniczenie aplikacji i co najmniej jedno ograniczenie dotyczące 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 zaktualizują aplikację do nowego klucza interfejsu API.

Metody ochrony aplikacji korzystających z interfejsów API usługi internetowej Map Google lub statycznych interfejsów API

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

  • Przechowuj klucze interfejsu API lub tajne klucze podpisywania w plikach poza drzewem źródłowym aplikacji. Jeśli przechowujesz w plikach klucze interfejsu API lub inne prywatne informacje, umieść je poza drzewem źródłowym aplikacji, aby nie były one dostępne 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 przez interfejsy API usług internetowych lub statyczne interfejsy internetowe

  • Użyj serwera proxy. Serwer proxy stanowi solidne źródło interakcji z odpowiednim interfejsem API Google Maps Platform. Więcej informacji o korzystaniu z serwera proxy znajdziesz w artykule Życie serwerów proxy z bibliotekami klienta interfejsu Google Data API.

  • Zaciemnij lub zaszyfruj klucz interfejsu API lub tajny klucz podpisywania. To komplikuje pobieranie kluczy API i innych danych prywatnych bezpośrednio z aplikacji.

Więcej informacji

W tych tabelach podano odpowiednie ograniczenia klucza interfejsu API i sprawdzone metody zabezpieczania go w przypadku poszczególnych interfejsów API, pakietów SDK i usług Google Maps Platform.

witryny z interfejsem JavaScript, elementami osadzonymi lub interfejsami API Map Google,

Interfejs API/SDK/usługa Ograniczenie aplikacji(1) Ograniczenie dostępu do interfejsu API (1) Sprawdzone metody
Maps JavaScript API (2) Ograniczenie strony odsyłającej HTTP Maps JavaScript API
Usługa wyznaczania trasy, Maps JavaScript API Ograniczenie strony odsyłającej HTTP Wskazówki dojazdu, Maps JavaScript API
Usługa macierzy odległości, Maps JavaScript API Ograniczenie strony odsyłającej HTTP Interfejs atrybut matrycy odległości, Maps JavaScript API
Usługa wysokości, Maps JavaScript API Ograniczenie strony odsyłającej HTTP Elevation API oraz Maps JavaScript API
Usługa geokodowania, Maps JavaScript API Ograniczenie strony odsyłającej HTTP Interfejs API kodowania geograficznego, Maps JavaScript API
Biblioteka miejsc, Maps JavaScript API Ograniczenie strony odsyłającej HTTP Interfejs API miejsc, Maps JavaScript API
Interfejs API Map Google do umieszczania na stronie Ograniczenie strony odsyłającej HTTP Maps Embed API
Statyczny interfejs API Map Google Ograniczenie strony odsyłającej HTTP Maps Static API
Statyczny interfejs API Street View Ograniczenie 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 dostępu do interfejsu API (1) Sprawdzone metody
Adres Ograniczenie adresu IP(4) Interfejs API do weryfikacji adresów
Trasa API Ograniczenie adresu IP(4) Directions API
Interfejs API macierzy odległości Ograniczenie adresu IP(4) Distance Matrix API
Interfejs API Elevation Ograniczenie adresu IP(4) Elevation API
Interfejs API geokodowania Ograniczenie adresu IP(4) Geocoding API
Geolokalizacja – interfejs API Ograniczenie adresu IP(4) Geolocation API
Interfejs Places API(5) Ograniczenie adresu IP(4) Places API
Interfejs API reklam w Road Ograniczenie adresu IP(4) Roads API
Time Zone API, Ograniczenie adresu IP(4) Time Zone API

Aplikacje na Androida

Interfejs API/SDK/usługa Ograniczenie aplikacji(1) Ograniczenie dostępu do 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 dostępu do 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 dowolnym interfejsem API lub pakietem SDK Google Maps Platform. Zdecydowanie zalecamy jednak ograniczenie kluczy kluczy interfejsu API, zwłaszcza w tych przypadkach:

  • Ś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 Maps SDK na Androida i pakietu SDK Map na iOS.

3 W przypadku interfejsu statycznego interfejsu API Map Google i interfejsu Street View Static API oprócz klucza interfejsu API musisz przesłać podpis cyfrowy, aby przekroczyć dzienny limit 25 000 wczytań mapy.

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

4 Ograniczenia dotyczące adresów IP mogą być niepraktyczne w niektórych sytuacjach, takich jak aplikacje mobilne i środowiska chmury, które korzystają z dynamicznych adresów IP. Jeśli w tych sytuacjach używasz interfejsów API usługi internetowej Map Google, zabezpiecz swoje aplikacje za pomocą serwera proxy lub zaciemniania kodu.

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