מניעת מחיקה של מכונה

בדף הזה מוסבר איך להגן על מכונות Cloud SQL מפני מחיקה מקרית.

סקירה כללית

הגנה מפני מחיקת מופעים מאפשרת לכם למנוע הסרה מקרית של מופעים קיימים וחדשים. באמצעות הגנה מפני מחיקת מופעים, אתם יכולים להגן על מופעים שחשובים לאפליקציות ולשירותים שלכם.

אפשר להפעיל את האפשרות להגנה מפני מחיקה כשיוצרים מופע. בנוסף, אפשר להפעיל את האפשרות הזו במופע קיים. בשני המקרים, המחיקה נמנעת ברמת המופע. כברירת מחדל, האפשרות להגנה מפני מחיקה מושבתת, אלא אם משתמשים במסוף Google Cloud או ב-Terraform כדי ליצור מופע.

כשמשכפלים מופע, המופע החדש מקבל את האפשרות להגנה מפני מחיקה (מופעלת או מושבתת) ממופע המקור.

תכנון הגנה מפני מחיקה

אם אתם מתכננים ליצור מופע, אתם צריכים להחליט אם אתם רוצים להגן על המופע החדש מפני מחיקה בטעות. לדוגמה, מומלץ להגן כך על מופע קריטי.

כדאי גם לחשוב אם יש מקרים קיימים שרוצים להגן עליהם מפני מחיקה מקרית. אם יש לכם כמה מקרים להגנה, צריך להפעיל את האפשרות בכל מקרה.

הגנה מפני מחיקה של עותקים לקריאה

כשיוצרים רפליקה לקריאה, הרפליקה הזו לא מקבלת הגדרת הגנה מפני מחיקה מהמכונה הראשית. ההגדרה הזו נשארת עצמאית. עם זאת, אפשר להפעיל הגנה מפני מחיקה בשכפול לקריאה חדש או קיים.

האפשרות להגנה מפני מחיקה ברפליקות לקריאה ב-Cloud SQL פועלת באותו אופן כמו במכונות Cloud SQL.

אישור ההרשאות או התפקידים הנדרשים

כדי להפעיל את האפשרות 'הגנה מפני מחיקה', לחשבון השירות שמשויך למופע Cloud SQL צריכות להיות הרשאות או תפקידי IAM מסוימים.

הרשאות או תפקידים ליצירת מכונה

כמו במקרה של פעולות קשורות, כדי להשתמש באפשרות ההגנה מפני מחיקה צריך את ההרשאה cloudsql.instances.create או את התפקיד cloudsql.admin. לכן, כשיוצרים מופע, לא נדרשות הרשאות נוספות כדי להפעיל הגנה מפני מחיקה.

הרשאות או תפקידים לעריכת מופע

כמו במקרה של פעולות קשורות, כדי לשנות את ההגנה מפני מחיקה צריך את ההרשאה cloudsql.instances.update או את התפקיד cloudsql.editor. לכן, כשעורכים מופע להגנה מפני מחיקה, לא נדרשות הרשאות נוספות.

מחיקת מכונה של תוכנית

אם אתם מתכננים למחוק מכונה, קודם צריך לבצע את הפעולות הבאות:

  • אישור שהמחיקה של המופע בטוחה
  • מוודאים שההגנה מפני מחיקה מושבתת. אם צריך, עורכים את המופע כדי להשבית את ההגנה מפני מחיקה.

המגבלות של ההגנה מפני מחיקה

הגנה מפני מחיקה במופע לא מונעת:

  • הפסקת המכונה
  • הפעלה מחדש של המכונה
  • עריכת המופע
  • מחיקת גיבוי
  • השעיית המופע בגלל בעיות בחיוב
  • מחיקת המופע המושעה בגלל בעיות בחיוב
  • מחיקת המופע בגלל מחיקת פרויקט

הפעלת הגנה מפני מחיקה במופע חדש

יש כמה דרכים להפעיל את האפשרות 'הגנה מפני מחיקה'. כברירת מחדל, האפשרות להגנה מפני מחיקה מושבתת, אלא אם משתמשים במסוף Google Cloud או ב-Terraform כדי ליצור מכונה.

אם ההגנה מפני מחיקה מופעלת, ניסיון למחוק את המופע ייכשל.

