Nesta página, veja como configurar uma instância para usar SSL/TLS. Saiba mais sobre como o Cloud SQL usa certificados SSL/TLS autogerenciados para se conectar a instâncias do Cloud SQL com segurança.
Visão geral
O Cloud SQL cria um certificado de servidor (server-ca.pem
) automaticamente quando
você cria a instância. Recomendamos que você imponha todas as conexões para usar SSL/TLS.
sslMode
definido como ENCRYPTED_ONLY
.
Para mais informações, consulte a seção Ativar conexões criptografadas com o Database Engine na documentação do SQL Server.
Se você aplicar o SSL em uma instância, ela precisará ser reiniciada. Uma reinicialização também pode ser necessária depois que você alterar os certificados SSL/TLS. Quando uma reinicialização é necessária, o Cloud SQL reinicia a instância automaticamente para você. A reinicialização de uma instância pode gerar inatividade.Aplicar criptografia SSL/TLS
Use a configuração modo SSL para aplicar a criptografia SSL das seguintes maneiras:
Permita conexões SSL/TLS e não SSL/não TLS. Esse é o padrão.
Permitir apenas conexões criptografadas com SSL/TLS.
Se você selecionar Permitir conexões não SSL/não TLS e SSL/TLS para a instância do Cloud SQL, serão aceitas tanto as conexões SSL/TLS quanto as não criptografadas e não seguras. Se você não exigir SSL/TLS para todas as conexões, ainda serão permitidas conexões não criptografadas. Por esse motivo, se você estiver acessando a instância usando um IP público, recomendamos que aplique SSL a todas as conexões.
É possível se conectar diretamente às instâncias usando certificados SSL/TLS ou usando o proxy de autenticação do Cloud SQL ou os conectores do Cloud SQL. Se você se conectar usando o proxy do Cloud SQL Auth ou os conectores do Cloud SQL, as conexões serão criptografadas automaticamente com SSL/TLS. Com o proxy do Cloud SQL Auth e os conectores do Cloud SQL, as identidades de cliente e servidor também são verificadas automaticamente, independentemente da configuração do modo SSL.
A aplicação de SSL garante que todas as conexões sejam criptografadas.Para ativar a solicitação de SSL/TLS, faça o seguinte:
Console
-
No console do Google Cloud, acesse a página Instâncias do Cloud SQL.
- Para abrir a página Visão geral de uma instância, clique no nome da instância.
- Clique em Conexões no menu de navegação do SQL.
- Selecione a guia Segurança.
- Selecione uma destas opções:
- Permitir tráfego de rede não criptografado (não recomendado)
- Permitir somente conexões SSL. Essa opção só permite conexões que usam criptografia SSL/TLS.
gcloud
gcloud sql instances patch INSTANCE_NAME \ --ssl-mode=SSL_ENFORCEMENT_MODE
Substitua SSL_ENFORCEMENT_MODE por uma das seguintes opções:
ALLOW_UNENCRYPTED_AND_ENCRYPTED
permite conexões não SSL/não TLS e SSL/TLS. Esse é o valor padrão.ENCRYPTED_ONLY
só permite conexões criptografadas com SSL/TLS.
Terraform
Para aplicar a criptografia SSL/TLS, use um recurso do Terraform:
Aplique as alterações
Para aplicar a configuração do Terraform em um projeto do Google Cloud, conclua as etapas nas seções a seguir.
Preparar o Cloud Shell
- Inicie o Cloud Shell.
-
Defina o projeto padrão do Google Cloud em que você quer aplicar as configurações do Terraform.
Você só precisa executar esse comando uma vez por projeto, e ele pode ser executado em qualquer diretório.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
As variáveis de ambiente serão substituídas se você definir valores explícitos no arquivo de configuração do Terraform.
Preparar o diretório
Cada arquivo de configuração do Terraform precisa ter o próprio diretório, também chamado de módulo raiz.
-
No Cloud Shell, crie um diretório e um novo
arquivo dentro dele. O nome do arquivo precisa ter a extensão
.tf
, por exemplo,main.tf
. Neste tutorial, o arquivo é chamado demain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se você estiver seguindo um tutorial, poderá copiar o exemplo de código em cada seção ou etapa.
Copie o exemplo de código no
main.tf
recém-criado.Se preferir, copie o código do GitHub. Isso é recomendado quando o snippet do Terraform faz parte de uma solução de ponta a ponta.
- Revise e modifique os parâmetros de amostra para aplicar ao seu ambiente.
- Salve as alterações.
-
Inicialize o Terraform. Você só precisa fazer isso uma vez por diretório.
terraform init
Opcionalmente, para usar a versão mais recente do provedor do Google, inclua a opção
-upgrade
:terraform init -upgrade
Aplique as alterações
-
Revise a configuração e verifique se os recursos que o Terraform vai criar ou
atualizar correspondem às suas expectativas:
terraform plan
Faça as correções necessárias na configuração.
-
Para aplicar a configuração do Terraform, execute o comando a seguir e digite
yes
no prompt:terraform apply
Aguarde até que o Terraform exiba a mensagem "Apply complete!".
- Abra seu projeto do Google Cloud para ver os resultados. No console do Google Cloud, navegue até seus recursos na IU para verificar se foram criados ou atualizados pelo Terraform.
Excluir as alterações
Para excluir as mudanças, faça o seguinte:
- Para desativar a proteção contra exclusão, no arquivo de configuração do Terraform, defina o argumento
deletion_protection
comofalse
.deletion_protection = "false"
- Para aplicar a configuração atualizada do Terraform, execute o comando a seguir e digite
yes
no prompt:terraform apply
-
Remova os recursos aplicados anteriormente com a configuração do Terraform executando o seguinte comando e inserindo
yes
no prompt:terraform destroy
REST v1
-
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do projeto
- SSL_ENFORCEMENT_MODE: Use uma das seguintes opções:
ALLOW_UNENCRYPTED_AND_ENCRYPTED
: permite conexões não SSL/não TLS e SSL/TLS.ENCRYPTED_ONLY
: só permite conexões criptografadas com SSL/TLS.
- INSTANCE_ID: o ID da instância
Método HTTP e URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID
Corpo JSON da solicitação:
{ "settings": { "ipConfiguration": {"sslMode": "SSL_ENFORCEMENT_MODE"} } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
REST v1beta4
-
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do projeto
- SSL_ENFORCEMENT_MODE: Use uma das seguintes opções:
ALLOW_UNENCRYPTED_AND_ENCRYPTED
: permite conexões não SSL/não TLS e SSL/TLS.ENCRYPTED_ONLY
: só permite conexões criptografadas com SSL/TLS.
- INSTANCE_ID: o ID da instância
Método HTTP e URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
Corpo JSON da solicitação:
{ "settings": { "ipConfiguration": {"sslMode": "SSL_ENFORCEMENT_MODE"} } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
Certificados do servidor
O Cloud SQL cria um certificado de servidor automaticamente quando você cria a instância. Desde que o certificado do servidor seja válido, não é necessário gerenciá-lo ativamente. No entanto, o certificado tem uma data de validade de 10 anos. Após essa data, ele não será mais válido, e os clientes não poderão usá-lo para estabelecer uma conexão segura com a instância. Você receberá notificações periódicas avisando que a expiração do certificado do servidor está se aproximando. As notificações são enviadas no número de dias a seguir antes da data de expiração: 90, 30, 10, 2 e 1.
É possível receber informações sobre o certificado do servidor, como quando ele foi criado e quando expira, ou criar um novo manualmente.
Console
-
No console do Google Cloud, acesse a página Instâncias do Cloud SQL.
- Para abrir a página Visão geral de uma instância, clique no nome da instância.
- Clique em Conexões no menu de navegação do SQL.
- Selecione a guia Segurança.
- Acesse a seção Gerenciar certificados do servidor.
Veja a data de validade do certificado do servidor na tabela.
gcloud
- Receba informações sobre o certificado de serviço:
gcloud beta sql ssl server-ca-certs list \ --instance=INSTANCE_NAME
- Crie um certificado do servidor:
gcloud beta sql ssl server-ca-certs create \ --instance=INSTANCE_NAME
- Faça o download das informações do certificado para um arquivo PEM local:
gcloud beta sql ssl server-ca-certs list \ --format="value(cert)" \ --instance=INSTANCE_NAME > \ FILE_PATH/FILE_NAME.pem
- Atualize todos os clientes para usar as novas informações. Basta
copiar o arquivo transferido para as máquinas host do cliente, substituindo os
arquivos
server-ca.pem
.
Terraform
Para fornecer informações de certificado de servidor como saída, use uma fonte de dados do Terraform:
- Adicione o seguinte ao seu arquivo de configuração do Terraform:
data "google_sql_ca_certs" "ca_certs" { instance = google_sql_database_instance.default.name } locals { furthest_expiration_time = reverse(sort([for k, v in data.google_sql_ca_certs.ca_certs.certs : v.expiration_time]))[0] latest_ca_cert = [for v in data.google_sql_ca_certs.ca_certs.certs : v.cert if v.expiration_time == local.furthest_expiration_time] } output "db_latest_ca_cert" { description = "Latest CA certificate used by the primary database server" value = local.latest_ca_cert sensitive = true }
- Para criar o arquivo
server-ca.pem
, execute o seguinte comando:terraform output db_latest_ca_cert > server-ca.pem
Usar conexões criptografadas
Saiba mais sobre como o SQL Server usa conexões criptografadas.
A seguir
- Gerencie o SSL/TLS na instância do Cloud SQL.
- Saiba mais sobre como a criptografia é gerenciada no Google Cloud.