Autorizar com certificados SSL/TLS

Nesta página, descrevemos como usar a Secure Socket Layer (SSL), agora Transport Layer Security (TLS), no seu aplicativo para criptografar conexões com instâncias do Cloud SQL.

Visão geral

O Cloud SQL aceita conexão a uma instância usando o protocolo SSL/TLS. As conexões SSL/TLS oferecem uma camada de segurança criptografando dados em trânsito entre o cliente e o banco de dados na instância do Cloud SQL. Opcionalmente, sua conexão SSL/TLS pode realizar a verificação de identidade do servidor validando o certificado do servidor instalado na instância do Cloud SQL e a verificação de identidade do cliente validando o certificado do cliente instalado no cliente.

Certificados do servidor

Quando você cria uma instância, o Cloud SQL cria e instala automaticamente um certificado de servidor assinado por uma autoridade certificadora (CA). É possível fazer o download do certificado da AC na máquina host do cliente e usá-lo para verificar a identidade da AC e do servidor do Cloud SQL. Opcionalmente, você pode escolher o tipo de AC que o Cloud SQL usa para assinar o certificado do servidor.

Hierarquias de autoridades certificadoras (AC)

Esta seção descreve os três tipos de autoridades certificadoras (CA) do servidor que você pode escolher para suas instâncias do Cloud SQL. Você tem três opções:

  • AC por instância: com essa opção, uma AC interna dedicada a cada instância do Cloud SQL assina o certificado do servidor para essa instância. O Cloud SQL cria e gerencia essas ACs. Para escolher a AC por instância, especifique GOOGLE_MANAGED_INTERNAL_CA para a configuração serverCaMode (API Cloud SQL Admin) ou a flag --server-ca-mode (gcloud CLI) ao criar a instância. Se você deixar a configuração ou a flag sem especificação ao criar uma instância, essa opção será o valor padrão da instância.
  • AC compartilhada: com essa opção, é usada uma hierarquia de ACs que consiste em uma AC raiz e ACs de servidor subordinadas. As ACs de servidor subordinadas em uma região assinam os certificados do servidor e são compartilhadas entre as instâncias da região. O Cloud SQL hospeda e gerencia a AC raiz e as ACs de servidores subordinadas no Google Cloud Certificate Authority Service (serviço de AC). O Cloud SQL também processa a alternância de ACs raiz e ACs de servidores subordinados e disponibiliza links disponíveis publicamente para os pacotes de certificados de AC para download. Para escolher uma AC compartilhada, especifique GOOGLE_MANAGED_CAS_CA para a configuração serverCaMode (API Cloud SQL Admin) ou a flag --server-ca-mode (gcloud CLI) ao criar a instância.

    A opção de AC compartilhada está em Visualização.

  • AC gerenciada pelo cliente: com essa opção, você cria e gerencia sua própria hierarquia de ACs. Escolha essa opção se você quiser gerenciar suas próprias ACs e certificados. Para escolher a AC compartilhada, é necessário criar um pool de ACs e uma AC no serviço de AC. No Cloud SQL, especifique o pool de AC e CUSTOMER_MANAGED_CAS_CA para a configuração serverCaMode (API Cloud SQL Admin) ou o flag --server-ca-mode (gcloud CLI) ao criar a instância.

    A opção de AC gerenciada pelo cliente está em Pré-lançamento.

Depois de criar uma instância, é possível conferir qual hierarquia de AC está configurada para uma instância do Cloud SQL usando o comando gcloud sql instances describe. Para mais informações, consulte Acessar informações da instância.

A tabela a seguir compara as três opções de hierarquia de ACs.

