Impedire l'eliminazione di un'istanza

Questa pagina descrive come proteggere le istanze Cloud SQL dall'eliminazione accidentale.

Panoramica

La protezione da eliminazione delle istanze consente di impedire la rimozione accidentale di istanze esistenti e nuove. Utilizzando la protezione da eliminazione delle istanze, puoi salvaguardare le istanze importanti per le tue applicazioni e i tuoi servizi.

Puoi attivare l'opzione di protezione da eliminazione quando crei un'istanza. Inoltre, puoi attivare questa opzione su un'istanza esistente. In entrambi i casi, l'eliminazione viene impedita a livello di istanza. Per impostazione predefinita, l'opzione di protezione da eliminazione è disabilitata, a meno che non utilizzi la console Google Cloud o Terraform per creare un'istanza.

Quando cloni un'istanza, la nuova istanza riceve l'opzione di protezione da eliminazione (attivata o disattivata) dall'istanza di origine.

Pianifica la protezione da eliminazione

Se prevedi di creare un'istanza, decidi se vuoi proteggere la nuova istanza dall'eliminazione accidentale. Ad esempio, un'istanza critica deve essere protetta in questo modo.

Valuta anche se esistono istanze che vuoi proteggere dall'eliminazione accidentale. Se hai più istanze da proteggere, attiva l'opzione su ogni istanza.

Valuta la possibilità di utilizzare la protezione da eliminazione per le repliche di lettura

Quando crei una replica di lettura, questa non riceve un'impostazione di protezione da eliminazione dall'istanza principale; questa impostazione rimane indipendente. Tuttavia, puoi attivare la protezione da eliminazione su una replica di lettura nuova o esistente.

Per le repliche di lettura di Cloud SQL, l'opzione di protezione da eliminazione funziona allo stesso modo delle istanze Cloud SQL.

Conferma le autorizzazioni o i ruoli necessari

Per attivare l'opzione di protezione da eliminazione, il account di servizio associato all'istanza Cloud SQL deve disporre di determinate autorizzazioni o ruoli IAM.

Autorizzazioni o ruoli per la creazione di un'istanza

Come nel caso delle operazioni correlate, l'opzione di protezione da eliminazione richiede l'autorizzazione cloudsql.instances.create o il ruolo cloudsql.admin. Pertanto, quando crei un'istanza, non sono necessarie autorizzazioni aggiuntive per attivare la protezione da eliminazione.

Autorizzazioni o ruoli per la modifica di un'istanza

Come nel caso delle operazioni correlate, le modifiche alla protezione da eliminazione richiedono l'autorizzazione cloudsql.instances.update o il ruolo cloudsql.editor. Pertanto, quando modifichi un'istanza per la protezione da eliminazione, non sono necessarie autorizzazioni aggiuntive.

Pianifica l'eliminazione dell'istanza

Se prevedi di eliminare un'istanza, segui questi passaggi:

  • Conferma che l'istanza può essere eliminata in sicurezza
  • Verifica che la protezione da eliminazione sia disabilitata. Se necessario, modifica l'istanza per disabilitarla.

Limitazioni della protezione da eliminazione

La protezione da eliminazione di un'istanza non impedisce:

  • Arresto dell'istanza
  • Riavvio dell'istanza
  • Modifica dell'istanza
  • Eliminazione di un backup
  • Sospensione dell'istanza a causa di problemi di fatturazione
  • Eliminazione dell'istanza sospesa a causa di problemi di fatturazione
  • Eliminazione dell'istanza a causa dell'eliminazione di un progetto

Attiva la protezione da eliminazione su una nuova istanza

Di seguito sono riportati i modi per attivare l'opzione di protezione da eliminazione. Per impostazione predefinita, l'opzione di protezione da eliminazione è disabilitata, a meno che non utilizzi la console Google Cloud o Terraform per creare un'istanza.

Se la protezione da eliminazione è abilitata, un tentativo di eliminare l'istanza non va a buon fine.

Console

  1. Segui i passaggi per iniziare a creare un'istanza.
  2. Nella sezione Personalizza la tua istanza, espandi Mostra opzioni di configurazione.
  3. Espandi Protezione dei dati.
  4. Nella sezione Protezione dei dati, verifica che la casella di controllo Impedisci l'eliminazione dell'istanza sia selezionata.
  5. Se necessario per la tua istanza, seleziona altre opzioni di configurazione.
  6. Fai clic su Crea istanza.

