Cette page explique comment protéger des instances Cloud SQL contre toute suppression accidentelle.
Présentation
La protection contre la suppression d'instances vous permet d'empêcher la suppression accidentelle d'instances existantes et nouvelles. Grâce à cette protection, vous pouvez protéger les instances importantes pour vos applications et services.
Vous pouvez définir l'option de protection contre la suppression lorsque vous créez une instance. Vous pouvez également définir cette option sur une instance existante. Dans les deux cas, la suppression est rendue impossible au niveau de l'instance. Par défaut, l'option de protection contre la suppression est désactivée, sauf si vous créez une instance à l'aide de la console Google Cloud ou de Terraform.
Lorsque vous clonez une instance, la nouvelle instance reçoit l'option de protection contre la suppression (activée ou désactivée) de l'instance source.
Planifier la protection contre la suppression
Si vous avez l'intention de créer une instance, décidez si vous souhaitez protéger ou non la nouvelle instance contre toute suppression accidentelle. Une instance critique, par exemple, doit être protégée de cette manière.
Déterminez également si vous avez des instances existantes que vous souhaitez protéger contre toute suppression accidentelle. Si vous souhaitez protéger plusieurs instances, définissez l'option sur chaque instance.
Considérer la protection contre la suppression pour les instances dupliquées avec accès en lecture
Lorsque vous créez une instance dupliquée avec accès en lecture, le paramètre de protection contre la suppression n'est pas transmis depuis l'instance principale. Ce paramètre reste indépendant. Toutefois, vous pouvez activer la protection contre la suppression sur une instance dupliquée avec accès en lecture nouvelle ou existante.
Pour les instances dupliquées avec accès en lecture Cloud SQL, l'option de protection contre la suppression fonctionne de la même manière que pour les instances Cloud SQL.
Confirmer les autorisations ou les rôles nécessaires
Pour définir l'option de protection contre la suppression, le compte de service de l'instance Cloud SQL doit disposer de certaines autorisations ou rôles IAM.
Autorisations ou rôles pour créer une instance
Comme pour les opérations associées, l'option de protection contre la suppression nécessite l'autorisation cloudsql.instances.create
ou le rôle cloudsql.admin
. Ainsi, lorsque vous créez une instance, aucune autorisation supplémentaire n'est nécessaire pour activer la protection contre la suppression.
Autorisations ou rôles pour modifier une instance
Comme pour les opérations associées, il est nécessaire de disposer de l'autorisation cloudsql.instances.update
ou du rôle cloudsql.editor
pour apporter des modifications à la protection contre la suppression. Ainsi, lorsque vous modifiez une instance pour la protection contre la suppression, aucune autorisation supplémentaire n'est nécessaire.
Planifier la suppression d'une instance
Si vous prévoyez de supprimer une instance, procédez comme suit :
- Confirmez que vous pouvez supprimer l'instance sans risque.
- Vérifiez que la protection contre la suppression est désactivée. Si nécessaire, modifiez l'instance pour désactiver la protection contre la suppression.
Limites de la protection contre la suppression
La protection contre la suppression sur une instance n'empêche pas les actions suivantes :
- Arrêter l'instance
- Redémarrer l'instance
- Modifier l'instance
- Supprimer une sauvegarde
- Suspendre l'instance en raison de problèmes de facturation
- Supprimer l'instance suspendue en raison de problèmes de facturation
- Supprimer l'instance en raison d'une suppression de projet
Définir la protection contre la suppression sur une nouvelle instance
Voici les méthodes permettant de définir l'option de protection contre la suppression. Par défaut, l'option de protection contre la suppression est désactivée, sauf si vous créez une instance à l'aide de la console Google Cloud ou de Terraform.
Si la protection contre la suppression est activée, toute tentative de suppression de l'instance échoue.
Console
- Suivez les étapes pour commencer à créer une instance.
- Sous Personnaliser votre instance, cliquez sur la flèche du menu déroulant Afficher les options de configuration.
- Sous Protection des données, vérifiez que la case Activer la protection contre la suppression est cochée.
- Si nécessaire, sélectionnez d'autres options de configuration pour votre instance.
- Cliquez sur Créer une instance.
gcloud
Pour définir la protection contre la suppression lors de la création de l'instance, utilisez une commande semblable à celle-ci :
gcloud sql instances create [INSTANCE_NAME] \ --deletion-protection
REST v1
Pour définir la protection contre la suppression lors de la création de l'instance, spécifiez true
dans le champ deletionProtection
.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- project-id : ID de votre projet
- instance-id : ID d'instance souhaité
- database-version : version de la base de données.
- region : région souhaitée
- machine-type : type de machine souhaité
Méthode HTTP et URL :
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances
Corps JSON de la requête :
{ "name": "instance-id", "region": "region", "databaseVersion": "database-version", "settings": { "tier": "machine-type", "deletionProtectionEnabled": true } }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "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
Pour définir la protection contre la suppression lors de la création de l'instance, spécifiez true
dans le champ deletionProtection
.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- project-id : ID de votre projet
- instance-id : ID d'instance souhaité
- database-version : version de la base de données.
- region : région souhaitée
- machine-type : type de machine souhaité
Méthode HTTP et URL :
POST https://sqladmin.googleapis.com/v1beta4/projects/project-id/instances
Corps JSON de la requête :
{ "name": "instance-id", "region": "region", "databaseVersion": "database-version", "settings": { "tier": "machine-type", "deletionProtectionEnabled": true } }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "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" }
Définir ou supprimer la protection contre la suppression sur une instance existante
Voici les méthodes permettant de modifier une instance pour définir ou supprimer la protection contre la suppression. Si vous activez cette option, toute tentative ultérieure de suppression de l'instance échouera.
Console
- Suivez les étapes pour commencer à modifier une instance.
- Après avoir cliqué sur Modifier, recherchez la section Personnaliser votre instance.
- Sous Protection des données, cochez ou décochez la case Activer la protection contre la suppression.
- Si nécessaire, modifiez d'autres options de configuration pour votre instance.
- Cliquez sur Enregistrer.
gcloud
Pour activer la protection contre la suppression lorsque vous mettez à jour une instance, utilisez une commande semblable à celle-ci :
gcloud sql instances patch [INSTANCE_NAME] \ --deletion-protection
Pour désactiver la protection contre la suppression lorsque vous mettez à jour une instance, utilisez une commande semblable à celle-ci :
gcloud sql instances patch [INSTANCE_NAME] \ --no-deletion-protection
REST v1
Pour définir la protection contre la suppression lorsque vous mettez à jour une instance, spécifiez true
dans le champ deletionProtection
. Pour supprimer la protection contre la suppression, spécifiez false
dans ce champ.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- project-id : ID de votre projet
- instance-id : ID d'instance souhaité
Méthode HTTP et URL :
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id
Corps JSON de la requête :
{ "settings": { "deletionProtectionEnabled": true } }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "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
Pour définir la protection contre la suppression lorsque vous mettez à jour une instance, spécifiez true
dans le champ deletionProtection
. Pour supprimer la protection contre la suppression, spécifiez false
dans ce champ.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- project-id : ID de votre projet
- instance-id : ID d'instance souhaité
Méthode HTTP et URL :
PATCH https://sqladmin.googleapis.com/v1beta4/projects/project-id/instances/instance-id
Corps JSON de la requête :
{ "settings": { "deletionProtectionEnabled": true } }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "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" }