Recurso AC por instância AC compartilhada AC gerenciada pelo cliente
Estrutura de AC Autoridade certificadora separada para cada instância CA raiz e CAs subordinadas compartilhadas entre instâncias na mesma região Hierarquia de ACs que você cria e gerencia
Atributos criptográficos Chave RSA de 2048 bits com algoritmo SHA256 Algoritmo de assinatura digital de curva elíptica (ECDSA) com chave de 256 bits e algoritmo SHA384 Algoritmo de assinatura digital de curva elíptica (ECDSA) com chave de 256 bits e algoritmo SHA384
Período de validade do certificado digital 10 anos 25 anos para a AC raiz e 10 anos para as ACs subordinadas Configurável *
Período de validade do certificado do servidor 10 anos 1 ano 1 ano**
Rotação de AC iniciada pelo usuário? Sim Não. A rotação de CA é gerenciada pelo Cloud SQL. Sim
Rotação de certificado do servidor iniciada pelo usuário? Sim Sim Sim
Âncora de confiança da AC para conexões TLS A AC exclusiva por instância é a âncora de confiança da instância correspondente. A AC raiz e as ACs subordinadas são as âncoras de confiança de todas as instâncias em uma determinada região. As ACs que você cria e gerencia são as âncoras de confiança.
Verificação de identidade do servidor A verificação da AC verifica a identidade do servidor, já que cada instância tem uma AC exclusiva. A verificação do nome do host e da AC é necessária para a verificação de identidade do servidor, já que as ACs do servidor são compartilhadas entre instâncias. Embora a AC não possa ser compartilhada entre instâncias, é recomendável verificar o nome do host junto com a AC.
Campo "Nome alternativo do assunto" (SAN, na sigla em inglês) em certificados de servidor O campo SAN contém o nome do host (nome DNS da instância) apenas para instâncias ativadas com o Private Service Connect. O nome do host pode ser usado para verificação de identidade do servidor. Se você estiver se conectando a uma instância do Cloud SQL usando o nome DNS como nome de host, será necessário configurar a resolução de DNS. O campo SAN contém o nome do host (nome DNS da instância) para todos os tipos de instâncias. O nome do host pode ser usado para a verificação de identidade do servidor. Se você estiver se conectando a uma instância do Cloud SQL usando o nome DNS como nome de host, será necessário configurar a resolução de DNS. O campo SAN contém o nome do host (nome DNS da instância) para todos os tipos de instâncias. O nome do host pode ser usado para a verificação de identidade do servidor.

* Para a opção de AC gerenciada pelo cliente, o período de validade padrão de um certificado de AC no serviço de AC é de 10 anos. Você tem a opção de configurar um período de validade diferente para seus certificados de AC. Um período de validade mais curto para a AC pode exigir rotações mais frequentes e um período de validade menor que um ano pode afetar o período de validade dos certificados do servidor. Para mais informações, consulte Gerenciar a rotação de ACs.

** Para a opção de AC gerenciada pelo cliente, o período de validade padrão de um certificado do servidor é de um ano. No entanto, se você configurar um período de validade menor que um ano para o certificado da AC, o certificado do servidor terá um período de validade menor. Para mais informações sobre como configurar o período de validade do certificado de AC na criação, consulte Configurações do certificado de AC e Criar uma AC raiz.

AC por instância hospedado pelo Cloud SQL

A hierarquia de ACs por instância é a configuração padrão do modo de AC do servidor quando você cria uma instância usando a gcloud CLI, a API Cloud SQL Admin ou o Terraform.

O Cloud SQL cria uma nova AC de servidor autoassinada para cada instância quando você a cria. Para usar essa configuração, configure serverCaMode como GOOGLE_MANAGED_INTERNAL_CA ao criar a instância. É possível deixar a configuração serverCaMode sem especificação usando a API Cloud SQL Admin ou a gcloud CLI, ou selecionar a opção Autoridade certificadora interna do Google no console do Google Cloud.

O diagrama a seguir mostra a hierarquia de ACs por instância.

Diagrama da hierarquia de ACs internas por instância.

ACs compartilhadas hospedadas pelo serviço de AC

A hierarquia de AC compartilhada é a configuração padrão do modo de AC do servidor quando você cria uma instância usando o console do Google Cloud.

Esse modo de AC do servidor consiste em uma AC raiz e ACs de servidor subordinadas em cada região. As ACs de servidor subordinadas emitem certificados de servidor e são compartilhadas entre as instâncias na região. O Cloud SQL processa a rotação das ACs de servidor regionais compartilhadas e disponibiliza links públicos para fazer o download dos pacotes de certificados de AC.

É possível configurar uma instância para usar uma hierarquia de AC do servidor em que as ACs emissoras são compartilhadas entre as instâncias na mesma região. Para usar essa configuração, configure serverCaMode como GOOGLE_MANAGED_CAS_CA ao criar a instância.

O diagrama a seguir mostra a hierarquia da AC compartilhada.

Diagrama de uma hierarquia de ACs compartilhada

ACs gerenciadas pelo cliente

Esse modo de CA do servidor permite que você configure sua própria hierarquia de CA no CA Service.

