Esta página describe cómo aplicar el cifrado SSL/TLS a una instancia para garantizar que todas las conexiones estén cifradas. También puede obtener más información sobre cómo Cloud SQL usa certificados SSL/TLS autogestionados para conectarse a instancias de Cloud SQL de forma segura.
Descripción general
Cloud SQL crea automáticamente un certificado de servidor al crear la instancia. Recomendamos que todas las conexiones utilicen SSL/TLS .
Para validar la identidad del cliente/servidor mediante certificados SSL/TLS, debe crear un certificado de cliente y descargar los certificados a su máquina host del cliente MySQL. Si aplica SSL a una instancia, esta deberá reiniciarse. También podría ser necesario reiniciarla después de cambiar los certificados SSL/TLS. Cuando se requiere un reinicio, Cloud SQL reinicia la instancia automáticamente. Reiniciar una instancia puede ocasionar tiempo de inactividad.Aplicar el cifrado SSL/TLS
Puede utilizar la configuración del modo SSL para aplicar el cifrado SSL de las siguientes maneras:
Permitir conexiones SSL/TLS y no SSL/TLS. El certificado del cliente no se verifica para conexiones SSL/TLS. Esta es la opción predeterminada.
Permitir únicamente conexiones cifradas con SSL/TLS. El certificado del cliente no se verifica para conexiones SSL.
- Permitir únicamente conexiones cifradas con SSL/TLS y con certificados de cliente válidos.
Si selecciona Permitir conexiones sin SSL/TLS y SSL/TLS para su instancia de Cloud SQL, se aceptarán las conexiones SSL/TLS, así como las conexiones sin cifrar y no seguras. Si no requiere SSL/TLS para todas las conexiones, las conexiones sin cifrar se permiten. Por este motivo, si accede a su instancia mediante una IP pública, le recomendamos encarecidamente que active SSL para todas las conexiones.
Puede conectarse directamente a las instancias mediante certificados SSL/TLS o mediante Cloud SQL Auth Proxy o Cloud SQL Connectors . Si se conecta mediante Cloud SQL Auth Proxy o Cloud SQL Connectors, las conexiones se cifran automáticamente con SSL/TLS. Con Cloud SQL Auth Proxy y Cloud SQL Connectors, las identidades del cliente y del servidor también se verifican automáticamente, independientemente de la configuración del modo SSL.
Para habilitar el requisito de SSL/TLS, haga lo siguiente:
Consola
En el Google Cloud consola, vaya a la página Instancias de Cloud SQL .
- Para abrir la página Descripción general de una instancia, haga clic en el nombre de la instancia.
- Haga clic en Conexiones en el menú de navegación de SQL.
- Seleccione la pestaña Seguridad .
- Seleccione una de las siguientes opciones:
- Permitir tráfico de red sin cifrar (no recomendado)
- Permitir solo conexiones SSL. Esta opción solo permite conexiones con cifrado SSL/TLS. Los certificados no se validan.
- Requerir certificados de cliente de confianza. Esta opción solo permite conexiones de clientes que utilicen un certificado de cliente válido y estén cifrados con SSL.
nube g
gcloud sql instances patch INSTANCE_NAME \ --ssl-mode=SSL_ENFORCEMENT_MODE
Reemplace SSL_ENFORCEMENT_MODE con una de las siguientes opciones:
-
ALLOW_UNENCRYPTED_AND_ENCRYPTED
permite conexiones SSL/TLS y no SSL/TLS. En las conexiones SSL, el certificado del cliente no se verifica. Este es el valor predeterminado. -
ENCRYPTED_ONLY
solo permite conexiones cifradas con SSL/TLS. El certificado del cliente no se verifica para las conexiones SSL. -
TRUSTED_CLIENT_CERTIFICATE_REQUIRED
solo permite conexiones cifradas con SSL/TLS y con certificados de cliente válidos. Para obtener más información, consulte Configuración de Cloud SQL para MySQL .
Terraformar
Para aplicar el cifrado SSL/TLS, utilice un recurso Terraform :
Aplicar los cambios
Para aplicar su configuración de Terraform en un Google Cloud proyecto, complete los pasos de las siguientes secciones.
Preparar Cloud Shell
- Inicie Cloud Shell .
Establecer el valor predeterminado Google Cloud Proyecto donde desea aplicar sus configuraciones de Terraform.
Solo necesitas ejecutar este comando una vez por proyecto y puedes ejecutarlo en cualquier directorio.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Las variables de entorno se anulan si establece valores explícitos en el archivo de configuración de Terraform.
Preparar el directorio
Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz ).
- En Cloud Shell , cree un directorio y un nuevo archivo dentro de él. El nombre del archivo debe tener la extensión
.tf
; por ejemplo,main.tf
En este tutorial, el archivo se denominamain.tf
mkdir DIRECTORY && cd DIRECTORY && touch main.tf
Si está siguiendo un tutorial, puede copiar el código de muestra en cada sección o paso.
Copie el código de muestra en el
main.tf
recién creado.Opcionalmente, copie el código de GitHub. Esto se recomienda cuando el fragmento de Terraform forma parte de una solución integral.
- Revise y modifique los parámetros de muestra para aplicarlos a su entorno.
- Guarde sus cambios.
- Inicialice Terraform. Solo necesita hacerlo una vez por directorio.
terraform init
Opcionalmente, para utilizar la última versión del proveedor de Google, incluya la opción
-upgrade
:terraform init -upgrade
Aplicar los cambios
- Revise la configuración y verifique que los recursos que Terraform va a crear o actualizar coincidan con sus expectativas:
terraform plan
Realice correcciones en la configuración según sea necesario.
- Aplique la configuración de Terraform ejecutando el siguiente comando e ingresando
yes
en el indicador:terraform apply
Espere hasta que Terraform muestre el mensaje "¡Aplicación completada!"
- Abre tu Google Cloud proyecto para ver los resultados. En el Google Cloud consola, navegue a sus recursos en la interfaz de usuario para asegurarse de que Terraform los haya creado o actualizado.
Eliminar los cambios
Para eliminar sus cambios, haga lo siguiente:
- Para deshabilitar la protección contra eliminación, en el archivo de configuración de Terraform configure el argumento
deletion_protection
enfalse
.deletion_protection = "false"
- Aplique la configuración actualizada de Terraform ejecutando el siguiente comando e ingresando
yes
en el mensaje:terraform apply
Elimine los recursos aplicados previamente con su configuración de Terraform ejecutando el siguiente comando e ingresando
yes
en el mensaje:terraform destroy
REST versión 1
Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:
- PROJECT_ID : El ID del proyecto
- SSL_ENFORCEMENT_MODE : utilice una de las siguientes opciones:
-
ALLOW_UNENCRYPTED_AND_ENCRYPTED
: permite conexiones SSL/TLS y no SSL/TLS. En las conexiones SSL, el certificado del cliente no se verifica. Este es el valor predeterminado. -
ENCRYPTED_ONLY
: sólo permite conexiones cifradas con SSL/TLS. -
TRUSTED_CLIENT_CERTIFICATE_REQUIRED
: solo permite conexiones cifradas con SSL/TLS y con certificados de cliente válidos.
-
- INSTANCE_ID : El ID de la instancia
Método HTTP y URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID
Cuerpo JSON de la solicitud:
{ "settings": { "ipConfiguration": {"sslMode": "SSL_ENFORCEMENT_MODE"} } }
Para enviar su solicitud, expanda una de estas opciones:
Debería recibir una respuesta JSON similar a la siguiente:
REST v1beta4
Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:
- PROJECT_ID : El ID del proyecto
- SSL_ENFORCEMENT_MODE : utilice una de las siguientes opciones:
-
ALLOW_UNENCRYPTED_AND_ENCRYPTED
: permite conexiones SSL/TLS y no SSL/TLS. En las conexiones SSL, el certificado del cliente no se verifica. Este es el valor predeterminado. -
ENCRYPTED_ONLY
: sólo permite conexiones cifradas con SSL/TLS. -
TRUSTED_CLIENT_CERTIFICATE_REQUIRED
: solo permite conexiones cifradas con SSL/TLS y con certificados de cliente válidos.
-
- INSTANCE_ID : El ID de la instancia
Método HTTP y URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
Cuerpo JSON de la solicitud:
{ "settings": { "ipConfiguration": {"sslMode": "SSL_ENFORCEMENT_MODE"} } }
Para enviar su solicitud, expanda una de estas opciones:
Debería recibir una respuesta JSON similar a la siguiente:
Certificados de servidor
Cloud SQL crea un certificado de servidor automáticamente al crear la instancia. Mientras el certificado de servidor sea válido, no es necesario que lo administre de forma activa. Cloud SQL le permite seleccionar entre tres jerarquías de autoridades de certificación (CA) diferentes. La jerarquía de CA que seleccione se convierte en el modo de CA de servidor de la instancia. Si utiliza una CA por instancia como modo de CA de servidor para su instancia, los certificados de servidor tienen una fecha de vencimiento de 10 años. Si utiliza una CA compartida o una CA administrada por el cliente como modo de CA de servidor de su instancia, el certificado de servidor tiene una fecha de vencimiento de 1 año * . Después de la fecha de vencimiento, el certificado de servidor deja de ser válido y los clientes ya no pueden establecer una conexión segura con su instancia mediante ese certificado. Si un cliente está configurado para verificar la CA o verificar el nombre de host en el certificado de servidor, las conexiones de ese cliente a las instancias de Cloud SQL con certificados de servidor vencidos fallarán. Para evitar interrupciones en las conexiones de los clientes, rote el certificado de servidor antes de que venza. Se le notifica periódicamente que el certificado del servidor está próximo a caducar. Las notificaciones se envían con la siguiente antelación: 90, 30, 10, 2 y 1 días.
* Para las CA administradas por el cliente, la fecha de vencimiento de su certificado de servidor podría ser más corta que 1 año si seleccionó una fecha de vencimiento más corta para el período de validez de su CA.
Enumerar y crear certificados de servidor
Para ver los detalles de los certificados de su servidor en el Google Cloud consola, vaya a la página Conexiones y haga clic en la pestaña Seguridad .
En la tabla de certificados, puede ver los siguientes detalles:
- Estado del certificado : Próximo, Activo o Anterior
- Próximamente : El certificado está disponible, pero no está activo. Para activarlo, utilice el procedimiento de rotación.
- Activo : el certificado está en uso.
- Anterior : El certificado ya no está en uso. Para reactivarlo, utilice el procedimiento de reversión.
- Creado : La fecha y hora en que se creó el certificado.
- Caduca : La fecha y hora en que caduca el certificado.
Antes de que caduque el certificado activo, puede crear un nuevo certificado manualmente.
Consola
Para instancias que utilizan certificados de servidor autofirmados (CA por instancia) :
En el Google Cloud consola, vaya a la página Instancias de Cloud SQL .
- Para abrir la página Descripción general de una instancia, haga clic en el nombre de la instancia.
- Haga clic en Conexiones en el menú de navegación de SQL.
- Seleccione la pestaña Seguridad .
- Vaya a la sección Administrar certificados CA del servidor .
- Haga clic para expandir Administrar certificados .
- Haga clic en Crear nuevo certificado CA.
El nuevo certificado de CA del servidor aparece en la ranura Próximos . Si desea rotar al nuevo certificado de CA del servidor inmediatamente, proceda con la rotación del certificado de CA del servidor actualizando sus clientes y completando la rotación.
Para instancias que utilizan certificados de servidor emitidos por una CA compartida :
En el Google Cloud consola, vaya a la página Instancias de Cloud SQL .
- Para abrir la página Descripción general de una instancia, haga clic en el nombre de la instancia.
- Haga clic en Conexiones en el menú de navegación de SQL.
- Seleccione la pestaña Seguridad .
- Vaya a la sección Administrar certificados de servidor .
- Haga clic para expandir Administrar certificados .
- Haga clic en Crear certificado de servidor .
El nuevo certificado de servidor aparece en la ranura "Próximos" . Si desea usarlo inmediatamente, proceda con la rotación de certificados de servidor actualizando sus clientes y completando la rotación.
nube g
Para instancias que utilizan certificados de servidor autofirmados (CA por instancia) :
- Para obtener información sobre el certificado del servidor, utilice el comando sql ssl server-ca-certs list :
gcloud sql ssl server-ca-certs list \ --instance=INSTANCE_NAME
- Para crear un certificado de servidor, utilice el comando sql ssl server-ca-certs create :
gcloud sql ssl server-ca-certs create \ --instance=INSTANCE_NAME
- Descargue la información del certificado a un archivo PEM local:
gcloud sql ssl server-ca-certs list \ --format="value(cert)" \ --instance=INSTANCE_NAME > \ FILE_PATH/FILE_NAME.pem
- Actualice todos sus clientes para usar la nueva información copiando el archivo descargado a las máquinas host de sus clientes y reemplazando los archivos
server-ca.pem
existentes.
Para instancias que utilizan certificados de servidor emitidos por una CA compartida :
- Para obtener información sobre el certificado del servidor, utilice el comando sql ssl server-certs list :
gcloud sql ssl server-certs list \ --instance=INSTANCE_NAME
- Para crear un certificado de servidor, utilice el comando sql ssl server-certs create :
gcloud sql ssl server-certs create \ --instance=INSTANCE_NAME
- Descargue la información del certificado a un archivo PEM local:
gcloud sql ssl server-certs list \ --format="value(ca_cert.cert)" \ --instance=INSTANCE_NAME > \ FILE_PATH/FILE_NAME.pem
- Actualice todos sus clientes para usar la nueva información copiando el archivo descargado a las máquinas host de sus clientes y reemplazando los archivos
server-ca.pem
existentes.
Terraformar
Para proporcionar información del certificado del servidor como salida, utilice una fuente de datos de Terraform :
- Agregue lo siguiente a su archivo de configuración de 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 crear el archivo
server-ca.pem
, ejecute el siguiente comando:terraform output db_latest_ca_cert > server-ca.pem
Certificados de cliente
Crear un nuevo certificado de cliente
Puede crear hasta 10 certificados de cliente para cada instancia. Para crearlos, debe tener el rol de Cloud SQL Admin
.
A continuación se detallan algunos aspectos importantes que debe saber sobre los certificados de cliente:
- Si pierde la clave privada de un certificado, deberá crear uno nuevo; la clave privada no se puede recuperar.
- De forma predeterminada, el certificado de cliente tiene una fecha de vencimiento de 10 años.
- No se le notifica cuando los certificados de cliente están próximos a vencer.
- Su instancia de Cloud SQL debe estar en estado de ejecución para crear un certificado SSL.
Consola
En el Google Cloud consola, vaya a la página Instancias de Cloud SQL .
- Para abrir la página Descripción general de una instancia, haga clic en el nombre de la instancia.
- Haga clic en Conexiones en el menú de navegación de SQL.
- Seleccione la pestaña Seguridad .
- Haga clic en Crear certificado de cliente .
- En el cuadro de diálogo Crear un certificado de cliente , agregue un nombre único.
- Haga clic en Crear .
- En la primera sección del cuadro de diálogo Nuevo certificado SSL creado , haga clic en Descargar client-key.pem para descargar la clave privada a un archivo llamado
client-key.pem
. - En la segunda sección, haga clic en Descargar client-cert.pem para descargar el certificado de cliente a un archivo llamado
client-cert.pem
. - En la tercera sección, haga clic en Descargar server-ca.pem para descargar el certificado del servidor a un archivo llamado
server-ca.pem
. - Haga clic en Cerrar .
nube g
Cree un certificado de cliente utilizando el comando
ssl client-certs create
:gcloud sql ssl client-certs create CERT_NAME client-key.pem \ --instance=INSTANCE_NAME
Recupere la clave pública del certificado que acaba de crear y cópiela en el archivo
client-cert.pem
con el comandossl client-certs describe
:gcloud sql ssl client-certs describe CERT_NAME \ --instance=INSTANCE_NAME \ --format="value(cert)" > client-cert.pem
Copie el certificado del servidor en el archivo
server-ca.pem
usando el comandoinstances describe
:gcloud sql instances describe INSTANCE_NAME \ --format="value(serverCaCert.cert)" > server-ca.pem
Terraformar
Para crear un certificado de cliente, utilice un recurso de Terraform :
REST versión 1
Cree un certificado SSL/TLS y asígnele un nombre único para esta instancia:
Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:
- project-id : El ID del proyecto
- instance-id : El ID de la instancia
- client-cert-name : El nombre del certificado del cliente
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/sslCerts
Cuerpo JSON de la solicitud:
{ "commonName" : "client-cert-name" }
Para enviar su solicitud, expanda una de estas opciones:
Debería recibir una respuesta JSON similar a la siguiente:
- Copie todo el contenido del certificado dentro de las comillas (pero no las comillas en sí) de la respuesta en archivos locales de la siguiente manera:
- Copie
serverCaCert.cert
enserver-ca.pem
. - Copie
clientCert.cert
enclient-cert.pem
. - Copie
certPrivateKey
enclient-key.pem
.
- Copie
Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:
- project-id : El ID del proyecto
- instance-id : El ID de la instancia
- activation-policy : La política de activación es SIEMPRE o NUNCA
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/restart
Cuerpo JSON de la solicitud:
{ "settings": { "activationPolicy": "activation-policy" } }
Para enviar su solicitud, expanda una de estas opciones:
Debería recibir una respuesta JSON similar a la siguiente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id", "status": "PENDING", "user": "[email protected]", "insertTime": "2020-01-20T21:30:35.667Z", "operationType": "RESTART", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id", "targetProject": "project-id" }
REST v1beta4
Cree un certificado SSL/TLS y asígnele un nombre único para esta instancia:
Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:
- project-id : El ID del proyecto
- instance-id : El ID de la instancia
- client-cert-name : El nombre del certificado del cliente
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/sslCerts
Cuerpo JSON de la solicitud:
{ "commonName" : "client-cert-name" }
Para enviar su solicitud, expanda una de estas opciones:
Debería recibir una respuesta JSON similar a la siguiente:
- Copie todo el contenido del certificado dentro de las comillas (pero no las comillas en sí) de la respuesta en archivos locales de la siguiente manera:
- Copie
serverCaCert.cert
enserver-ca.pem
. - Copie
clientCert.cert
enclient-cert.pem
. - Copie
certPrivateKey
enclient-key.pem
.
- Copie
Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:
- project-id : El ID del proyecto
- instance-id : El ID de la instancia
- activation-policy : La política de activación es SIEMPRE o NUNCA
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/restart
Cuerpo JSON de la solicitud:
{ "settings": { "activationPolicy": "activation-policy" } }
Para enviar su solicitud, expanda una de estas opciones:
Debería recibir una respuesta JSON similar a la siguiente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id", "status": "PENDING", "user": "[email protected]", "insertTime": "2020-01-20T21:30:35.667Z", "operationType": "RESTART", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
En este punto, tienes:
- Un certificado de servidor guardado como
server-ca.pem
. - Un certificado de clave pública de cliente guardado como
client-cert.pem
. - Una clave privada de cliente guardada como
client-key.pem
.
Según la herramienta que utilice para conectarse, estos tres elementos se especifican de forma diferente. Por ejemplo, al conectarse mediante un cliente MySQL, estos tres archivos son los valores para las opciones de comando --ssl-ca
, --ssl-cert
y --ssl-key
, respectivamente. Para ver un ejemplo de conexión con un cliente MySQL y SSL/TLS, consulte Conexión con un cliente MySQL .
Verificación de identidad del servidor
La verificación de la identidad del servidor depende de la configuración de la jerarquía de la autoridad de certificación (CA) del servidor de su instancia de Cloud SQL.
En las instancias que utilizan una CA individual, la verificación de la CA también verifica la identidad del servidor, ya que cada instancia tiene una CA única. En las instancias que utilizan una CA compartida, es necesario verificar el nombre de host junto con la CA para verificar la identidad del servidor, ya que las CA del servidor se comparten entre las instancias.
Si tiene una CA por instancia, puede realizar la verificación de identidad del servidor basada en nombres DNS solo para las instancias configuradas con Conexión de Servicio Privado. Si tiene una CA compartida, puede realizar la verificación de identidad del servidor basada en nombres DNS para todos los tipos de instancias, es decir, Conexión de Servicio Privado , Acceso a Servicio Privado e instancias con IP pública.
Si está utilizando una CA administrada por el cliente, puede verificar la cadena de confianza de la CA y realizar una verificación de identidad del servidor basada en nombres DNS para cualquier tipo de instancia que utilice una CA administrada por el cliente para su serverCAmode
.
Al seleccionar la opción de CA administrada por el cliente para su instancia, puede insertar nombres DNS personalizados en el campo SAN del certificado del servidor. Para obtener más información, consulte Editar un campo SAN personalizado .
Puede ver qué jerarquía de CA está configurada para una instancia de Cloud SQL consultando los detalles de la instancia. Para obtener más información, consulte Ver información de la instancia .
Habilitar la verificación de identidad del servidor
Si selecciona CA compartida como el modo de CA del servidor de su instancia de Cloud SQL o si configura nombres DNS personalizados usando valores SAN personalizados , le recomendamos que también habilite la verificación de identidad del servidor.
Las instancias que usan una CA compartida como modo de CA del servidor contienen el nombre DNS de la instancia en el campo Nombre Alternativo del Sujeto (SAN) del certificado del servidor. Puede obtener este nombre DNS mediante la API de búsqueda de instancias y utilizando la respuesta como nombre de host para la verificación de identidad del servidor. Debe configurar la resolución DNS para el nombre DNS.
Para habilitar la verificación de identidad del servidor para una instancia que utiliza una CA compartida, complete los siguientes pasos:
Recuperar el nombre DNS.
Para ver información resumida sobre una instancia de Cloud SQL, incluido el nombre DNS de la instancia, utilice el comando
gcloud sql instances describe
:gcloud sql instances describe INSTANCE_NAME \ --project=PROJECT_ID
Realice las siguientes sustituciones:
- INSTANCE_NAME : el nombre de la instancia de Cloud SQL
- PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene la instancia
En la respuesta, busque el campo
dnsNames:
Este campo puede devolver varios nombres DNS con los siguientes formatos:Configuración de red Formato de nombre DNS Nivel de nombre Conexión de servicio privado o dirección IP pública INSTANCE_UID . PROJECT_DNS_LABEL . REGION_NAME .sql.goog.
Ejemplo :
1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog.
Instancia Acceso a servicios privados INSTANCE_UID . PROJECT_DNS_LABEL . REGION_NAME .sql-psa.goog.
Ejemplo :1a23b4cd5e67.1a2b345c6d27.us-central1.sql-psa.goog.
Instancia
Cree el registro DNS en una zona DNS . Si se conecta de forma privada, cree el registro DNS en una zona DNS privada de la red de nube virtual privada (VPC) correspondiente.
Al conectarse a la instancia de Cloud SQL para MySQL, configure el nombre DNS como nombre de host. A continuación, habilite la verificación de identidad del servidor en su cliente.
Por ejemplo, al usar el cliente MySQL, especifique el indicador
--ssl-mode=VERIFY_IDENTITY
. Otros controladores de cliente MySQL tienen indicadores de configuración similares.
¿Qué sigue?
- Administre certificados SSL/TLS en su instancia de Cloud SQL.
- Obtenga más información sobre cómo se maneja el cifrado en Google Cloud .
- Conéctese a su instancia de Cloud SQL mediante certificados SSL/TLS.
- Obtenga más información sobre cómo MySQL utiliza SSL/TLS .
Esta página describe cómo aplicar el cifrado SSL/TLS a una instancia para garantizar que todas las conexiones estén cifradas. También puede obtener más información sobre cómo Cloud SQL usa certificados SSL/TLS autogestionados para conectarse a instancias de Cloud SQL de forma segura.
Descripción general
Cloud SQL crea automáticamente un certificado de servidor al crear la instancia. Recomendamos que todas las conexiones utilicen SSL/TLS .
Para validar la identidad del cliente/servidor mediante certificados SSL/TLS, debe crear un certificado de cliente y descargar los certificados a su máquina host del cliente MySQL. Si aplica SSL a una instancia, esta deberá reiniciarse. También podría ser necesario reiniciarla después de cambiar los certificados SSL/TLS. Cuando se requiere un reinicio, Cloud SQL reinicia la instancia automáticamente. Reiniciar una instancia puede ocasionar tiempo de inactividad.Aplicar el cifrado SSL/TLS
Puede utilizar la configuración del modo SSL para aplicar el cifrado SSL de las siguientes maneras:
Permitir conexiones SSL/TLS y no SSL/TLS. El certificado del cliente no se verifica para conexiones SSL/TLS. Esta es la opción predeterminada.
Permitir únicamente conexiones cifradas con SSL/TLS. El certificado del cliente no se verifica para conexiones SSL.
- Permitir únicamente conexiones cifradas con SSL/TLS y con certificados de cliente válidos.
Si selecciona Permitir conexiones sin SSL/TLS y SSL/TLS para su instancia de Cloud SQL, se aceptarán las conexiones SSL/TLS, así como las conexiones sin cifrar y no seguras. Si no requiere SSL/TLS para todas las conexiones, las conexiones sin cifrar se permiten. Por este motivo, si accede a su instancia mediante una IP pública, le recomendamos encarecidamente que active SSL para todas las conexiones.
Puede conectarse directamente a las instancias mediante certificados SSL/TLS o mediante Cloud SQL Auth Proxy o Cloud SQL Connectors . Si se conecta mediante Cloud SQL Auth Proxy o Cloud SQL Connectors, las conexiones se cifran automáticamente con SSL/TLS. Con Cloud SQL Auth Proxy y Cloud SQL Connectors, las identidades del cliente y del servidor también se verifican automáticamente, independientemente de la configuración del modo SSL.
Para habilitar el requisito de SSL/TLS, haga lo siguiente:
Consola
En el Google Cloud consola, vaya a la página Instancias de Cloud SQL .
- Para abrir la página Descripción general de una instancia, haga clic en el nombre de la instancia.
- Haga clic en Conexiones en el menú de navegación de SQL.
- Seleccione la pestaña Seguridad .
- Seleccione una de las siguientes opciones:
- Permitir tráfico de red sin cifrar (no recomendado)
- Permitir solo conexiones SSL. Esta opción solo permite conexiones con cifrado SSL/TLS. Los certificados no se validan.
- Requerir certificados de cliente de confianza. Esta opción solo permite conexiones de clientes que utilicen un certificado de cliente válido y estén cifrados con SSL.
nube g
gcloud sql instances patch INSTANCE_NAME \ --ssl-mode=SSL_ENFORCEMENT_MODE
Reemplace SSL_ENFORCEMENT_MODE con una de las siguientes opciones:
-
ALLOW_UNENCRYPTED_AND_ENCRYPTED
permite conexiones SSL/TLS y no SSL/TLS. En las conexiones SSL, el certificado del cliente no se verifica. Este es el valor predeterminado. -
ENCRYPTED_ONLY
solo permite conexiones cifradas con SSL/TLS. El certificado del cliente no se verifica para las conexiones SSL. -
TRUSTED_CLIENT_CERTIFICATE_REQUIRED
solo permite conexiones cifradas con SSL/TLS y con certificados de cliente válidos. Para obtener más información, consulte Configuración de Cloud SQL para MySQL .
Terraformar
Para aplicar el cifrado SSL/TLS, utilice un recurso Terraform :
Aplicar los cambios
Para aplicar su configuración de Terraform en un Google Cloud proyecto, complete los pasos de las siguientes secciones.
Preparar Cloud Shell
- Inicie Cloud Shell .
Establecer el valor predeterminado Google Cloud Proyecto donde desea aplicar sus configuraciones de Terraform.
Solo necesitas ejecutar este comando una vez por proyecto y puedes ejecutarlo en cualquier directorio.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Las variables de entorno se anulan si establece valores explícitos en el archivo de configuración de Terraform.
Preparar el directorio
Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz ).
- En Cloud Shell , cree un directorio y un nuevo archivo dentro de él. El nombre del archivo debe tener la extensión
.tf
; por ejemplo,main.tf
En este tutorial, el archivo se denominamain.tf
mkdir DIRECTORY && cd DIRECTORY && touch main.tf
Si está siguiendo un tutorial, puede copiar el código de muestra en cada sección o paso.
Copie el código de muestra en el
main.tf
recién creado.Opcionalmente, copie el código de GitHub. Esto se recomienda cuando el fragmento de Terraform forma parte de una solución integral.
- Revise y modifique los parámetros de muestra para aplicarlos a su entorno.
- Guarde sus cambios.
- Inicialice Terraform. Solo necesita hacerlo una vez por directorio.
terraform init
Opcionalmente, para utilizar la última versión del proveedor de Google, incluya la opción
-upgrade
:terraform init -upgrade
Aplicar los cambios
- Revise la configuración y verifique que los recursos que Terraform va a crear o actualizar coincidan con sus expectativas:
terraform plan
Realice correcciones en la configuración según sea necesario.
- Aplique la configuración de Terraform ejecutando el siguiente comando e ingresando
yes
en el indicador:terraform apply
Espere hasta que Terraform muestre el mensaje "¡Aplicación completada!"
- Abre tu Google Cloud proyecto para ver los resultados. En el Google Cloud consola, navegue a sus recursos en la interfaz de usuario para asegurarse de que Terraform los haya creado o actualizado.
Eliminar los cambios
Para eliminar sus cambios, haga lo siguiente:
- Para deshabilitar la protección contra eliminación, en el archivo de configuración de Terraform configure el argumento
deletion_protection
enfalse
.deletion_protection = "false"
- Aplique la configuración actualizada de Terraform ejecutando el siguiente comando e ingresando
yes
en el mensaje:terraform apply
Elimine los recursos aplicados previamente con su configuración de Terraform ejecutando el siguiente comando e ingresando
yes
en el mensaje:terraform destroy
REST versión 1
Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:
- PROJECT_ID : El ID del proyecto
- SSL_ENFORCEMENT_MODE : utilice una de las siguientes opciones:
-
ALLOW_UNENCRYPTED_AND_ENCRYPTED
: permite conexiones SSL/TLS y no SSL/TLS. En las conexiones SSL, el certificado del cliente no se verifica. Este es el valor predeterminado. -
ENCRYPTED_ONLY
: sólo permite conexiones cifradas con SSL/TLS. -
TRUSTED_CLIENT_CERTIFICATE_REQUIRED
: solo permite conexiones cifradas con SSL/TLS y con certificados de cliente válidos.
-
- INSTANCE_ID : El ID de la instancia
Método HTTP y URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID
Cuerpo JSON de la solicitud:
{ "settings": { "ipConfiguration": {"sslMode": "SSL_ENFORCEMENT_MODE"} } }
Para enviar su solicitud, expanda una de estas opciones:
Debería recibir una respuesta JSON similar a la siguiente:
REST v1beta4
Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:
- PROJECT_ID : El ID del proyecto
- SSL_ENFORCEMENT_MODE : utilice una de las siguientes opciones:
-
ALLOW_UNENCRYPTED_AND_ENCRYPTED
: permite conexiones SSL/TLS y no SSL/TLS. En las conexiones SSL, el certificado del cliente no se verifica. Este es el valor predeterminado. -
ENCRYPTED_ONLY
: sólo permite conexiones cifradas con SSL/TLS. -
TRUSTED_CLIENT_CERTIFICATE_REQUIRED
: solo permite conexiones cifradas con SSL/TLS y con certificados de cliente válidos.
-
- INSTANCE_ID : El ID de la instancia
Método HTTP y URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
Cuerpo JSON de la solicitud:
{ "settings": { "ipConfiguration": {"sslMode": "SSL_ENFORCEMENT_MODE"} } }
Para enviar su solicitud, expanda una de estas opciones:
Debería recibir una respuesta JSON similar a la siguiente:
Certificados de servidor
Cloud SQL crea un certificado de servidor automáticamente al crear la instancia. Mientras el certificado de servidor sea válido, no es necesario que lo administre de forma activa. Cloud SQL le permite seleccionar entre tres jerarquías de autoridades de certificación (CA) diferentes. La jerarquía de CA que seleccione se convierte en el modo de CA de servidor de la instancia. Si utiliza una CA por instancia como modo de CA de servidor para su instancia, los certificados de servidor tienen una fecha de vencimiento de 10 años. Si utiliza una CA compartida o una CA administrada por el cliente como modo de CA de servidor de su instancia, el certificado de servidor tiene una fecha de vencimiento de 1 año * . Después de la fecha de vencimiento, el certificado de servidor deja de ser válido y los clientes ya no pueden establecer una conexión segura con su instancia mediante ese certificado. Si un cliente está configurado para verificar la CA o verificar el nombre de host en el certificado de servidor, las conexiones de ese cliente a las instancias de Cloud SQL con certificados de servidor vencidos fallarán. Para evitar interrupciones en las conexiones de los clientes, rote el certificado de servidor antes de que venza. Se le notifica periódicamente que el certificado del servidor está próximo a caducar. Las notificaciones se envían con la siguiente antelación: 90, 30, 10, 2 y 1 días.
* Para las CA administradas por el cliente, la fecha de vencimiento de su certificado de servidor podría ser más corta que 1 año si seleccionó una fecha de vencimiento más corta para el período de validez de su CA.
Enumerar y crear certificados de servidor
Para ver los detalles de los certificados de su servidor en el Google Cloud consola, vaya a la página Conexiones y haga clic en la pestaña Seguridad .
En la tabla de certificados, puede ver los siguientes detalles:
- Estado del certificado : Próximo, Activo o Anterior
- Próximamente : El certificado está disponible, pero no está activo. Para activarlo, utilice el procedimiento de rotación.
- Activo : el certificado está en uso.
- Anterior : El certificado ya no está en uso. Para reactivarlo, utilice el procedimiento de reversión.
- Creado : La fecha y hora en que se creó el certificado.
- Caduca : La fecha y hora en que caduca el certificado.
Antes de que caduque el certificado activo, puede crear un nuevo certificado manualmente.
Consola
Para instancias que utilizan certificados de servidor autofirmados (CA por instancia) :
En el Google Cloud consola, vaya a la página Instancias de Cloud SQL .
- Para abrir la página Descripción general de una instancia, haga clic en el nombre de la instancia.
- Haga clic en Conexiones en el menú de navegación de SQL.
- Seleccione la pestaña Seguridad .
- Vaya a la sección Administrar certificados CA del servidor .
- Haga clic para expandir Administrar certificados .
- Haga clic en Crear nuevo certificado CA.
El nuevo certificado de CA del servidor aparece en la ranura Próximos . Si desea rotar al nuevo certificado de CA del servidor inmediatamente, proceda con la rotación del certificado de CA del servidor actualizando sus clientes y completando la rotación.
Para instancias que utilizan certificados de servidor emitidos por una CA compartida :
En el Google Cloud consola, vaya a la página Instancias de Cloud SQL .
- Para abrir la página Descripción general de una instancia, haga clic en el nombre de la instancia.
- Haga clic en Conexiones en el menú de navegación de SQL.
- Seleccione la pestaña Seguridad .
- Vaya a la sección Administrar certificados de servidor .
- Haga clic para expandir Administrar certificados .
- Haga clic en Crear certificado de servidor .
El nuevo certificado de servidor aparece en la ranura "Próximos" . Si desea usarlo inmediatamente, proceda con la rotación de certificados de servidor actualizando sus clientes y completando la rotación.
nube g
Para instancias que utilizan certificados de servidor autofirmados (CA por instancia) :
- Para obtener información sobre el certificado del servidor, utilice el comando sql ssl server-ca-certs list :
gcloud sql ssl server-ca-certs list \ --instance=INSTANCE_NAME
- Para crear un certificado de servidor, utilice el comando sql ssl server-ca-certs create :
gcloud sql ssl server-ca-certs create \ --instance=INSTANCE_NAME
- Descargue la información del certificado a un archivo PEM local:
gcloud sql ssl server-ca-certs list \ --format="value(cert)" \ --instance=INSTANCE_NAME > \ FILE_PATH/FILE_NAME.pem
- Actualice todos sus clientes para usar la nueva información copiando el archivo descargado a las máquinas host de sus clientes y reemplazando los archivos
server-ca.pem
existentes.
Para instancias que utilizan certificados de servidor emitidos por una CA compartida :
- Para obtener información sobre el certificado del servidor, utilice el comando sql ssl server-certs list :
gcloud sql ssl server-certs list \ --instance=INSTANCE_NAME
- Para crear un certificado de servidor, utilice el comando sql ssl server-certs create :
gcloud sql ssl server-certs create \ --instance=INSTANCE_NAME
- Descargue la información del certificado a un archivo PEM local:
gcloud sql ssl server-certs list \ --format="value(ca_cert.cert)" \ --instance=INSTANCE_NAME > \ FILE_PATH/FILE_NAME.pem
- Actualice todos sus clientes para usar la nueva información copiando el archivo descargado a las máquinas host de sus clientes y reemplazando los archivos
server-ca.pem
existentes.
Terraformar
Para proporcionar información del certificado del servidor como salida, utilice una fuente de datos de Terraform :
- Agregue lo siguiente a su archivo de configuración de 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 crear el archivo
server-ca.pem
, ejecute el siguiente comando:terraform output db_latest_ca_cert > server-ca.pem
Certificados de cliente
Crear un nuevo certificado de cliente
Puede crear hasta 10 certificados de cliente para cada instancia. Para crearlos, debe tener el rol de Cloud SQL Admin
.
A continuación se detallan algunos aspectos importantes que debe saber sobre los certificados de cliente:
- Si pierde la clave privada de un certificado, deberá crear uno nuevo; la clave privada no se puede recuperar.
- De forma predeterminada, el certificado de cliente tiene una fecha de vencimiento de 10 años.
- No se le notifica cuando los certificados de cliente están próximos a vencer.
- Su instancia de Cloud SQL debe estar en estado de ejecución para crear un certificado SSL.
Consola
En el Google Cloud consola, vaya a la página Instancias de Cloud SQL .
- Para abrir la página Descripción general de una instancia, haga clic en el nombre de la instancia.
- Haga clic en Conexiones en el menú de navegación de SQL.
- Seleccione la pestaña Seguridad .
- Haga clic en Crear certificado de cliente .
- En el cuadro de diálogo Crear un certificado de cliente , agregue un nombre único.
- Haga clic en Crear .
- En la primera sección del cuadro de diálogo Nuevo certificado SSL creado , haga clic en Descargar client-key.pem para descargar la clave privada a un archivo llamado
client-key.pem
. - En la segunda sección, haga clic en Descargar client-cert.pem para descargar el certificado de cliente a un archivo llamado
client-cert.pem
. - En la tercera sección, haga clic en Descargar server-ca.pem para descargar el certificado del servidor a un archivo llamado
server-ca.pem
. - Haga clic en Cerrar .
nube g
Cree un certificado de cliente utilizando el comando
ssl client-certs create
:gcloud sql ssl client-certs create CERT_NAME client-key.pem \ --instance=INSTANCE_NAME
Recupere la clave pública del certificado que acaba de crear y cópiela en el archivo
client-cert.pem
con el comandossl client-certs describe
:gcloud sql ssl client-certs describe CERT_NAME \ --instance=INSTANCE_NAME \ --format="value(cert)" > client-cert.pem
Copie el certificado del servidor en el archivo
server-ca.pem
usando el comandoinstances describe
:gcloud sql instances describe INSTANCE_NAME \ --format="value(serverCaCert.cert)" > server-ca.pem
Terraformar
Para crear un certificado de cliente, utilice un recurso de Terraform :
REST versión 1
Cree un certificado SSL/TLS y asígnele un nombre único para esta instancia:
Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:
- project-id : El ID del proyecto
- instance-id : El ID de la instancia
- client-cert-name : El nombre del certificado del cliente
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/sslCerts
Cuerpo JSON de la solicitud:
{ "commonName" : "client-cert-name" }
Para enviar su solicitud, expanda una de estas opciones:
Debería recibir una respuesta JSON similar a la siguiente:
- Copie todo el contenido del certificado dentro de las comillas (pero no las comillas en sí) de la respuesta en archivos locales de la siguiente manera:
- Copie
serverCaCert.cert
enserver-ca.pem
. - Copie
clientCert.cert
enclient-cert.pem
. - Copie
certPrivateKey
enclient-key.pem
.
- Copie
Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:
- project-id : El ID del proyecto
- instance-id : El ID de la instancia
- activation-policy : La política de activación es SIEMPRE o NUNCA
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/restart
Cuerpo JSON de la solicitud:
{ "settings": { "activationPolicy": "activation-policy" } }
Para enviar su solicitud, expanda una de estas opciones:
Debería recibir una respuesta JSON similar a la siguiente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id", "status": "PENDING", "user": "[email protected]", "insertTime": "2020-01-20T21:30:35.667Z", "operationType": "RESTART", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id", "targetProject": "project-id" }
REST v1beta4
Cree un certificado SSL/TLS y asígnele un nombre único para esta instancia:
Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:
- project-id : El ID del proyecto
- instance-id : El ID de la instancia
- client-cert-name : El nombre del certificado del cliente
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/sslCerts
Cuerpo JSON de la solicitud:
{ "commonName" : "client-cert-name" }
Para enviar su solicitud, expanda una de estas opciones:
Debería recibir una respuesta JSON similar a la siguiente:
- Copie todo el contenido del certificado dentro de las comillas (pero no las comillas en sí) de la respuesta en archivos locales de la siguiente manera:
- Copie
serverCaCert.cert
enserver-ca.pem
. - Copie
clientCert.cert
enclient-cert.pem
. - Copie
certPrivateKey
enclient-key.pem
.
- Copie
Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:
- project-id : El ID del proyecto
- instance-id : El ID de la instancia
- activation-policy : La política de activación es SIEMPRE o NUNCA
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/restart
Cuerpo JSON de la solicitud:
{ "settings": { "activationPolicy": "activation-policy" } }
Para enviar su solicitud, expanda una de estas opciones:
Debería recibir una respuesta JSON similar a la siguiente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id", "status": "PENDING", "user": "[email protected]", "insertTime": "2020-01-20T21:30:35.667Z", "operationType": "RESTART", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
En este punto, tienes:
- Un certificado de servidor guardado como
server-ca.pem
. - Un certificado de clave pública de cliente guardado como
client-cert.pem
. - Una clave privada de cliente guardada como
client-key.pem
.
Según la herramienta que utilice para conectarse, estos tres elementos se especifican de forma diferente. Por ejemplo, al conectarse mediante un cliente MySQL, estos tres archivos son los valores para las opciones de comando --ssl-ca
, --ssl-cert
y --ssl-key
, respectivamente. Para ver un ejemplo de conexión con un cliente MySQL y SSL/TLS, consulte Conexión con un cliente MySQL .
Verificación de identidad del servidor
La verificación de la identidad del servidor depende de la configuración de la jerarquía de la autoridad de certificación (CA) del servidor de su instancia de Cloud SQL.
En las instancias que utilizan una CA individual, la verificación de la CA también verifica la identidad del servidor, ya que cada instancia tiene una CA única. En las instancias que utilizan una CA compartida, es necesario verificar el nombre de host junto con la CA para verificar la identidad del servidor, ya que las CA del servidor se comparten entre las instancias.
Si tiene una CA por instancia, puede realizar la verificación de identidad del servidor basada en nombres DNS solo para las instancias configuradas con Conexión de Servicio Privado. Si tiene una CA compartida, puede realizar la verificación de identidad del servidor basada en nombres DNS para todos los tipos de instancias, es decir, Conexión de Servicio Privado , Acceso a Servicio Privado e instancias con IP pública.
Si está utilizando una CA administrada por el cliente, puede verificar la cadena de confianza de la CA y realizar una verificación de identidad del servidor basada en nombres DNS para cualquier tipo de instancia que utilice una CA administrada por el cliente para su serverCAmode
.
Al seleccionar la opción de CA administrada por el cliente para su instancia, puede insertar nombres DNS personalizados en el campo SAN del certificado del servidor. Para obtener más información, consulte Editar un campo SAN personalizado .
Puede ver qué jerarquía de CA está configurada para una instancia de Cloud SQL consultando los detalles de la instancia. Para obtener más información, consulte Ver información de la instancia .
Habilitar la verificación de identidad del servidor
Si selecciona CA compartida como el modo de CA del servidor de su instancia de Cloud SQL o si configura nombres DNS personalizados usando valores SAN personalizados , le recomendamos que también habilite la verificación de identidad del servidor.
Las instancias que usan una CA compartida como modo de CA del servidor contienen el nombre DNS de la instancia en el campo Nombre Alternativo del Sujeto (SAN) del certificado del servidor. Puede obtener este nombre DNS mediante la API de búsqueda de instancias y utilizando la respuesta como nombre de host para la verificación de identidad del servidor. Debe configurar la resolución DNS para el nombre DNS.
Para habilitar la verificación de identidad del servidor para una instancia que utiliza una CA compartida, complete los siguientes pasos:
Recuperar el nombre DNS.
Para ver información resumida sobre una instancia de Cloud SQL, incluido el nombre DNS de la instancia, utilice el comando
gcloud sql instances describe
:gcloud sql instances describe INSTANCE_NAME \ --project=PROJECT_ID
Realice las siguientes sustituciones:
- INSTANCE_NAME : el nombre de la instancia de Cloud SQL
- PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene la instancia
En la respuesta, busque el campo
dnsNames:
Este campo puede devolver varios nombres DNS con los siguientes formatos:Configuración de red Formato de nombre DNS Nivel de nombre Conexión de servicio privado o dirección IP pública INSTANCE_UID . PROJECT_DNS_LABEL . REGION_NAME .sql.goog.
Ejemplo :
1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog.
Instancia Acceso a servicios privados INSTANCE_UID . PROJECT_DNS_LABEL . REGION_NAME .sql-psa.goog.
Ejemplo :1a23b4cd5e67.1a2b345c6d27.us-central1.sql-psa.goog.
Instancia
Cree el registro DNS en una zona DNS . Si se conecta de forma privada, cree el registro DNS en una zona DNS privada de la red de nube virtual privada (VPC) correspondiente.
Al conectarse a la instancia de Cloud SQL para MySQL, configure el nombre DNS como nombre de host. A continuación, habilite la verificación de identidad del servidor en su cliente.
Por ejemplo, al usar el cliente MySQL, especifique el indicador
--ssl-mode=VERIFY_IDENTITY
. Otros controladores de cliente MySQL tienen indicadores de configuración similares.
¿Qué sigue?
- Administre certificados SSL/TLS en su instancia de Cloud SQL.
- Obtenga más información sobre cómo se maneja el cifrado en Google Cloud .
- Conéctese a su instancia de Cloud SQL mediante certificados SSL/TLS.
- Obtenga más información sobre cómo MySQL utiliza SSL/TLS .