Utilizza un'autorità di certificazione (CA) gestita dal cliente

Questa pagina descrive come utilizzare l'opzione dell'autorità di certificazione (CA) gestita dal cliente come modalità CA server per l'istanza Cloud SQL.

Panoramica

Con l'opzione CA gestita dal cliente, configuri il tuo pool di CA e la tua CA in Certificate Authority Service (CA Service). Quando selezioni l'opzione CA gestita dal cliente, configuri la gerarchia CA e gestisci la rotazione dei certificati CA per le tue istanze Cloud SQL.

Prima di poter creare un'istanza Cloud SQL con l'opzione CA gestita dal cliente, crea un pool di CA nella stessa regione dell'istanza e almeno una CA in quel pool utilizzando il servizio CA. La CA può essere una CA radice o una CA subordinata. Hai anche la possibilità di creare una CA subordinata in CA Service e poi concatenarla a una CA radice esterna. Quando crei l'istanza, specifichi il pool di CA. La tua richiesta viene delegata a un account di servizio specifico del progetto, che ha l'autorizzazione per utilizzare il pool di CA. L'account di servizio richiede una CA dal pool e Cloud SQL utilizza questa CA per firmare il certificato server per l'istanza.

Per la modalità CA server per l'istanza in Cloud SQL, puoi scegliere tra le seguenti tre opzioni:

  • CA interna per istanza
  • CA condivisa gestita da Google
  • CA gestita dal cliente

Potresti scegliere l'opzione CA gestita dal cliente se devi gestire la tua CA per motivi di conformità. Per saperne di più sull'utilizzo delle altre opzioni, consulta Autorizzazione con certificati SSL/TLS.

Flusso di lavoro

Per utilizzare l'opzione CA gestita dal cliente, il flusso di lavoro è il seguente:

  1. Crea un account di servizio per il tuo progetto Cloud SQL.
  2. Crea un pool di CA nel servizio CA.
  3. Crea una CA in CA Service.
  4. Crea un'istanza Cloud SQL che utilizza l'autorità di certificazione. Quando crei l'istanza, deleghi l'autorizzazione al account di servizio per firmare il certificato del server con il pool di CA che hai creato.

Prima di iniziare

Prima di utilizzare l'opzione CA gestita dal cliente, assicurati di soddisfare i seguenti requisiti.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per creare un account di servizio specifico per Cloud SQL, chiedi all'amministratore di concederti il ruolo IAM Creazione account di servizio (roles/iam.serviceAccountCreator) per ogni singolo progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Per ottenere le autorizzazioni necessarie per creare un pool di CA e una CA, chiedi all'amministratore di concederti il ruolo IAM CA Service Operation Manager(roles/privateca.caManager) nel servizio CA. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Crea un account di servizio specifico per il progetto

Nel progetto in cui prevedi di creare le istanze Cloud SQL, crea un account di servizio dedicato che gestirà la richiesta di creazione e firma dei certificati del server per le istanze Cloud SQL.

gcloud

Esegui questo comando per creare un account di servizio per il tuo progetto Cloud SQL:

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

Sostituisci PROJECT_ID con l'ID del progetto in cui prevedi di creare le istanze Cloud SQL.

Il comando crea un account di servizio denominato service-PROJECT_ID@gcp-sa-cloud-sql.iam.gserviceaccount.com nel progetto. Prendi nota del nome del account di servizio CA Service Certificate Requester.

Crea un pool di CA

Crea un pool di CA nel servizio CA.

Puoi creare un pool di CA nello stesso progetto in cui prevedi di creare le istanze Cloud SQL oppure puoi creare il pool di CA in un progetto diverso. Tuttavia, se crei il pool di CA in un progetto diverso, i Controlli di servizio VPC potrebbero impedirti di creare istanze Cloud SQL a seconda delle norme dell'organizzazione. Per risolvere il problema, assicurati che il progetto che ospita il pool di CA e la CA e il progetto che ospita Cloud SQL appartengano allo stesso perimetro di servizio. Per saperne di più, vedi Perimetri di servizio e Gestire i perimetri di servizio.

Per creare un pool di CA, segui le istruzioni riportate in Creare un pool di CA. Puoi accettare i valori predefiniti per il pool di CA, con le seguenti impostazioni di configurazione obbligatorie:

  • Crea il pool di CA nella stessa regione in cui prevedi di creare l'istanza Cloud SQL. Per un elenco delle regioni supportate da Cloud SQL, consulta Regioni.
  • Consenti richieste di certificati basate sulla configurazione.
  • Consenti nomi DNS nei nomi alternativi del soggetto (SAN). Quando configuri i vincoli di identità del pool di CA, non impostare restrizioni sul formato per i nomi DNS che potrebbero entrare in conflitto con ciò che Cloud SQL potrebbe aggiungere al SAN.

Fornisci al account di servizio l'accesso al pool di CA

Per assicurarti che il account di servizio disponga delle autorizzazioni per richiedere e firmare i certificati per le tue istanze Cloud SQL, concedi il seguente ruolo aaccount di serviziont per il pool di CA che hai creato:

  • roles/privateca.certificateRequester

gcloud

Esegui il comando gcloud privateca pools per concedere all'account di servizio l'accesso al pool di 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

Effettua le seguenti sostituzioni:

  • CA_POOL_ID con l'ID del pool di CA che hai creato.
  • PROJECT_ID con l'ID del progetto in cui intendi creare le istanze Cloud SQL.
  • REGION con la regione in cui hai creato il pool di CA.
  • SERVICE_ACCOUNT_NAME con il nome dell'account di servizio Richiedente certificato di servizio CA che hai creato in precedenza per il progetto.

Crea una CA nel pool di CA

Crea almeno una CA nel pool di CA che hai creato.

