GoogleCloudPlatform / cloudsql-proxy

CIgo Reference

Cloud SQL Auth proxy to plik binarny, który zapewnia autoryzację i szyfrowanie na podstawie IAM podczas łączenia się z instancją Cloud SQL.

więcej informacji o połączeniu z instancją Cloud SQL lub o stronie o proxy, aby uzyskać szczegółowe informacje na temat działania serwera Proxy Cloud SQL.

Uwaga: Serwer Proxy nie może udostępnić ścieżki sieciowej do instancji Cloud SQL, jeśli oneis nie jest jeszcze obecny (np. serwer proxy nie może uzyskać dostępu do VPC, jeśli nie ma już do niego dostępu).

instalacja

dla 64-bitowego Linuksa, Uruchom:

wget https://storage.googleapis.com/cloudsql-proxy/v1.19.2/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxychmod +x cloud_sql_proxy

Wydania dla dodatkowych systemów operacyjnych i architektur i można je znaleźć na stronie Wydania.

alternatywne dystrybucje znajdują się poniżej w sekcji strony trzecie.

obrazy kontenerów

dostępne są kontenerowe wersje serwera proxy z następujących repozytoriów Cloud Container Registry:

  • gcr.io/cloudsql-docker/gce-proxy
  • us.gcr.io/cloudsql-docker/gce-proxy
  • eu.gcr.io/cloudsql-docker/gce-proxy
  • asia.gcr.io/cloudsql-docker/gce-proxy

każdy obraz jest oznaczony skojarzoną wersją proxy. Następujące tagi są obecnie obsługiwane:

  • $VERSION – domyślny obraz (zalecane)
  • $VERSION-alpine – używa alpine:3 jako obrazu bazowego (obsługiwane tylko od wersji 1.17 w górę)
  • $VERSION-buster – używa debian:buster jako obrazu bazowego (obsługiwane tylko od wersji 1.17 w górę)

zalecamy używanie najnowszej wersji serwera proxy i regularną aktualizację wersji. Jednak zalecamy również przypinanie do określonego tagu i unikanie ostatniego tagu. Uwaga: oznaczona wersja jest tylko wersją serwera proxy. Zmiany w obrazach bazowych mogą spowodować przerwanie określonych ustawień, nawet w przypadku innych niż główne przyrostów wersji. W związku z tym najlepszą praktyką jest testowanie zmian przed wdrożeniem i używanie automatedrollbacks do przywracania potencjalnych awarii.

zainstaluj ze źródła

aby zainstalować ze źródła, upewnij się, że masz zainstalowaną najnowszą wersję Goinstalled.

wtedy po prostu uruchom:

go get github.com/GoogleCloudPlatform/cloudsql-proxy/cmd/cloud_sql_proxy

cloud_sql_proxy zostanie umieszczony w $GOPATH/bin po zakończeniu go get.

użycie

wszystkie poniższe wywołania zakładają poprawne poświadczenia. Wszystkie poniższe przykłady odwołują się do INSTANCE_CONNECTION_NAME, która przyjmuje postać: myproject:myregion:myinstance. Aby znaleźćINSTANCE_CONNECTION_NAME, Uruchom gcloud sql instances describe <INSTANCE_NAME>, gdzie INSTANCE_NAME to nazwa instancji bazy danych.

przykład gniazda TCP

# Starts the proxy listening on 127.0.0.1:5432cloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:5432
# Starts the proxy listening on on port 5432 on *all* interfacescloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:0.0.0.0:5432

przykład gniazda Unix

# The proxy will mount a Unix domain socket at /cloudsql/<INSTANCE_CONNECTION_NAME># Note: The directory specified by `-dir` must exist.cloud_sql_proxy -dir=/cloudsql -instances=<INSTANCE_CONNECTION_NAME>

przykład prywatnego IP

cloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:5432 -ip_address_types=PRIVATE

aby połączyć się za pomocą prywatnego IP, musisz mieć dostęp za pośrednictwem VPC twojego projektu. Aby uzyskać więcej informacji, zobacz Wymagania dotyczące prywatnego adresu IP.

poświadczenia