המסוף

  1. פועלים לפי השלבים כדי ליצור מכונה.
  2. בקטע Customize your instance (התאמה אישית של המופע), מרחיבים את האפשרות Show configuration options (הצגת אפשרויות ההגדרה).
  3. מרחיבים את האפשרות הגנה על נתונים.
  4. בקטע Data Protection, מוודאים שתיבת הסימון Prevent instance deletion מסומנת.
  5. בוחרים אפשרויות הגדרה אחרות לפי הצורך עבור המופע.
  6. לוחצים על Create instance.

gcloud

כדי להפעיל הגנה מפני מחיקה במהלך יצירת מכונה, משתמשים בפקודה gcloud sql instances create, בדומה לפקודה הבאה:

gcloud sql instances create INSTANCE_NAME \
    --deletion-protection

REST v1

כדי להפעיל הגנה מפני מחיקה במהלך יצירת המופע, מציינים true בשדה deletionProtection.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • project-id: מזהה הפרויקט
  • instance-id: מזהה המכונה הרצוי
  • database-version: גרסת מסד הנתונים
  • region: האזור הרצוי
  • machine-type: סוג המכונה הרצוי

ה-method של ה-HTTP וכתובת ה-URL:

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

תוכן בקשת JSON:

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

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "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

כדי להפעיל הגנה מפני מחיקה במהלך יצירת המופע, מציינים true בשדה deletionProtection.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • project-id: מזהה הפרויקט
  • instance-id: מזהה המכונה הרצוי
  • database-version: גרסת מסד הנתונים
  • region: האזור הרצוי
  • machine-type: סוג המכונה הרצוי

ה-method של ה-HTTP וכתובת ה-URL:

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

תוכן בקשת JSON:

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

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "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"
}
כדי לראות איך בקשת API בארכיטקטורת REST הבסיסית בנויה למשימה הזו, אפשר לעיין ב-APIs Explorer בדף instances:insert.

הפעלה או השבתה של הגנה מפני מחיקה במופע קיים

אלה הדרכים לערוך מופע כדי להפעיל את ההגנה מפני מחיקה. אם תפעילו את האפשרות, ניסיון למחוק את המופע ייכשל.

המסוף

  1. כדי להתחיל לערוך מופע, פועלים לפי השלבים הבאים.
  2. אחרי שלוחצים על עריכה, מחפשים את הקטע התאמה אישית של המופע ומרחיבים את הצגת אפשרויות ההגדרה.
  3. מרחיבים את האפשרות הגנה על נתונים.
  4. בקטע הגנה על נתונים, מסמנים או מבטלים את הסימון בתיבת הסימון מניעת מחיקה של מופע.
  5. עורכים את אפשרויות ההגדרה האחרות לפי הצורך במכונה.
  6. לוחצים על Save.

gcloud

כדי להפעיל הגנה מפני מחיקה כשמעדכנים מופע, משתמשים בפקודה gcloud sql instances patch, באופן דומה לדוגמה הבאה:

gcloud sql instances patch INSTANCE_NAME \
    --deletion-protection

כדי להשבית את ההגנה מפני מחיקה כשמעדכנים מופע, משתמשים בפקודה gcloud sql instances patch, כמו בדוגמה הבאה:

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

REST v1

כדי להפעיל הגנה מפני מחיקה כשמעדכנים מופע, מציינים true בשדה deletionProtection. כדי להסיר את ההגנה מפני מחיקה, מציינים false בשדה הזה.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • project-id: מזהה הפרויקט
  • instance-id: מזהה המכונה הרצוי

ה-method של ה-HTTP וכתובת ה-URL:

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

תוכן בקשת JSON:

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

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "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

כדי להפעיל הגנה מפני מחיקה כשמעדכנים מופע, מציינים true בשדה deletionProtection. כדי להסיר את ההגנה מפני מחיקה, מציינים false בשדה הזה.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • project-id: מזהה הפרויקט
  • instance-id: מזהה המכונה הרצוי

ה-method של ה-HTTP וכתובת ה-URL:

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

תוכן בקשת JSON:

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

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "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"
}
כדי לראות איך בקשת ה-API בארכיטקטורת REST הבסיסית בנויה עבור המשימה הזו, אפשר לעיין ב-APIs Explorer בדף instances:patch.