Usa una autoridad certificadora (AC) administrada por el cliente

En esta página, se describe cómo usar la opción de la AC administrada por el cliente como el modo de AC del servidor para tu instancia de Cloud SQL.

Descripción general

Con la opción de AC administrada por el cliente, configuras tu propio grupo y AC en Certificate Authority Service (servicio de AC). Cuando seleccionas la opción de AC administrada por el cliente, configuras la jerarquía de AC y administras la rotación de los certificados de AC para tus instancias de Cloud SQL.

Antes de poder crear una instancia de Cloud SQL con la opción de AC administrada por el cliente, debes crear un grupo de AC en la misma región que tu instancia y, al menos, una AC en ese grupo con el servicio de AC. La AC puede ser una AC raíz o una AC subordinada. También tienes la opción de crear una AC subordinada en el servicio de AC y, luego, encadenarla a una AC raíz externa. Cuando creas la instancia, especificas el grupo de AC. Tu solicitud se delega a una cuenta de servicio específica del proyecto, que tiene permiso para usar el grupo de AC. La cuenta de servicio solicita una AC del grupo, y Cloud SQL usa esa AC para firmar el certificado del servidor de la instancia.

Para el modo de AC del servidor de tu instancia en Cloud SQL, puedes elegir entre las siguientes tres opciones:

  • AC interna por instancia
  • AC compartida administrada por Google
  • AC administrada por el cliente

Puedes elegir la opción de AC administrada por el cliente si necesitas administrar tu propia AC por motivos de cumplimiento. Para obtener más información sobre el uso de las otras opciones, consulta Cómo autorizar con certificados SSL/TLS.

Flujo de trabajo

Para usar la opción de AC administrada por el cliente, el flujo de trabajo es el siguiente:

  1. Crea una cuenta de servicio para tu proyecto de Cloud SQL.
  2. Crea un grupo de AC en el Servicio de AC.
  3. Crea una AC en el Servicio de AC.
  4. Crea una instancia de Cloud SQL que use la AC. Cuando creas tu instancia, delegas el permiso a la cuenta de servicio para que firme el certificado del servidor con el grupo de AC que creaste.

Antes de comenzar

Antes de usar la opción de AC administrada por el cliente, asegúrate de cumplir con los siguientes requisitos.

Roles obligatorios

Para obtener los permisos que necesitas para crear una cuenta de servicio específica de Cloud SQL, pídele a tu administrador que te otorgue el rol de IAM de Creador de cuentas de servicio (roles/iam.serviceAccountCreator) en cada proyecto individual. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

Para obtener los permisos que necesitas para crear un grupo de AC y una AC, pídele a tu administrador que te otorgue el rol de IAM Administrador de operaciones de servicios de AC(roles/privateca.caManager) en el servicio de AC. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

Crea una cuenta de servicio específica del proyecto

En el proyecto en el que planeas crear tus instancias de Cloud SQL, crea una cuenta de servicio dedicada que controlará la solicitud para crear y firmar los certificados del servidor de tus instancias de Cloud SQL.

gcloud

Ejecuta el siguiente comando para crear una cuenta de servicio para tu proyecto de Cloud SQL:

gcloud beta services identity create \
  --service=sqladmin.googleapis.com \
  --project=PROJECT_ID

Reemplaza PROJECT_ID por el ID del proyecto en el que planeas crear tus instancias de Cloud SQL.

El comando crea una cuenta de servicio llamada service-PROJECT_ID@gcp-sa-cloud-sql.iam.gserviceaccount.com en el proyecto. Anota el nombre de la cuenta de servicio Solicitante del certificado de servicio de AC.

Crear grupo de CA

Crea un grupo de AC en el Servicio de AC.

Puedes crear un grupo de AC en el mismo proyecto en el que planeas crear tus instancias de Cloud SQL o en un proyecto diferente. Sin embargo, si creas el grupo de AC en un proyecto diferente, es posible que los Controles del servicio de VPC te bloqueen para crear instancias de Cloud SQL según la política de la organización. Para solucionar el problema, asegúrate de que el proyecto que aloja el grupo de AC y la AC, y el proyecto que aloja Cloud SQL pertenezcan al mismo perímetro de servicio. Para obtener más información, consulta Périmetros de servicio y Administra perímetros de servicio.

