GoogleCloudPlatform / cloudsql-proxy
Nuvem SQL Autenticação de proxy é um binário que fornece IAM-basedauthorization e criptografia quando ligar a uma Nuvem de instância de SQL.
veja a Página de Visão Geral da ligação para mais informações sobre a ligação a uma instância de SQL na nuvem, ou a página sobre o proxy para detalhes sobre como o proxy de SQL na nuvem funciona.
Nota: O Proxy não pode fornecer um caminho de rede para uma instância SQL na nuvem se o One já não estiver presente (por exemplo, o proxy não pode acessar um VPC se ele ainda não tiver acesso a ele).
- instalação
- Container Images
- instale a partir do Código
- Utilização
- socket de TCP exemplo
- socket Unix exemplo
- IP Privado exemplo
- Credencies
- CLI Flags
- Parâmetros de autenticação
- -credential_file
- -token
- -enable_iam_login
- Connection Flags
- -instances="project1:region:instance1,project3:region:instance1"
- -fuse
- -instances_metadata=metadata_key
- -max_connections
- bandeiras adicionais
- -ip_address_types=PUBLIC,PRIVATE
- -term_timeout=30s
- -skip_failed_instance_config
- -log_debug_stdout=true
- -structured_logs
- Running as a Kubernetes Sidecar
- Documentação de Referência
- Contribuindo
- terceiros
- Homebrew
- Kubernetes Cluster Service using Helm
- . Net Proxy Wrapper (pacote Nuget)
instalação
para Linux de 64 bits, executar:
wget https://storage.googleapis.com/cloudsql-proxy/v1.19.2/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxychmod +x cloud_sql_proxy
Releases para sistemas operacionais e arquiteturas adicionais e ser encontrado no releasespage.
para distribuições alternativas, Ver abaixo sob terceiros.
Container Images
There are containerized versions of the proxy available from the follinggoogle Cloud Container Registry repositories:
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
Cada imagem é identificada com o proxy associados versão. Seguintes tags (etiquetas) arecurrently suportados:
-
$VERSION
– imagem padrão (recomendado) -
$VERSION-alpine
– utilizaalpine:3
como uma imagem de base (suporte somente a partir de v1.17) -
$VERSION-buster
– utilizadebian:buster
como uma imagem de base (suporte somente a partir de v1.17)
recomendamos utilizar a versão mais recente do proxy e atualizar o versionregularly. No entanto, também recomendamos a marcação específica e evitar a marca mais recente. Nota: a versão marcada é apenas a do proxy. As alterações nas imagens de base podem quebrar configurações específicas, mesmo com incrementos de versão não-major. Como tal, é uma boa prática para testar mudanças antes da implantação, e usar automatedrollbacks para reverter potenciais falhas.
instale a partir do Código
para instalar a partir do Código, certifique-se de que tem a última versão do Goinstalled.
então, simplesmente executar:
go get github.com/GoogleCloudPlatform/cloudsql-proxy/cmd/cloud_sql_proxy
o cloud_sql_proxy
será colocado em $GOPATH/bin
após go get
completar.
Utilização
todas as seguintes invocações assumem credenciais válidas estão presentes no ambiente. Os exemplos seguintes referem-se a an INSTANCE_CONNECTION_NAME
,que assume a forma: myproject:myregion:myinstance
. Para encontrar oINSTANCE_CONNECTION_NAME
, execute gcloud sql instances describe <INSTANCE_NAME>
onde INSTANCE_NAME
é o nome da instância de banco de dados.
socket de TCP exemplo
# 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
socket Unix exemplo
# 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>
IP Privado exemplo
cloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:5432 -ip_address_types=PRIVATE
para conectar-se usando o IP Privado, você deve ter acesso através de seuprojeto do VPC. Para mais detalhes, consulte os requisitos de IP privados.
Credencies
The Cloud SQL proxy uses a Cloud IAM account to authorize connections against aCloud SQL instance. O proxy obtém as credenciais para estas contas na seguinte ordem:
- the
-credential_file
flag - the
-token
flag - the service account key at the path stored in the
GOOGLE_APPLICATION_CREDENTIALS
environment variable. - as credenciais de utilizador gcloud (definidas a partir de
gcloud auth login
) - as credenciais predefinidas da aplicação
Nota: qualquer conta que se ligue a uma base de dados SQL na nuvem necessitará de uma das seguintes funções do IAM::
- Nuvem de Cliente SQL (preferencial)
- Nuvem Editor de SQL
- Nuvem de Administração de SQL
Ou pode-se atribuir manualmente o seguinte IAM permissões:
cloudsql.instances.connect
cloudsql.instances.get
Consulte Papéis e Permissões em Nuvem SQL para obter detalhes.
quando o proxy autentica sob a conta de Serviço padrão do motor de cálculo VM, o VM deve ter pelo menos o escopo da API sqlservice.admin
(i.e.,”https://www.googleapis.com/auth/sqlservice.admin”) e o projectM deve ter a API de Administração SQL ativada. A conta de Serviço padrão também deve ter menos privilégios de escritor ou editor para quaisquer projetos de instâncias SQL alvo.
CLI Flags
The Cloud SQL Auth proxy takes a few arguments to configure what instances to connectto and connection behavior. Para uma lista completa de opções suportadas pelo proxy,use cloud_sql_proxy -help
.
Parâmetros de autenticação
-credential_file
indica o caminho para uma chave de conta de serviço JSON que os proxyuses autorizem ou autentiquem conexões.
-token
quando configurado, o ‘proxy’ usa este símbolo ao portador para a autorização.
-enable_iam_login
activa o ‘proxy’ a usar a autenticação da base de dados SQL IAM na nuvem. Isto fará com que o proxy use as credenciais da conta IAM para autenticação de usuário de banco de dados. Fordetails, see Overview of Cloud SQL IAM database authentication
Connection Flags
-instances="project1:region:instance1,project3:region:instance1"
uma lista de instâncias separadas por vírgulas a abrir dentro de -dir
. Também supportsexposing a TCP port and renaming the default Unix Domain Sockets; see examples below. A mesma lista pode ser fornecida através de INSTANCES environment variable, em caso em que ambos são fornecidos-proxy irá usar a bandeira da linha de comandos.
Exemplo
Usando sockets TCP:
./cloud_sql_proxy -instances=my-project:us-central1:sql-inst=tcp:3306 &mysql -u root -h 127.0.0.1
Usando sockets Unix:
./cloud_sql_proxy -dir=/cloudsql -instances=my-project:us-central1:sql-inst &mysql -u root -S /cloudsql/my-project:us-central1:sql-inst
Para especificar um costume Unix socket nome:
./cloud_sql_proxy -dir=/cloudsql \ -instances=my-project:us-central1:sql-inst=unix:custom_socket_name &mysql -u root -S /cloudsql/custom_socket_name
Para especificar um local personalizado para um socket Unix (substitui -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
Requer o acesso a /dev/fuse
assim como fusermount
binário. Uma bandeira opcional-fuse_tmp
pode especificar onde colocar arquivos temporários. A direcção indicada por -dir
está montada.
exemplo
usando -fuse
, você não precisa especificar nomes de instância antes do tempo:
./cloud_sql_proxy -dir=/cloudsql -fuse &mysql -u root -S /cloudsql/my-project:us-central1:sql-inst
-instances_metadata=metadata_key
utilizável apenas na GCE. A chave de meta-dados GCE given será compilada para uma lista de instâncias a abrir em -dir
. A chave dos metadados é relativa a partir de computeMetadata/v1/
. O formato para o valor é o mesmo que a opção “substâncias”. Uma estratégia de pesquisa por enforcamento é usada, o que significa que as mudanças no valor de themetadata serão refletidas no -dir
mesmo enquanto o proxy estiver em execução.Quando uma instância é removida da lista, o soquete correspondente também será removido de -dir
(a menos que também tenha sido especificado em -instances
), mas nenhuma conexão existente a esta instância será terminada.
exemplo
./cloud_sql_proxy -dir=/cloudsql \ -instances_metadata instance/attributes/<custom-metadata-key> &mysql -u root -S /cloudsql/my-project:us-central1:sql-inst
Nota: -instances
e -instances_metadata
podem ser utilizados ao mesmo tempo, mas não são compatíveis com a bandeira -fuse
.
-max_connections
se previsto, o número máximo de ligações a estabelecer antes de recusar novas ligações. O valor por omissão é 0 (sem limite).
bandeiras adicionais
-ip_address_types=PUBLIC,PRIVATE
uma lista delimitada por vírgulas dos tipos de IP preferidos para se ligar a uma instância. Por exemplo, configurar isto como PRIVATE forçará o proxy a ligar-se a instances usando o IP privado associado a uma instância. Predefinições para PUBLIC,PRIVATE
-term_timeout=30s
quanto tempo para esperar que as ligações fechem antes de desligar o proxy.O valor por omissão é 0.
-skip_failed_instance_config
a configuração desta opção irá impedir que o ‘proxy’ termine se ocorrerem quaisquer erros durante a configuração da instância. Por favor, note que isto significa que algumas instâncias podem não ser configuradas corretamente enquanto outras podem funcionar se o proxy reiniciar.
-log_debug_stdout=true
isto é para registrar a saída de não-erro para o standard out em vez de erro padrão. Por exemplo, se não quiser que as mensagens relacionadas com a ligação se registem como erros, configure esta opção como verdadeira. O padrão é false.
-structured_logs
grava toda a saída de registo como JSON com as seguintes teclas: level, ts, chamador,msg. Por exemplo, a mensagem inicial parece:
{"level":"info","ts":1616014011.8132386,"caller":"cloud_sql_proxy/cloud_sql_proxy.go:510","msg":"Usinggcloud's active project: "}
Running as a Kubernetes Sidecar
See the example here as well as Connecting from GoogleKubernetes Engine.
Documentação de Referência
- Nuvem SQL
- Nuvem SQL Auth Documentação do proxy
- Nuvem SQL Autenticação de proxy Quickstarts
- Nuvem SQL Exemplos de Código
- Nuvem SQL Autenticação de proxy Documentação do Pacote
Contribuindo
Contribuições são bem-vindas. Por favor, consulte o documento contributivo para mais detalhes.
por favor, note que este projecto é lançado com um código de Conduct.By participar neste projecto você concorda em cumprir os seus termos. Código de conduta do SeeContributor para mais informações.
terceiros
aviso: estas distribuições não são oficialmente suportadas pelo Google.
Homebrew
existe aqui a fórmula Homebrew para o proxy da nuvem SQL Auth.
Kubernetes Cluster Service using Helm
Follow these instructions.
este gráfico cria uma implantação e um serviço, mas recomendamos a implantação da Proxy como um contêiner sidecar em suas cápsulas.
. Net Proxy Wrapper (pacote Nuget)
Install via Nuget, follow theseinstructions.