En esta página, se describe cómo usar la opción de autoridad de certificación (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 CA administrada por el cliente, configuras tu propio grupo de CA y CA en Certificate Authority Service (servicio de CA). Cuando seleccionas la opción de CA administrada por el cliente, configuras la jerarquía de la CA y administras la rotación de los certificados de CA para tus instancias de Cloud SQL.
Antes de crear una instancia de Cloud SQL con la opción de CA administrada por el cliente, debes crear un grupo de CA en la misma región que tu instancia y, al menos, una CA en ese grupo con el servicio de CA. La CA puede ser una CA raíz o una CA subordinada. También tienes la opción de crear una CA subordinada en el servicio de CA y, luego, encadenarla a una CA raíz externa. Cuando creas la instancia, especificas el grupo de CA. Tu solicitud se delega a una cuenta de servicio específica del proyecto, que tiene permiso para usar el grupo de CA. La cuenta de servicio solicita una CA del grupo, y Cloud SQL usa esa CA para firmar el certificado del servidor de la instancia.
Para el modo de CA del servidor de tu instancia en Cloud SQL, puedes elegir entre las siguientes tres opciones:
- CA interna por instancia
- AC compartida administrada por Google
- CA administrada por el cliente
Puedes elegir la opción de CA administrada por el cliente si necesitas administrar tu propia CA por motivos de cumplimiento. Para obtener más información sobre el uso de las otras opciones, consulta Autoriza con certificados SSL/TLS.
Flujo de trabajo
Para usar la opción de CA administrada por el cliente, el flujo de trabajo es el siguiente:
- Crea una cuenta de servicio para tu proyecto de Cloud SQL.
- Crea un grupo de CA en el Servicio de CA.
- Crea una CA en el Servicio de CA.
- Crea una instancia de Cloud SQL que use la CA. Cuando creas tu instancia, delegas el permiso a la cuenta de servicio para firmar el certificado del servidor con el grupo de AC que creaste.
Antes de comenzar
Antes de usar la opción de CA 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 de Administrador de operaciones del servicio de CA(roles/privateca.caManager
) en el servicio de CA.
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 para 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. Toma nota del nombre de la cuenta de servicio Solicitante del certificado de servicio de CA.
Crear grupo de CA
Crea un grupo de CA en el Servicio de CA.
Puedes crear un grupo de CA 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 CA en un proyecto diferente, es posible que los Controles del servicio de VPC te impidan 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 Perímetros de servicio y Administra perímetros de servicio.
Para crear un grupo de CA, sigue las instrucciones en Crea un grupo de CA. Puedes aceptar los valores predeterminados para el grupo de CA con los siguientes parámetros de configuración obligatorios:
- Crea el grupo de CA 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 nombres alternativos de sujeto (SAN). Cuando configures las restricciones de identidad del grupo de CA, no establezcas ninguna restricción en el formato para los nombres de DNS que puedan entrar en conflicto con lo que Cloud SQL podría agregar al SAN.
Proporciona a la cuenta de servicio acceso al grupo de CA
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 para el grupo de AC que creaste:
roles/privateca.certificateRequester
gcloud
Ejecuta el comando
gcloud privateca pools
para otorgar acceso a la cuenta de servicio al grupo de CA:
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 CA 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 CA.SERVICE_ACCOUNT_NAME
por el nombre de la cuenta de servicio de Solicitante de certificados de servicio de la CA que creaste para el proyecto anteriormente.
Crea una CA en el grupo de CA
Crea al menos una CA en el grupo de CA que creaste.
Puedes crear una CA raíz o una CA subordinada.
Para crear una CA raíz, sigue las instrucciones en Crea una CA raíz. Puedes aceptar los valores predeterminados para la CA, pero asegúrate de crearla en el estado Habilitada.
Cuando configures el algoritmo y el tamaño de la clave de la CA, 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 las claves criptográficas de tu CA no tienen que coincidir.Si creas una CA subordinada, primero debes crear y configurar tu CA raíz.
Para crear una CA subordinada en el servicio de CA, sigue las instrucciones en Crea una CA subordinada.
Para crear una CA subordinada a partir de una CA raíz externa, sigue las instrucciones en Crea una CA subordinada a partir de una CA raíz externa.
Cree una instancia de Cloud SQL
Para crear una instancia de Cloud SQL que use la opción de CA 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 CA administrada por el cliente. Si creas una instancia con la consola deGoogle Cloud , el modo predeterminado es el de CA compartida.
Para seleccionar un modo de CA del servidor diferente, usa el comando gcloud sql instances create
.
gcloud
gcloud sql instances create "INSTANCE_NAME" \ --database-version=DATABASE_VERSION \ --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.DATABASE_VERSION
con elenum
de la versión de la instancia de Cloud SQL que deseas crear. La opción de CA administrada por el cliente solo es compatible con MySQL 8.0.30 y versiones posteriores.PROJECT_ID
por el ID del proyecto en el que planeas crear tus instancias de Cloud SQL.PROJECT_ID_CAS
con el ID del proyecto en el que creaste tu CA_POOL_ID Este proyecto puede ser el mismo o diferente del que deseas usar para crear tu instancia de Cloud SQL.REGION
por la región en la que creaste el grupo de CA. Debes crear tu instancia en la misma región que el grupo de CA.CA_POOL_ID
por el ID del grupo de CA que creaste.
REST
Para crear una instancia de Cloud SQL que use la opción de CA 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 SQLPROJECT_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 deseas usar para 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 CA.CA_POOL_ID
por el ID del grupo de CA 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 |
---|---|
Recibes el siguiente mensaje de error: PERMISSION_DENIED: Permission
|
Asegúrate de haber otorgado el rol de 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.
|
Recibes 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 CA y la CA de CA Service, y el proyecto que aloja Cloud SQL pertenezcan al mismo perímetro de servicio. Para obtener más información, consulta Perímetros de servicio y Administra perímetros de servicio. |
Tal vez recibas uno de los siguientes mensajes de error de
|
Verifica la configuración de tu grupo de AC y tu AC. Asegúrate de cumplir con todos los requisitos que se indican en Crea un grupo de CA y Crea una CA en el grupo de CA. |
Recibes el siguiente mensaje de error:
|
Representa problemas de cuota con el servicio de CA. Verifica la cuota del servicio de CA en tu proyecto. Verifica si es posible que estés usando solicitudes en tu grupo de CA fuera de Cloud SQL. Para obtener más información, consulta Cuotas y límites. |
Recibes el siguiente mensaje de error: NOT FOUND: parent resource CA_POOL_ID not found.
|
Verifica el ID del proyecto, la ubicación y el nombre del grupo de CA que especificaste cuando creaste tu instancia de Cloud SQL. Asegúrate de no haber cometido errores tipográficos. |
Recibes 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 CA en el grupo de CA que especificaste cuando creaste tu instancia de Cloud SQL y de que la CA esté en estado habilitado. |
Recibes 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 Crea una cuenta de servicio específica del proyecto. |
Recibes el siguiente mensaje de error: INVALID ARGUMENT: Invalid format for server CA pool.
|
Asegúrate de haber especificado el grupo de CA en el formato correcto: projects/PROJECT_ID/locations/REGION/caPools/CA_POOL_ID
|
Recibes 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 CA esté en la misma región que la instancia de Cloud SQL que deseas crear. |