Hacker News

Klucze Google API nie były tajemnicą, ale Gemini zmieniło zasady

Dowiedz się, jak Gemini zmieniło zasady bezpieczeństwa kluczy Google API. Co programiści powinni wiedzieć o ochronie kluczy API, które kiedyś uważano za bezpieczne do ujawnienia.

8 min. przeczytaj

Mewayz Team

Editorial Team

Hacker News

Kiedy „publiczne z założenia” staje się zobowiązaniem z tytułu bezpieczeństwa

Przez prawie dwie dekady programiści korzystający z ekosystemu Google wyciągnęli subtelną, ale ważną lekcję: klucze API Google nie są tak naprawdę tajemnicą. Jeśli osadziłeś klucz API danych YouTube w pliku JavaScript, Google nie był zaniepokojony. Jeśli Twój klucz API Map Google pojawił się w publicznym repozytorium GitHub, reakcją bezpieczeństwa było w zasadzie wzruszenie ramionami i przypomnienie o ustawieniu ograniczeń domeny. Cały model został zbudowany wokół założenia, że ​​klucze te będą znajdować się w kodzie po stronie klienta, dostępnym dla każdego, kto otworzy DevTools.

Ta filozofia miała sens przez długi czas. Klucz API Map Google udostępniony bez ograniczeń domeny może spowodować niespodziewany rachunek, ale nie naruszy danych pacjentów ani nie wyczerpie konta bankowego. Promień wybuchu był finansowy i możliwy do opanowania. Narzędzia Google — ograniczenia stron odsyłających, biała lista adresów IP, limity przydziału — zostały zaprojektowane tak, aby ograniczać szkody, a nie całkowicie zapobiegać narażeniu.

Potem przybyły Bliźnięta i zasady się zmieniły. Problem w tym, że miliony programistów nie otrzymało tej notatki.

Starszy model mentalny, który teraz doprowadza programistów do szału

Stare doświadczenia programistów Google były celowo liberalne. Kiedy tworzyłeś klucz API Maps JavaScript, dokumentacja praktycznie zachęcała do umieszczenia go bezpośrednio w kodzie HTML. Modelem bezpieczeństwa nie była tajemnica – to było ograniczenie. Zablokujesz klucz do swojej domeny, ustawisz alerty dotyczące limitów i pójdziesz dalej. Była to inżynieria pragmatyczna: aplikacje po stronie klienta naprawdę nie potrafią zachować tajemnic przed zdeterminowanymi użytkownikami, dlatego Google zbudował system, który uwzględniał tę rzeczywistość.

Stworzyło to pokolenie programistów – i, co ważniejsze, pokolenie nawyków instytucjonalnych – dla których klucze Google API zajmowały inną kategorię mentalną niż, powiedzmy, tajny klucz Stripe lub dane uwierzytelniające dostępu AWS. Nie wkleiłbyś swojego tajnego klucza Stripe do publicznego repozytorium. Ale twój klucz do Map? To była praktycznie wartość konfiguracyjna, a nie tajemnica. Wiele zespołów bez namysłu przechowywało je w dostępnych publicznie plikach konfiguracyjnych, plikach README, a nawet w zmiennych środowiskowych po stronie klienta z przedrostkiem NEXT_PUBLIC_ lub REACT_APP_.

Badacze bezpieczeństwa skanujący GitHub w poszukiwaniu ujawnionych danych uwierzytelniających również nauczyli się inaczej traktować klucze Google API. Wyciek klucza Map Google był odkryciem o niewielkiej wadze. Wyciekły klucz Gemini to zupełnie inna rozmowa.

Co zmieniło się w przypadku Gemini — i dlaczego ma to znaczenie

💡 CZY WIESZ?

Mewayz replaces 8+ business tools in one platform

CRM · Fakturowanie · HR · Projekty · Rezerwacje · eCommerce · POS · Analityka. Darmowy plan dostępny na zawsze.

Zacznij za darmo →

Interfejs API Gemini firmy Google nie jest zgodny ze starym podręcznikiem. Generując klucz API Gemini za pomocą Google AI Studio, tworzysz dane uwierzytelniające o zasadniczo innym profilu ryzyka niż klucz Map czy YouTube. Klucze Gemini uwierzytelniają dostęp do wnioskowania opartego na modelu dużego języka — jest to usługa, która kosztuje Google rzeczywiste zasoby obliczeniowe i za którą płacisz za symbol, a nie za odsłonę strony.

Co ważniejsze, klucze Gemini API nie mają tych samych wbudowanych mechanizmów ograniczania domen, które umożliwiały ujawnienie innych kluczy Google. Nie ma prostej opcji „zablokuj to w domenie mojej witryny”, która uniemożliwiłaby osobie atakującej, która znalazła Twój klucz w publicznym repozytorium, uruchomienie własnej aplikacji i wykorzystanie Twojego limitu — lub limitu rozliczeniowego — z serwera w innym kraju.