gcloud

Per attivare la protezione da eliminazione durante la creazione dell'istanza, utilizza il comando gcloud sql instances create, simile al seguente:

gcloud sql instances create INSTANCE_NAME \
    --deletion-protection

REST v1

Per attivare la protezione da eliminazione durante la creazione dell'istanza, specifica true nel campo deletionProtection.

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

  • project-id: il tuo ID progetto
  • instance-id: ID istanza desiderato
  • database-version: la versione del database
  • region: la regione desiderata
  • machine-type: il tipo di macchina desiderato

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": {
    "tier": "machine-type",
    "deletionProtectionEnabled": true
  }
}

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/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2022-05-24T15:34:10.929Z",
  "operationType": "CREATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

REST v1beta4

Per attivare la protezione da eliminazione durante la creazione dell'istanza, specifica true nel campo deletionProtection.

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

  • project-id: il tuo ID progetto
  • instance-id: ID istanza desiderato
  • database-version: la versione del database
  • region: la regione desiderata
  • machine-type: il tipo di macchina desiderato

Metodo HTTP e URL:

POST https://sqladmin.googleapis.com/v1beta4/projects/project-id/instances

Corpo JSON della richiesta:

{
  "name": "instance-id",
  "region": "region",
  "databaseVersion": "database-version",
  "settings": {
    "tier": "machine-type",
    "deletionProtectionEnabled": true
  }
}

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/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2022-05-26T15:37:10.929Z",
  "operationType": "CREATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}
Per vedere come viene creata la richiesta API REST sottostante per questa attività, consulta Explorer API nella pagina instances:insert.

Attiva o disattiva la protezione da eliminazione su un'istanza esistente

Di seguito sono riportati i modi per modificare un'istanza per la protezione da eliminazione. Se attivi l'opzione, un tentativo successivo di eliminare l'istanza non va a buon fine.

Console

  1. Segui i passaggi per iniziare a modificare un'istanza.
  2. Dopo aver fatto clic su Modifica, individua la sezione Personalizza la tua istanza ed espandi Mostra opzioni di configurazione.
  3. Espandi Protezione dei dati.
  4. Nella sezione Protezione dei dati, seleziona o deseleziona la casella di controllo Impedisci l'eliminazione dell'istanza.
  5. In base alle esigenze della tua istanza, modifica altre opzioni di configurazione.
  6. Fai clic su Salva.

gcloud

Per attivare la protezione da eliminazione quando aggiorni un'istanza, utilizza il comando gcloud sql instances patch, simile al seguente:

gcloud sql instances patch INSTANCE_NAME \
    --deletion-protection

Per disabilitare la protezione da eliminazione quando aggiorni un'istanza, utilizza il comando gcloud sql instances patch, simile al seguente:

gcloud sql instances patch INSTANCE_NAME \
    --no-deletion-protection

REST v1

Per attivare la protezione da eliminazione quando aggiorni un'istanza, specifica true nel campo deletionProtection. Per rimuovere la protezione da eliminazione, specifica false in questo campo.

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

  • project-id: il tuo ID progetto
  • instance-id: ID istanza desiderato

Metodo HTTP e URL:

PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

Corpo JSON della richiesta:

{
  "settings": {
    "deletionProtectionEnabled": true
  }
}

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/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2022-06-1T03:42:12.281Z",
  "operationType": "CREATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

REST v1beta4

Per attivare la protezione da eliminazione quando aggiorni un'istanza, specifica true nel campo deletionProtection. Per rimuovere la protezione da eliminazione, specifica false in questo campo.

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

  • project-id: il tuo ID progetto
  • instance-id: ID istanza desiderato

Metodo HTTP e URL:

PATCH https://sqladmin.googleapis.com/v1beta4/projects/project-id/instances/instance-id

Corpo JSON della richiesta:

{
  "settings": {
    "deletionProtectionEnabled": true
  }
}

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/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2022-06-1T03:32:12.281Z",
  "operationType": "UPDATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}
Per vedere come viene creata la richiesta API REST sottostante per questa attività, consulta Explorer API nella pagina instances:patch.