Puoi creare un'autorità di certificazione principale o un'autorità di certificazione subordinata.

Per creare una CA radice, segui le istruzioni riportate in Creare una CA radice. Puoi accettare i valori predefiniti per la CA, ma assicurati di creare la CA nello stato Attivata.

Quando configuri le dimensioni e l'algoritmo della chiave CA, puoi selezionare qualsiasi dimensione e algoritmo della chiave. Cloud SQL genera i certificati server utilizzando chiavi a curva ellittica EC P-384 (SHA-384), ma le chiavi di crittografia della CA non devono corrispondere.

Se crei una CA subordinata, devi prima creare e configurare la CA radice.

Crea un'istanza Cloud SQL

Per creare un'istanza Cloud SQL che utilizza l'opzione CA gestita dal cliente, fai quanto segue.

Console

Non puoi utilizzare la console Google Cloud per creare istanze che utilizzano l'opzione CA gestita dal cliente. Se crei un'istanza utilizzando la consoleGoogle Cloud , la modalità CA condivisa è quella predefinita.

Per selezionare una modalità CA server diversa, utilizza il 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

Effettua le seguenti sostituzioni:

  • INSTANCE_NAME con il nome dell'istanza Cloud SQL che vuoi creare.
  • DATABASE_VERSION con enum della versione dell'istanza Cloud SQL che vuoi creare. L'opzione CA gestita dal cliente è supportata solo su MySQL 8.0.30 e versioni successive.
  • PROJECT_ID con l'ID del progetto in cui intendi creare le istanze Cloud SQL.
  • PROJECT_ID_CAS con l'ID del progetto in cui hai creato il tuo CA_POOL_ID. Questo progetto potrebbe essere lo stesso o diverso da quello in cui vuoi creare l'istanza Cloud SQL.
  • REGION con la regione in cui hai creato il pool di CA. Devi creare l'istanza nella stessa regione del pool di CA.
  • CA_POOL_ID con l'ID del pool di CA che hai creato.

REST

Per creare un'istanza Cloud SQL che utilizza l'opzione CA gestita dal cliente, utilizza il metodo instances.insert e specifica le seguenti proprietà:

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_ID l'ID del progetto in cui intendi creare le istanze Cloud SQL.
  • PROJECT_ID_CAS l'ID del progetto in cui hai creato il tuo CA_POOL_ID. Questo progetto potrebbe essere lo stesso o diverso da quello in cui vuoi creare l'istanza Cloud SQL.
  • INSTANCE_ID il nome dell'istanza Cloud SQL che vuoi creare.
  • REGION la regione in cui hai creato il pool di CA. Devi creare l'istanza nella stessa regione del pool di CA.
  • CA_POOL_ID con l'ID del pool di CA che hai creato.

Metodo HTTP e URL:

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

Corpo JSON della richiesta:

{
  "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"
      }
   }
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "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"
}

Risoluzione dei problemi

Problema Risoluzione dei problemi

Ricevi il seguente messaggio di errore:

PERMISSION_DENIED: Permission privateca.certificates.create denied on CA_POOL_ID.
Assicurati di aver concesso il ruolo roles/privateca.certificateRequester all'account di servizio che hai creato per il tuo progetto Cloud SQL. Per ulteriori informazioni, vedi Concedere al account di servizio l'accesso al pool di CA.

Ricevi il seguente messaggio di errore:

PERMISSION_DENIED: Request is prohibited by organization's policy vpcServiceControlsUniqueIdentifier VPC_SERVICE_CONTROLS_UNIQUE_IDENTIFIER.
Assicurati di configurare i Controlli di servizio VPC in modo che il progetto che ospita il pool di CA e la CA del servizio CA e il progetto che ospita Cloud SQL appartengano allo stesso perimetro di servizio. Per saperne di più, vedi Perimetri di servizio e Gestire i perimetri di servizio.

Ricevi uno dei seguenti messaggi di errore 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.

Controlla le impostazioni di configurazione del pool di CA e della CA. Assicurati di soddisfare tutti i requisiti elencati in Creare un pool di CA e Creare una CA nel pool di CA.

Ricevi il seguente messaggio di errore:

RESOURCE_EXHAUSTED

Rappresenta i problemi di quota con CA Service. Verifica la quota per il servizio CA nel tuo progetto. Controlla se potresti utilizzare richieste nel pool di CA al di fuori di Cloud SQL. Per ulteriori informazioni, consulta Quote e limiti.

Ricevi il seguente messaggio di errore:

NOT FOUND: parent resource CA_POOL_ID not found.
Controlla l'ID progetto, la posizione e il nome del pool di CA che hai specificato quando hai creato l'istanza Cloud SQL. Assicurati di non aver commesso errori di battitura.

Ricevi il seguente messaggio di errore:

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.
Assicurati di aver creato almeno una CA nel pool di CA specificato durante la creazione dell'istanza Cloud SQL e che la CA sia nello stato abilitato.

Ricevi il seguente messaggio di errore:

FAILED_PRECONDITION: Per-Product Per-Project Service Account (P4 SA) SERVICE_ACCOUNT_NAME not found for project PROJECT_ID.
Assicurati di aver creato il account di servizio per il tuo progetto Cloud SQL. Per saperne di più, vedi Creare un account di servizio specifico per il progetto.

Ricevi il seguente messaggio di errore:

INVALID ARGUMENT: Invalid format for server CA pool.

Assicurati di aver specificato il pool di CA nel formato corretto:

projects/PROJECT_ID/locations/REGION/caPools/CA_POOL_ID

Ricevi il seguente messaggio di errore:

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

Assicurati che il pool di CA si trovi nella stessa regione dell'istanza Cloud SQL che vuoi creare.