Cloud SQL proxy używa konta Cloud iam do autoryzowania połączeń z instancją ACLOUD SQL. Pełnomocnik pozyskuje dane uwierzytelniające dla tych kont w następującej kolejności:

  1. znacznik -credential_file
  2. znacznik -token
  3. klucz konta usługi w ścieżce przechowywanej w zmiennej środowiskowejGOOGLE_APPLICATION_CREDENTIALS.
  4. poświadczenia użytkownika gcloud (ustawione z gcloud auth login)
  5. domyślne poświadczenia aplikacji

Uwaga: każde konto łączące się z bazą danych SQL w chmurze będzie wymagało jednej z następujących ról IAM:

  • Cloud SQL Client (preferowany)
  • Cloud SQL Editor
  • Cloud SQL Admin

lub można ręcznie przypisać następujące uprawnienia IAM:

  • cloudsql.instances.connect
  • cloudsql.instances.get

Zobacz role i uprawnienia w Cloud SQL, aby uzyskać szczegółowe informacje.

gdy serwer proxy uwierzytelnia się pod domyślnym kontem serviceaccount maszyny Wirtualnej silnika obliczeniowego, maszyna musi mieć co najmniej zakres APIsqlservice.admin (tj.” https://www.googleapis.com/auth/sqlservice.admin”), a powiązany projekt musi mieć włączone API administratora SQL. Domyślne konto usługi musi mieć również najmniej uprawnień autora lub redaktora do wszelkich projektów docelowych wystąpień SQL.

flagi CLI

Cloud SQL AUTH proxy wymaga kilku argumentów, aby skonfigurować instancje connectto i zachowanie połączenia. Aby uzyskać pełną listę flag obsługiwanych przez serwer proxy, użyj cloud_sql_proxy -help.

flagi uwierzytelniające

-credential_file

Określa ścieżkę do klucza konta usługi JSON używanego przez proxy do autoryzacji lub uwierzytelniania połączeń.

-token

po ustawieniu serwer proxy używa tego tokena na okaziciela do autoryzacji.

-enable_iam_login

włącza proxy do korzystania z uwierzytelniania bazy danych Cloud SQL IAM. Spowoduje to, że proxy użyje poświadczeń konta IAM do uwierzytelniania użytkownika bazy danych. Fordetails, patrz przegląd uwierzytelniania bazy danych Cloud SQL iam

flagi połączeń

-instances="project1:region:instance1,project3:region:instance1"

oddzielona przecinkami lista instancji do otwarcia wewnątrz -dir. Obsługuje również wyeksponowanie portu TCP i zmianę nazwy domyślnych gniazd domeny Unixowej; zobacz przykłady poniżej. Ta sama lista może być dostarczona poprzez zmienną środowiskową INSTANCES, w przypadku gdy obie są dostarczane-proxy użyje flagi wiersza poleceń.

przykład

używanie gniazd TCP:

./cloud_sql_proxy -instances=my-project:us-central1:sql-inst=tcp:3306 &mysql -u root -h 127.0.0.1

Korzystanie z gniazd Unix:

./cloud_sql_proxy -dir=/cloudsql -instances=my-project:us-central1:sql-inst &mysql -u root -S /cloudsql/my-project:us-central1:sql-inst

aby określić niestandardową nazwę gniazda Unix:

./cloud_sql_proxy -dir=/cloudsql \ -instances=my-project:us-central1:sql-inst=unix:custom_socket_name &mysql -u root -S /cloudsql/custom_socket_name

aby określić niestandardową lokalizację gniazda Unix (przesłania -dir):

./cloud_sql_proxy -dir=/cloudsql \ -instances=my-project:us-central1:sql-inst=unix:/my/custom/sql-socket &mysql -u root -S /my/custom/sql-socket

-fuse

wymaga dostępu do /dev/fuse, jak również do pliku binarnego fusermount. Opcjonalna flaga-fuse_tmp może określać, gdzie mają być umieszczane pliki tymczasowe. Directoryindicated by -dir is mounted.

przykład

używając -fuse, nie musisz określać nazw instancji z wyprzedzeniem:

./cloud_sql_proxy -dir=/cloudsql -fuse &mysql -u root -S /cloudsql/my-project:us-central1:sql-inst

-instances_metadata=metadata_key

użyteczny tylko na GCE. Dany klucz metadanych GCE zostanie pobrany dla listy instancji do otwarcia w -dir. Klucz metadanych to relativefrom computeMetadata/v1/. Format wartości jest taki sam jak flaga’ okoliczności’. Używana jest strategia wisząca-poll, co oznacza, że zmiany wartości themetadata będą odzwierciedlone w -dir nawet podczas działania proxy.Gdy instancja zostanie usunięta z listy, odpowiednie gniazdo zostanie usunięte również z -dir(chyba że zostało również określone w -instances), ale wszystkie istniejące połączenia do tej instancji nie zostaną zakończone.

przykład

./cloud_sql_proxy -dir=/cloudsql \ -instances_metadata instance/attributes/<custom-metadata-key> &mysql -u root -S /cloudsql/my-project:us-central1:sql-inst

Uwaga: -instances i -instances_metadata mogą być używane w tym samym czasie, ale nie są kompatybilne z flagą -fuse.

-max_connections

Maksymalna liczba połączeń, które należy ustanowić przed odrzuceniem newconnections. Domyślnie 0 (bez limitu).

dodatkowe flagi

-ip_address_types=PUBLIC,PRIVATE

rozdzielana przecinkami lista preferowanych typów adresów IP do łączenia się z instancją. Na przykład ustawienie tej opcji na prywatny zmusi serwer proxy do nawiązania połączenia z instancjami przy użyciu powiązanego prywatnego adresu IP instancji. Domyślnie do PUBLIC,PRIVATE

-term_timeout=30s

jak długo czekać na zamknięcie połączeń przed zamknięciem serwera proxy.Domyślnie 0.

-skip_failed_instance_config

ustawienie tej flagi uniemożliwi zakończenie serwera proxy w przypadku wystąpienia błędów podczas konfiguracji instancji. Należy pamiętać, że oznacza to, że niektóre instancje mayfail należy poprawnie skonfigurować, podczas gdy inne mogą działać po ponownym uruchomieniu serwera proxy.

-log_debug_stdout=true

służy to do logowania wyjścia bez błędów do wyjścia standardowego zamiast błędu standardowego. Na przykład, jeśli nie chcesz, aby wiadomości związane z połączeniem były rejestrowane jako błędy, ustaw tę flagę na true. Domyślnie false.

-structured_logs

zapisuje wszystkie wyjścia logowania jako JSON za pomocą następujących klawiszy: level, ts,caller, msg. Na przykład komunikat startowy wygląda następująco:

{"level":"info","ts":1616014011.8132386,"caller":"cloud_sql_proxy/cloud_sql_proxy.go:510","msg":"Usinggcloud's active project: "}

uruchamianie jako Sidecar Kubernetes

zobacz przykład tutaj, a także łączenie z silnika Google Kubernetes.

dokumentacja referencyjna

  • dokumentacja Cloud SQL Auth proxy
  • szybkie starty Cloud SQL Auth Proxy
  • próbki kodu Cloud SQL
  • dokumentacja pakietu Cloud SQL Auth proxy

zapraszam. Szczegółowe informacje na ten temat można znaleźć w dokumencie.

proszę zauważyć, że ten projekt jest wydany z kodem współtwórcy Conduct.By uczestnicząc w tym projekcie zgadzasz się przestrzegać jego warunków. Zobacz Kodeks Postępowania contributor, aby uzyskać więcej informacji.

Osoby Trzecie

Ostrzeżenie: te dystrybucje nie są oficjalnie obsługiwane przez Google.

Homebrew

tutaj znajduje się formuła Homebrew dla Cloud SQL Auth proxy.

usługa klastra Kubernetes przy użyciu Helm

postępuj zgodnie z tymi instrukcjami.

ten wykres tworzy wdrożenie i usługę, ale zalecamy wdrożenie proxy jako kontenera bocznego w podach.

. Net Proxy Wrapper (pakiet Nuget)

zainstaluj przez Nuget, postępuj zgodnie z instrukcjami.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.