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à dell'autorità di certificazione del server per l'istanza Cloud SQL.

Panoramica

Con l'opzione CA gestita dal cliente, puoi configurare 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 delle 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, devi creare un pool di CA nella stessa regione dell'istanza e almeno una CA in quel pool utilizzando il servizio CA. L'autorità di certificazione può essere una autorità di certificazione principale o una autorità di certificazione 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, specifica il pool di CA. La richiesta viene delegata a un account di servizio specifico del progetto, che ha l'autorizzazione per utilizzare il pool CA. L'account di servizio richiede una CA dal pool e Cloud SQL utilizza questa CA per firmare il certificato del server per l'istanza.

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

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

Potresti scegliere l'opzione della 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 in CA Service.
  3. Crea una CA in CA Service.
  4. Crea un'istanza Cloud SQL che utilizza la CA. Quando crei l'istanza, deleghe all'account di servizio l'autorizzazione per firmare il certificato del server con il pool di CA che hai creato.

Prima di iniziare

Prima di utilizzare l'opzione della 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 Creatore account di servizio (roles/iam.serviceAccountCreator) per ogni singolo progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestire 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 Gestore operazioni servizio CA(roles/privateca.caManager) nel servizio CA. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

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

Creare 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 il seguente comando per creare un account di servizio per il 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 hai previsto 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 dell'account di servizio CA Service Certificate Requester.

Crea un pool di CA

Crea un pool di CA in CA Service.

Puoi creare un pool di CA nello stesso progetto in cui prevedi di creare le istanze Cloud SQL oppure in un progetto diverso. Tuttavia, se crei il pool di CA in un altro progetto, Controlli di servizio VPC potrebbe impedirti di creare istanze Cloud SQL, a seconda dei criteri dell'organizzazione. Per risolvere il problema, assicurati che il progetto che ospita il pool CA e la CA e il progetto che ospita Cloud SQL appartengano allo stesso perimetro di servizio. Per saperne di più, consulta 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 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 i nomi DNS nei nomi alternativi dell'oggetto (SAN). Quando configuri i vincoli di identità del pool di CA, non impostare limitazioni sul formato dei nomi DNS che potrebbero essere in conflitto con ciò che Cloud SQL potrebbe aggiungere al SAN.
  • Se configuri i vincoli di identità per il pool di CA, assicurati di consentire gli indirizzi IP come formato nella SAN.

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

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

  • roles/privateca.certificateRequester

gcloud

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

Esegui 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 hai intenzione di 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 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 una subordinata.

Per creare una CA radice, segui le istruzioni riportate in Creare una CA radice. Puoi accettare i valori predefiniti per l'autorità di certificazione, ma assicurati di crearla 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 del server utilizzando chiavi con curve ellittiche EC P-256 (SHA 256), 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, segui questi passaggi.

Console

Non puoi utilizzare la console Google Cloud per creare istanze che utilizzano l'opzione CA gestita dal cliente durante la preview.

Utilizza invece il 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

Esegui le seguenti sostituzioni:

  • INSTANCE_NAME con il nome dell'istanza Cloud SQL che vuoi creare.
  • PROJECT_ID con l'ID del progetto in cui hai intenzione di 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 uguale 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, usa 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 hai intenzione di 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 uguale 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

Viene visualizzato 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 Fornire al service account l'accesso al pool CA.

Viene visualizzato 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 CA e la CA del servizio CA e il progetto che ospita Cloud SQL appartengano allo stesso perimetro di servizio. Per saperne di più, consulta 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 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.

Viene visualizzato il seguente messaggio di errore:

RESOURCE_EXHAUSTED

Indica problemi di quota con il servizio CA. 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.

Viene visualizzato 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 CA specificato quando hai creato l'istanza Cloud SQL. Assicurati di non aver commesso errori di battitura.

Viene visualizzato 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 quando hai creato l'istanza Cloud SQL e che la CA sia attiva.

Viene visualizzato 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 l'account di servizio per il tuo progetto Cloud SQL. Per ulteriori informazioni, vedi Creare un account di servizio specifico per il progetto.

Viene visualizzato 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

Viene visualizzato 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.