Zagrożenie ma nie tylko charakter finansowy. Ujawniony klucz Gemini można wykorzystać do generowania szkodliwych treści, przeprowadzania ataków typu „wstrzykiwanie” lub tworzenia narzędzi naruszających warunki korzystania z usług Google – a wszystko to będzie obciążane Twoim kontem i będzie można powiązać z Twoją tożsamością.

W 2024 r. badacze bezpieczeństwa zidentyfikowali tysiące ujawnionych kluczy API Gemini w samym GitHubie, a wiele z nich znajdowało się w repozytoriach, w których wcześniej bez żadnych incydentów znajdowały się inne klucze API Google. Twórcy nie byli lekkomyślni według własnych standardów historycznych — stosowali model mentalny, którego nauczył ich sam Google. Środowisko zmieniało się szybciej niż nawyki.

Anatomia przypadkowego narażenia

Zrozumienie, w jaki sposób dochodzi do tego narażenia, jest pierwszym krokiem w kierunku zapobiegania im. Tryby awarii to

Frequently Asked Questions

Czym dokładnie zmieniło się w podejściu Google do kluczy API po wprowadzeniu Gemini?

Gemini wprowadziło zasadę "publiczne z założenia" jako formalny wymóg bezpieczeństwa. Oznacza to, że klucze API używane przez klientów po stronie użytkownika (np. w JavaScript) są teraz oficjalnie uznawane za nieforteczne. Google jednoznacznie stwierdza, że takie klucze nie są tajne i nie można ich skutecznie zabezpieczyć przed wyciekiem. To przejście od milczącego przyzwolenia do jasnej polityki zmusza programistów do zaakceptowania tego faktu i zbudowania zabezpieczeń w oparciu o ograniczenia aplikacji, a nie tajność klucza.

Jakie są teraz właściwe metody zabezpieczania kluczy API w aplikacjach klienckich?

Ponieważ kluczy w kodzie klienckim nie da się utrzymać w tajemnicy, kluczowe jest stosowanie rygorystycznych ograniczeń aplikacji w Konsoli Google Cloud. Należy precyzyjnie ograniczyć klucz do konkretnych domen (HTTP) i adresów IP (serwery). Dla wyższego poziomu bezpieczeństwa, wrażliwe operacje należy przenieść za pomocą własnego serwera proxy, który ochroni klucze główne. W takich architekturach pomocne mogą być rozwiązania jak Mewayz, oferujące 207 modułów do budowy zaawansowanych backendów.

Czy mogę nadal używać klucza API Map Google w mojej publicznej aplikacji React?

Tak, nadal jest to możliwe i powszechne. Kluczowa zmiana dotyczy świadomości. Musisz zaakceptować, że ten klucz jest widoczny publicznie i zabezpieczyć się przed jego nadużyciem wyłącznie poprzez ograniczenia aplikacji. Upewnij się, że klucz jest ograniczony do Twojej domeny produkcyjnej i, opcjonalnie, domeny developerskiej. Nigdy nie używaj tego samego, nieograniczonego klucza po stronie serwera, gdzie ma dostęp do wrażliwych danych lub operacji.

Jak mogę zarządzać wieloma kluczami API i ich ograniczeniami bez chaosu?

Dobrą praktyką jest tworzenie oddzielnych kluczy API dla różnych usług (np. Maps, YouTube) i środowisk (development, produkcja). Dzięki temu, w razie naruszenia jednego klucza, możesz go odwołać bez wpływu na inne. Zarządzanie taką konfiguracją jest prostsze z narzędziami do zarządzania projektami. Warto rozważyć usługi takie jak Mewayz (od 19 USD/mies.), które oferują scentralizowane zarządzanie konfiguracją i ułatwiają wdrażanie bezpiecznych praktyk w całej aplikacji.

Wypróbuj Mewayz za Darmo

Kompleksowa platforma dla CRM, fakturowania, projektów, HR i więcej. Karta kredytowa nie jest wymagana.

Zacznij dziś zarządzać swoją firmą mądrzej.

Dołącz do 30,000+ firm. Plan darmowy na zawsze · Bez karty kredytowej.

Uznałeś to za przydatne? Udostępnij to.

Gotowy, aby wprowadzić to w życie?

Dołącz do 30,000+ firm korzystających z Mewayz. Darmowy plan forever — karta kredytowa nie jest wymagana.

Rozpocznij darmowy okres próbny →

Gotowy, by podjąć działanie?

Rozpocznij swój darmowy okres próbny Mewayz dziś

Platforma biznesowa wszystko w jednym. Karta kredytowa nie jest wymagana.

Zacznij za darmo →

14-dniowy darmowy okres próbny · Bez karty kredytowej · Anuluj w dowolnym momencie