Para crear un grupo de AC, sigue las instrucciones en Crea un grupo de AC. Puedes aceptar los valores predeterminados del grupo de AC con los siguientes ajustes de configuración necesarios:

  • Crea el grupo de AC en la misma región en la que planeas crear tu instancia de Cloud SQL. Para obtener una lista de las regiones compatibles con Cloud SQL, consulta Regiones.
  • Permite solicitudes de certificados basadas en la configuración.
  • Permite nombres de DNS en los nombres alternativos de entidad (SAN). Cuando configures las restricciones de identidad del grupo de AC, no establezcas ninguna restricción en el formato de los nombres de DNS que puedan entrar en conflicto con lo que Cloud SQL podría agregar a la SAN.

Proporciona a la cuenta de servicio acceso al grupo de AC

Para asegurarte de que la cuenta de servicio tenga los permisos para solicitar y firmar certificados para tus instancias de Cloud SQL, otorga el siguiente rol a la cuenta de servicio del grupo de AC que creaste:

  • roles/privateca.certificateRequester

gcloud

Ejecuta el comando gcloud privateca pools para otorgarle a la cuenta de servicio acceso al grupo de AC:

gcloud privateca pools add-iam-policy-binding CA_POOL_ID \
  --project=PROJECT_ID \
  --location=REGION \
  --member serviceAccount:SERVICE_ACCOUNT_NAME \
  --role=roles/privateca.certificateRequester

Realiza los siguientes reemplazos:

  • CA_POOL_ID por el ID del grupo de AC que creaste.
  • PROJECT_ID por el ID del proyecto en el que planeas crear tus instancias de Cloud SQL.
  • REGION por la región en la que creaste el grupo de AC.
  • SERVICE_ACCOUNT_NAME con el nombre de la cuenta de servicio de Solicitante de certificados de servicio de AC que creaste para el proyecto anteriormente.

Crea una AC en el grupo de AC

Crea al menos una AC en el grupo de AC que creaste.

Puedes crear una AC raíz o una AC subordinada.

Para crear una AC raíz, sigue las instrucciones en Cómo crear una AC raíz. Puedes aceptar los valores predeterminados de la AC, pero asegúrate de crearla en el estado Habilitada.

Cuando configures el algoritmo y el tamaño de la clave de AC, podrás seleccionar cualquier algoritmo y tamaño de clave. Cloud SQL genera sus certificados de servidor con claves de curva elíptica EC P-384 (SHA-384), pero tus claves criptográficas de AC no tienen que coincidir.

Si creas una AC subordinada, primero debes crear y configurar tu AC raíz.

Cree una instancia de Cloud SQL

Para crear una instancia de Cloud SQL que use la opción de AC administrada por el cliente, haz lo siguiente.

Console

No puedes usar la consola de Google Cloud para crear instancias que usen la opción de AC administrada por el cliente durante la versión preliminar.

En su lugar, usa el comando gcloud beta sql instances create.

gcloud

gcloud beta sql instances create "INSTANCE_NAME" \
  --project=PROJECT_ID \
  --region=REGION \
  --server-ca-mode=CUSTOMER_MANAGED_CAS_CA \
  --server-ca-pool=projects/PROJECT_ID_CAS/locations/REGION/caPools/CA_POOL_ID

Realiza los siguientes reemplazos:

  • INSTANCE_NAME por el nombre de la instancia de Cloud SQL que deseas crear.
  • PROJECT_ID por el ID del proyecto en el que planeas crear tus instancias de Cloud SQL.
  • PROJECT_ID_CAS por el ID del proyecto en el que creaste tu CA_POOL_ID. Este proyecto puede ser el mismo o diferente del que quieres crear tu instancia de Cloud SQL.
  • REGION por la región en la que creaste el grupo de AC. Debes crear tu instancia en la misma región que el grupo de AC.
  • CA_POOL_ID por el ID del grupo de AC que creaste.

REST

Para crear una instancia de Cloud SQL que use la opción de AC administrada por el cliente, usa el método instances.insert y especifica las siguientes propiedades:

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID el ID del proyecto en el que planeas crear tus instancias de Cloud SQL.
  • PROJECT_ID_CAS es el ID del proyecto en el que creaste tu CA_POOL_ID. Este proyecto puede ser el mismo o diferente del que quieres crear tu instancia de Cloud SQL.
  • INSTANCE_ID es el nombre de la instancia de Cloud SQL que deseas crear.
  • REGION es la región en la que creaste el grupo de AC. Debes crear tu instancia en la misma región que el grupo de AC.
  • CA_POOL_ID por el ID del grupo de AC que creaste.

