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:
- Crea un account di servizio per il tuo progetto Cloud SQL.
- Crea un pool di CA nel servizio CA.
- Crea una CA in CA Service.
- 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.
Per creare una CA secondaria in CA Service, segui le istruzioni riportate nella sezione Crea una CA secondaria.
Per creare una CA subordinata da una CA radice esterna, segui le istruzioni riportate in Crea una CA subordinata da una CA radice esterna.
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
conenum
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 .
|
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
|
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:
|
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. |