Para usar a opção de AC gerenciada pelo cliente no Cloud SQL, crie um pool de ACs na mesma região das suas instâncias do Cloud SQL. Em seguida, crie pelo menos uma AC. Ao criar a instância do Cloud SQL, especifique o ID do pool de ACs no campo serverCaPool e configure o campo serverCaMode com o valor CUSTOMER_MANAGED_CAS_CA. O serviço de AC fornece uma AC do pool de ACs e usa essa AC para emitir o certificado do servidor para a instância.

Ao criar ACs no serviço, é possível criar uma AC raiz ou subordinada, dependendo do caso de uso. Por exemplo, você pode criar uma AC subordinada se planeja configurar uma hierarquia de AC raiz ou encadear até uma AC externa.

Selecione a opção de AC gerenciada pelo cliente somente se você quiser gerenciar suas próprias ACs e certificados. Para mais informações, consulte Usar uma AC gerenciada pelo cliente. A opção de AC gerenciada pelo cliente está em Pré-lançamento.

Como funciona a rotação de certificados do servidor

O Cloud SQL oferece maneiras de alternar o certificado do servidor para que um novo seja criado antes que o antigo expire.

Para instâncias que usam as hierarquias de AC por instância, AC compartilhada ou AC gerenciada pelo cliente, cerca de três meses antes do vencimento do certificado do servidor em uma instância do Cloud SQL, os proprietários do projeto recebem um e-mail do Cloud SQL informando que o processo de mudança do certificado foi iniciado para aquela instância. O e-mail inclui o nome da instância e informa que o Cloud SQL adicionou um novo certificado do servidor ao projeto. O certificado do servidor continua funcionando normalmente. Na verdade, a instância tem dois certificados do servidor durante esse período.

O comando de rotação de certificado do servidor a ser usado depende se você está usando um certificado do servidor emitido por uma AC por instância ou um certificado do servidor emitido pela AC compartilhada ou gerenciada pelo cliente.

Antes que o certificado do servidor atual expire, faça o download do novo arquivo server-ca.pem, que contém as informações do certificado de servidor atual e do novo. Para que seus clientes do SQL Server usem o novo arquivo, ele deve ser copiado em todas as máquinas host do cliente SQL Server, substituindo o arquivo atual.

Depois que todos os clientes do SQL Server forem atualizados, envie um comando de rotação (para ACs por instância) ou comando de rotação (para ACs compartilhadas ou gerenciadas pelo cliente) para a instância do Cloud SQL para que ela use o novo certificado do servidor. Depois disso, o certificado antigo não será mais reconhecido e somente o novo poderá ser usado.

Vencimento do certificado SSL

Para instâncias do Cloud SQL que usam ACs por instância (serverCaMode está definido como GOOGLE_MANAGED_INTERNAL_CA), os certificados SSL têm um período de validade de 10 anos. Antes que esses certificados venham a expirar, faça a rotação do certificado de CA do servidor.

Para instâncias que usam ACs compartilhadas (serverCaMode está definido como GOOGLE_MANAGED_CAS_CA) (Visualização), o período de validade dos certificados do servidor é de 1 ano. Antes do vencimento, faça uma rotação de certificados do servidor. O certificado da autoridade certificadora (AC) raiz tem um período de validade de 25 anos, e o certificado de AC compartilhado subordinado tem um período de validade de 10 anos. O Cloud SQL lida com a rotação delas.

Se você estiver usando uma AC gerenciada pelo cliente (serverCaMode está definida como CUSTOMER_MANAGED_CAS_CA)(pré-lançamento), é possível realizar a rotação de certificados da AC girando as ACs no pool de ACs criado. O período de validade de uma AC geralmente é de 10 anos, mas você pode configurar um período de validade mais curto para sua AC no serviço de AC.

Para fazer a rotação das ACs, use o processo de rotação de AC no serviço de AC. Para mais informações, consulte Gerenciar a rotação de ACs.

Se um cliente estiver configurado para verificar a AC ou o nome do host no certificado do servidor, as conexões desse cliente com instâncias do Cloud SQL com certificados de servidor expirados vão falhar. Para evitar interrupções nas conexões do cliente, alterne o certificado do servidor antes que ele expire.

Seja qual for o modo de servidor da AC por instância, da AC compartilhada ou da AC gerenciada pelo cliente, é possível redefinir a configuração SSL da instância do Cloud SQL a qualquer momento.

A seguir