Impedisci l'eliminazione di un'istanza

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

Panoramica

La protezione da eliminazione dell'istanza consente di impedire la rimozione accidentale delle istanze esistenti e nuove. Con la protezione da eliminazione delle istanze puoi salvaguardare le istanze importanti per i tuoi servizi e applicazioni.

Puoi impostare l'opzione di protezione da eliminazione quando crei un'istanza. Inoltre, puoi impostare questa opzione su un'istanza esistente. In entrambi i casi, l'eliminazione è impedita a livello di istanza. Per impostazione predefinita, l'opzione di protezione dall'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 (abilitata o disabilitata) dall'istanza di origine.

Pianificazione della protezione da eliminazione

Se prevedi di creare un'istanza, decidi se proteggerla dall'eliminazione accidentale. Ad esempio, un'istanza critica dovrebbe essere protetta in questo modo.

Valuta anche se ci sono istanze esistenti da proteggere dall'eliminazione accidentale. Se hai più istanze da proteggere, imposta l'opzione su ogni istanza.

Valuta la protezione da eliminazione per le repliche di lettura

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

Per le repliche di lettura di Cloud SQL, l'opzione di protezione dall'eliminazione funziona come per le istanze Cloud SQL.

Conferma delle autorizzazioni o dei ruoli necessari

Per impostare l'opzione di protezione da eliminazione, l'account di servizio dell'istanza Cloud SQL deve avere 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. Di conseguenza, quando crei un'istanza, non sono necessarie autorizzazioni aggiuntive per abilitare la protezione dall'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. Di conseguenza, quando modifichi un'istanza per la protezione dall'eliminazione, non sono necessarie autorizzazioni aggiuntive.

Pianificazione dell'eliminazione delle istanze

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

  • Conferma che puoi eliminare l'istanza in sicurezza
  • Conferma che la protezione da eliminazione sia disabilitata; se necessario, modifica l'istanza

Limitazioni della protezione da eliminazione

La protezione dall'eliminazione su 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

Impostazione della protezione da eliminazione su una nuova istanza

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

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

Console

  1. Segui i passaggi per iniziare a creare un'istanza.
  2. In Personalizza la tua istanza, fai clic sulla freccia menu a discesa Mostra opzioni di configurazione.
  3. In Protezione dei dati, verifica che la casella di controllo Abilita la protezione da eliminazione sia selezionata.
  4. In base alle tue esigenze, seleziona altre opzioni di configurazione.
  5. Fai clic su Crea istanza.

gcloud

Per impostare la protezione da eliminazione durante la creazione dell'istanza, utilizza un comando simile al seguente:

gcloud sql instances create [INSTANCE_NAME] \
    --deletion-protection

REST v1

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

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

  • project-id: il tuo ID progetto
  • instance-id: ID istanza desiderato
  • database-version: la versione del database
  • region: regione desiderata
  • machine-type: 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 delle seguenti 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 impostare la protezione da eliminazione durante la creazione dell'istanza, specifica true nel campo deletionProtection.

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

  • project-id: il tuo ID progetto
  • instance-id: ID istanza desiderato
  • database-version: la versione del database
  • region: regione desiderata
  • machine-type: 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 delle seguenti 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 la pagina Explorer API nella pagina instances:insert.

Impostazione o rimozione della protezione da eliminazione su un'istanza esistente

Di seguito sono riportati i modi per modificare un'istanza per la protezione dall'eliminazione. Se abiliti l'opzione, un successivo tentativo di eliminazione dell'istanza avrà esito negativo.

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.
  3. In Protezione dei dati, seleziona o deseleziona la casella di controllo Abilita la protezione da eliminazione.
  4. In base alle tue esigenze, modifica le altre opzioni di configurazione.
  5. Fai clic su Salva.

gcloud

Per abilitare la protezione da eliminazione quando aggiorni un'istanza, utilizza un comando simile al seguente:

gcloud sql instances patch [INSTANCE_NAME] \
    --deletion-protection

Per disabilitare la protezione dall'eliminazione quando aggiorni un'istanza, utilizza un comando simile al seguente:

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

REST v1

Per impostare 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, effettua le seguenti sostituzioni:

  • 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 delle seguenti 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 impostare 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, effettua le seguenti sostituzioni:

  • 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 delle seguenti 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 la pagina Explorer API nella pagina instances:patch.