Método HTTP y URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances

Cuerpo JSON de la solicitud:

{
  "name":"INSTANCE_ID",
  "region":"REGION",
  "databaseVersion": "DATABASE_VERSION",
  "settings":{
     "ipConfiguration":
      {
         "serverCaPool": "projects/PROJECT_ID_CAS/locations/REGION/caPools/CA_POOL_ID",
         "serverCaMode": "CUSTOMER_MANAGED_CAS_CA"
      }
   }
}

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2025-01-16T02:32:12.281Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID_CSQL/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Solucionar problemas

Problema Soluciona problemas

Recibirás el siguiente mensaje de error:

PERMISSION_DENIED: Permission privateca.certificates.create denied on CA_POOL_ID
Asegúrate de haber otorgado el rol roles/privateca.certificateRequester a la cuenta de servicio que creaste para tu proyecto de Cloud SQL. Para obtener más información, consulta Cómo proporcionar a la cuenta de servicio acceso al grupo de AC.

Recibirás el siguiente mensaje de error:

PERMISSION_DENIED: Request is prohibited by organization's policy vpcServiceControlsUniqueIdentifier VPC_SERVICE_CONTROLS_UNIQUE_IDENTIFIER.
Asegúrate de configurar los Controles del servicio de VPC de modo que el proyecto que aloja el grupo de AC y la AC de CA Service y el proyecto que aloja Cloud SQL pertenezcan al mismo perímetro de servicio. Para obtener más información, consulta Périmetros de servicio y Administra perímetros de servicio.

Recibes uno de los siguientes mensajes de error de INVALID ARGUMENT:

  • Public key algorithm is not permitted by the CaPool's issuance policy.
  • This CaPool's issuance policy does not permit passthrough subjects and/or subject alternative names, and thus can only be used with the REFLECTED_SPIFFE subject mode.
  • Config issuance mode is not permitted by the CaPool's issuance policy.

Verifica la configuración del grupo de AC y de la AC. Asegúrate de cumplir con todos los requisitos que se indican en Crea un grupo de AC y Crea una AC en el grupo de AC.

Recibirás el siguiente mensaje de error:

RESOURCE_EXHAUSTED

Esto representa problemas de cuota con el servicio de AC. Verifica la cuota del servicio de CA en tu proyecto. Verifica si es posible que estés usando solicitudes en tu grupo de AC fuera de Cloud SQL. Para obtener más información, consulta Cuotas y límites.

Recibirás el siguiente mensaje de error:

NOT FOUND: parent resource CA_POOL_ID not found.
Verifica el ID, la ubicación y el nombre del grupo de AC que especificaste cuando creaste tu instancia de Cloud SQL. Asegúrate de no haber cometido errores tipográficos.

Recibirás el siguiente mensaje de error:

FAILED_PRECONDITION: There are no enabled CAs in the CaPool. Please ensure that there is at least one enabled Certificate Authority to issue a certificate.
Asegúrate de haber creado al menos una AC en el grupo de AC que especificaste cuando creaste tu instancia de Cloud SQL y de que la AC esté en estado habilitado.

Recibirás el siguiente mensaje de error:

FAILED_PRECONDITION: Per-Product Per-Project Service Account (P4 SA) SERVICE_ACCOUNT_NAME not found for project PROJECT_ID.
Asegúrate de haber creado la cuenta de servicio para tu proyecto de Cloud SQL. Para obtener más información, consulta Cómo crear una cuenta de servicio específica del proyecto.

Recibirás el siguiente mensaje de error:

INVALID ARGUMENT: Invalid format for server CA pool.

Asegúrate de haber especificado el grupo de AC en el formato correcto:

projects/PROJECT_ID/locations/REGION/caPools/CA_POOL_ID

Recibirás el siguiente mensaje de error:

INVALID ARGUMENT: The instance's server CA pool must be in the same region as the instance.

Asegúrate de que el grupo de AC esté en la misma región que la instancia de Cloud SQL que deseas crear.