Łączenie z Cloud SQL: publiczny adres IP i autoryzowane sieci

1. Wprowadzenie

Ostatnia aktualizacja: 4.05.2020

Z myślą o połączeniu

Jest wiele rodzajów aplikacji i platform. W tym ćwiczeniu w programowaniu omówimy łączenie się z Cloud SQL z dowolnego miejsca. Możliwość nawiązywania połączeń jest włączana przez jawną autoryzację adresów IP, z którymi można się łączyć. Jest to prawdopodobnie najmniej bezpieczna opcja łączenia z bazą danych Cloud SQL, ale jest też najłatwiejsza w konfiguracji i rozpoczęciu korzystania z niej.

Czasami jest to konieczne w środowisku produkcyjnym, ale jeśli możesz tego uniknąć, wybierz bezpieczniejszą alternatywę (np. serwer proxy Cloud SQL). Ta konfiguracja najlepiej sprawdza się w przypadku programowania i testowania.

Co utworzysz

To ćwiczenie z programowania jest bardzo minimalistyczne. Chodzi o to, aby przez cały proces przebiegać przez nakrętki i śrubki mocujące, nie zastanawiając się nad samą aplikacją. W idealnym świecie łączenie się z Cloud SQL przebiega tak samo jak łączenie się z inną instancją bazy danych SQL, więc powinno być możliwe przełączenie tego, co tworzysz z tego ćwiczenia, i zastosowanie go w dowolnej aplikacji produkcyjnej.

Będą one zawierać przewodnik po czynnościach w konsoli GCP, a także odpowiedniki poleceń gcloud do używania w interfejsie wiersza poleceń lub automatyzacji.

Poszczególne kroki:

  • Utwórz instancję Cloud SQL (ten samouczek korzysta z Postgres, ale działa podobnie dla MySQL lub SQL Server) i autoryzuj konkretne adresy IP, które mogą się z nią łączyć

Czego potrzebujesz

  • konto GCP, na którym masz uprawnienia do włączania interfejsów API i tworzenia usług;
  • Klient Postgres zainstalowany w celu weryfikacji połączenia (lub klient MySQL, jeśli chcesz używać MySQL zamiast Postgres)

2. Tworzenie instancji Cloud SQL

Cloud SQL to nasza oferta zarządzanych relacyjnych baz danych. Obsługuje MySQL, PostgreSQL i SQL Server. W ramach tego ćwiczenia w programie utworzymy bazę danych Postgres, ale instrukcje są podobne we wszystkich 3 przypadkach.

W konsoli

Otwórz stronę Cloud SQL i kliknij przycisk 241836b315e11bf5.png.

Jak już wspomnieliśmy, większość tych ćwiczeń w Codelabs ma charakter ogólny i dotyczy każdego rodzaju języka SQL, ale na potrzeby tego ćwiczenia z programowania wybierz PostgreSQL.

  1. Nadaj instancji identyfikator
  2. Wybierz region w pobliżu
  3. Wpisz hasło domyślnego użytkownika (nazwa użytkownika będzie domyślna dla wybranej bazy danych, np. root dla MySQL lub postgres dla PostgreSQL)
  4. Przewiń w dół i kliknij show configuration options
  5. Rozwiń sekcję Connectivity
  6. Upewnij się, że pole Public IP jest zaznaczone, a pole Private IP nie jest zaznaczone.
  7. Kliknij przycisk 883b32ec2734de01.png
  8. Uzyskaj adres IP miejsca, z którego się łączysz. Najłatwiej jest wyszukać w Google hasło „Jaki jest mój adres IP”. a w wynikach wyszukiwania będzie widoczny Twój publiczny adres IP.
  1. Wpisz specyfikację adresu IP w polu sieci, nadaj jej nazwę i w polu New Network kliknij Gotowe.
  2. Przewiń w dół i kliknij Utwórz

Zwykle uruchamianie instancji trwa kilka minut.

Gdy instancja zostanie utworzona, kliknij ją na liście, a na stronie przeglądu pod nagłówkiem Connect to this instance skopiuj public IP address. Nie będzie go tam, dopóki instancja nie zostanie w pełni utworzona, chociaż możesz kliknąć szczegóły przed jej utworzeniem.

Korzystanie z gcloud

Najpierw musisz uzyskać adres IP, który chcesz autoryzować na potrzeby połączenia z instancją Cloud SQL. Najłatwiej to zrobić, otwierając przeglądarkę i wyszukując „Jaki jest mój adres IP?”. a wyniki wyszukiwania zawierają Twój widoczny publicznie adres IP. Jeśli jednak nie możesz otworzyć przeglądarki, z której chcesz to zrobić, możesz skorzystać z narzędzia, takiego jak dig.

dig @resolver1.opendns.com ANY myip.opendns.com +short -4

Musisz określić dla instancji Cloud SQL region najbliżej miejsca, w którym się znajdujesz. Możesz wyświetlić listę regionów, uruchamiając polecenie:

gcloud sql tiers list

Każdy poziom jest dostępny tylko w określonych regionach. W części samouczka dotyczącej gcloud tworzymy mikroinstancję, więc dostępne regiony dla tego poziomu można znaleźć, uruchamiając konkretne polecenie (o ile masz zainstalowany grep):

gcloud sql tiers list | grep db-f1-micro

Polecenie do utworzenia instancji wygląda tak (nie zapomnij zastąpić ciągu <AUTHORIZED_IP> adresem IP otrzymanym z przeglądarki lub kodu pocztowego, a fragmentu <REGION> należy zastąpić adresem, który znajduje się blisko Ciebie, i hasłem roota „postgres”):

gcloud sql instances create sql-codelab-00 --database-version=POSTGRES_11 --tier=db-f1-micro --region=<REGION> --authorized-networks=<AUTHORIZED_IP> --root-password=<PASSWORD>

Potrwa to kilka minut.

Po zakończeniu w danych wyjściowych interfejsu wiersza poleceń będzie widoczny identyfikator PRIMARY_ADDRESS instancji. Skopiuj go do następnego kroku.

3. Testowanie połączenia i kończenia

Aby sprawdzić, czy instancja została prawidłowo skonfigurowana, uruchom wiersz poleceń z poziomu wpisanego adresu IP komputera:

psql "host=<adres IP skopiowany z poprzedniego kroku> port=5432 sslmode=disable user=postgres"

Następnie podaj domyślne hasło użytkownika skonfigurowane podczas tworzenia instancji Cloud SQL.

Gratulacje! Jeśli wszystko pójdzie dobrze, powinien pojawić się prompt Postgres i umożliwić uruchamianie poleceń na podstawie bazy danych.

Co dalej?

Zapoznaj się z tymi ćwiczeniami z programowania...

Dokumentacja