GoogleCloudPlatform / cloudsql-proxy
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
- obrazy kontenerów
- zainstaluj ze źródła
- użycie
- przykład gniazda TCP
- przykład gniazda Unix
- przykład prywatnego IP
- poświadczenia
- flagi CLI
- flagi uwierzytelniające
- -credential_file
- -token
- -enable_iam_login
- flagi połączeń
- -instances="project1:region:instance1,project3:region:instance1"
- -fuse
- -instances_metadata=metadata_key
- -max_connections
- dodatkowe flagi
- -ip_address_types=PUBLIC,PRIVATE
- -term_timeout=30s
- -skip_failed_instance_config
- -log_debug_stdout=true
- -structured_logs
- uruchamianie jako Sidecar Kubernetes
- dokumentacja referencyjna
- Osoby Trzecie
- Homebrew
- usługa klastra Kubernetes przy użyciu Helm
- . Net Proxy Wrapper (pakiet Nuget)
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żywaalpine:3
jako obrazu bazowego (obsługiwane tylko od wersji 1.17 w górę) -
$VERSION-buster
– używadebian: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:
- znacznik
-credential_file
- znacznik
-token
- klucz konta usługi w ścieżce przechowywanej w zmiennej środowiskowej
GOOGLE_APPLICATION_CREDENTIALS
. - poświadczenia użytkownika gcloud (ustawione z
gcloud auth login
) - 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.