En esta página se describe cómo usar la opción de autoridad de certificación (CA) gestionada por el cliente como modo de CA del servidor de tu instancia de Cloud SQL.
Información general
Con la opción de AC gestionada por el cliente, puedes configurar tu propio grupo de AC y tu propia AC en Servicio de Autoridades de Certificación (CA Service). Si seleccionas la opción de AC gestionada por el cliente, debes configurar la jerarquía de AC y gestionar la rotación de los certificados de AC de tus instancias de Cloud SQL.
Antes de crear una instancia de Cloud SQL con la opción de AC gestionada por el cliente, debe crear un grupo de ACs en la misma región que su instancia y al menos una AC en ese grupo mediante el servicio de ACs. La AC puede ser una AC raíz o una AC subordinada. También puedes crear una AC subordinada en el servicio de AC y, a continuación, encadenarla a una AC raíz externa. Cuando creas la instancia, especificas el grupo de ACs. Tu solicitud se delega en una cuenta de servicio específica del proyecto, que tiene permiso para usar el grupo de CAs. La cuenta de servicio solicita una AC del grupo y Cloud SQL usa esa AC para firmar el certificado de servidor de la instancia.
En el modo de CA de servidor de tu instancia de Cloud SQL, puedes elegir entre estas tres opciones:
- AC interna por instancia
- Autoridad de certificación compartida gestionada por Google
- AC gestionada por el cliente
Puedes elegir la opción de CA gestionada por el cliente si necesitas gestionar tu propia CA por motivos de cumplimiento. Para obtener más información sobre cómo usar las otras opciones, consulta Autorizar con certificados SSL/TLS.
Flujo de trabajo
Para usar la opción de CA gestionada 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 ACs en el Servicio de Autoridades de Certificación.
- Crea una AC en el servicio de AC.
- Crea una instancia de Cloud SQL que use la CA. Cuando creas tu instancia, delegas el permiso en la cuenta de servicio para firmar el certificado de servidor con el grupo de ACs que has creado.
Antes de empezar
Antes de usar la opción de CA gestionada por el cliente, asegúrese de que cumple los siguientes requisitos.
Roles obligatorios
Para obtener los permisos que necesitas para crear una cuenta de servicio específica de Cloud SQL, pide a tu administrador que te conceda el rol de IAM Creador de cuentas de servicio (roles/iam.serviceAccountCreator
) en cada proyecto.
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
Para obtener los permisos que necesitas para crear un grupo de ACs y una AC, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Gestor de operaciones de servicio de ACs(roles/privateca.caManager
) en el servicio de ACs.
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
Crear una cuenta de servicio específica de un proyecto
En el proyecto en el que quieras crear tus instancias de Cloud SQL, crea una cuenta de servicio específica que gestione la solicitud para crear y firmar los certificados de 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
Sustituye PROJECT_ID
por el ID del proyecto en el que quieras 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 del Servicio de Autoridades de Certificación.
Crear un grupo de autoridades de certificación
Crea un grupo de ACs en el Servicio de Autoridades de Certificación.
Puedes crear un grupo de ACs en el mismo proyecto en el que tienes previsto crear tus instancias de Cloud SQL o en otro proyecto. Sin embargo, si creas el grupo de CAs en otro proyecto, es posible que Controles de Servicio de VPC te impida crear instancias de Cloud SQL en función de la política de la organización. Para solucionar el problema, asegúrate de que el proyecto que aloja el grupo de CAs y la CA, así como el proyecto que aloja Cloud SQL, pertenezcan al mismo perímetro de servicio. Para obtener más información, consulta los artículos Perímetros de servicio y Gestionar perímetros de servicio.
Para crear un grupo de autoridades de certificación, sigue las instrucciones que se indican en el artículo Crear un grupo de autoridades de certificación. Puede aceptar los valores predeterminados del grupo de CAs con los siguientes ajustes de configuración obligatorios:
- Crea el grupo de CA en la misma región en la que quieras crear tu instancia de Cloud SQL. Para ver una lista de las regiones admitidas por Cloud SQL, consulta Regiones.
- Permite solicitudes de certificados basadas en la configuración.
- Permite nombres DNS en nombres alternativos del sujeto (SAN). Cuando configures las restricciones de identidad del pool de CAs, no definas ninguna restricción en el formato de los nombres de DNS que puedan entrar en conflicto con lo que Cloud SQL pueda añadir al SAN.
- Si configuras las restricciones de identidad del grupo de CAs, asegúrate de permitir las direcciones IP como formato en el SAN.
Proporcionar a la cuenta de servicio acceso al grupo de CAs
Para asegurarte de que la cuenta de servicio tenga los permisos necesarios para solicitar y firmar certificados de tus instancias de Cloud SQL, asigna el siguiente rol a la cuenta de servicio del grupo de ACs que has creado:
roles/privateca.certificateRequester
gcloud
Ejecuta el comando
gcloud privateca pools
para conceder acceso a la cuenta de servicio al grupo de CAs:
gcloud privateca pools add-iam-policy-binding CA_POOL_ID \ --project=PROJECT_ID \ --location=REGION \ --member serviceAccount:SERVICE_ACCOUNT_NAME \ --role=roles/privateca.certificateRequester
Haz las siguientes sustituciones:
CA_POOL_ID
con el ID del grupo de ACs que has creado.PROJECT_ID
por el ID del proyecto en el que tienes previsto crear tus instancias de Cloud SQL.REGION
con la región en la que has creado el grupo de ACs.SERVICE_ACCOUNT_NAME
con el nombre de la cuenta de servicio Solicitante de certificados del servicio de CA que creaste anteriormente para el proyecto.
Crear una AC en el grupo de ACs
Crea al menos una autoridad de certificación en el grupo que has creado.
Puedes crear una AC raíz o una AC subordinada.
Para crear una AC raíz, sigue las instrucciones que se indican en Crear una AC raíz. Puedes aceptar los valores predeterminados de la AC, pero asegúrate de crearla en el estado Habilitado.
Cuando configures el tamaño de clave y el algoritmo de la autoridad de certificación, podrás seleccionar cualquier tamaño de clave y algoritmo. Cloud SQL genera sus certificados de servidor mediante claves de curva elíptica EC P-256 (SHA 256), pero no es necesario que las claves criptográficas de tu AC coincidan.Si creas una AC subordinada, primero debes crear y configurar tu AC raíz.
Para crear una AC subordinada en el servicio de AC, siga las instrucciones que se indican en el artículo Crear una AC subordinada.
Para crear una AC subordinada a partir de una AC raíz externa, sigue las instrucciones de Crear una AC subordinada a partir de una AC raíz externa.
Crear una instancia de Cloud SQL
Para crear una instancia de Cloud SQL que use la opción de CA gestionada por el cliente, haz lo siguiente.
Consola
No puedes usar la consola para crear instancias que usen la opción de CA gestionada por el cliente. Google Cloud Si creas una instancia con la Google Cloud consola, el modo predeterminado es el de CA compartida.
Para seleccionar otro modo de CA del servidor, 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
Haz las siguientes sustituciones:
INSTANCE_NAME
con el nombre de la instancia de Cloud SQL que quieras crear.DATABASE_VERSION
con elenum
de la versión de la instancia de Cloud SQL que quieras crear.PROJECT_ID
por el ID del proyecto en el que tienes previsto crear tus instancias de Cloud SQL.PROJECT_ID_CAS
por el ID del proyecto en el que has creado tu CA_POOL_ID. Este proyecto puede ser el mismo o diferente del proyecto en el que quieras crear tu instancia de Cloud SQL.REGION
con la región en la que has creado el grupo de ACs. Debes crear tu instancia en la misma región que el grupo de CAs.CA_POOL_ID
con el ID del grupo de ACs que has creado.
REST
Para crear una instancia de Cloud SQL que use la opción de CA gestionada por el cliente, utiliza el método instances.insert
y especifica las siguientes propiedades:
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_ID
el ID del proyecto en el que tienes previsto crear tus instancias de Cloud SQL.PROJECT_ID_CAS
el ID del proyecto en el que has creado tu CA_POOL_ID. Este proyecto puede ser el mismo o diferente del proyecto en el que quieras crear tu instancia de Cloud SQL.INSTANCE_ID
el nombre de la instancia de Cloud SQL que quieras crear.REGION
la región en la que has creado el grupo de ACs. Debes crear tu instancia en la misma región que el grupo de CAs.CA_POOL_ID
con el ID del grupo de ACs que has creado.
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, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "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 | Solución de problemas |
---|---|
Recibes el siguiente mensaje de error: PERMISSION_DENIED: Permission .
|
Asegúrate de haber asignado el rol roles/privateca.certificateRequester
a la cuenta de servicio que has creado para tu proyecto de Cloud SQL.
Para obtener más información, consulta Proporcionar a la cuenta de servicio acceso al grupo de CAs.
|
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 Controles de Servicio de VPC de forma que el proyecto que aloja el grupo y la AC de Servicio de Autoridades de Certificación, así como el proyecto que aloja Cloud SQL, pertenezcan al mismo perímetro de servicio. Para obtener más información, consulta los artículos Perímetros de servicio y Gestionar perímetros de servicio. |
Recibes uno de los siguientes mensajes de error
|
Comprueba los ajustes de configuración de tu grupo de CAs y de tu CA. Asegúrate de que cumples todos los requisitos que se indican en los artículos Crear un grupo de autoridades de certificación y Crear una autoridad de certificación en el grupo de autoridades de certificación. |
Recibes el siguiente mensaje de error:
|
Representa problemas de cuota con el servicio de CA. Verifica la cuota de Servicio de Autoridades de Certificación de tu proyecto. Comprueba si es posible que estés usando solicitudes en tu grupo de CAs 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.
|
Comprueba el ID, la ubicación y el nombre del grupo de CAs que especificaste al crear tu instancia de Cloud SQL. Asegúrate de que no haya errores ortográ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 que has creado al menos una CA en el grupo de CAs que especificaste al crear tu instancia de Cloud SQL y de que la CA está habilitada. |
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 que has creado la cuenta de servicio de tu proyecto de Cloud SQL. Para obtener más información, consulta el artículo Crear una cuenta de servicio específica de un proyecto. |
Recibes el siguiente mensaje de error: INVALID ARGUMENT: Invalid format for server CA pool.
|
Asegúrate de que has especificado el grupo de CAs con 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 CAs esté en la misma región que la instancia de Cloud SQL que quieras crear. |