בדף הזה מוסבר איך להגן על מסדי נתונים של Spanner מפני מחיקה בטעות.
הגנה מפני מחיקת מסד נתונים של Spanner מונעת מחיקה בשוגג של מסדי נתונים קיימים על ידי משתמשים או חשבונות שירות בעלי הרשאות IAM הדרושות למחיקת מסד הנתונים. הפעלת ההגנה מפני מחיקה של מסדי נתונים מאפשרת להגן על מסדי נתונים שחשובים לאפליקציות ולשירותים שלכם. השתמשו בהגנה מפני מחיקת מסד נתונים יחד עם שחזור נקודתי בזמן ותכונות גיבוי כדי לספק מערך מקיף של יכולות הגנה על נתונים עבור מסדי הנתונים שלכם ב-Spanner.
כברירת מחדל, ההגדרה 'הגנה מפני מחיקה' מושבתת כשיוצרים מסד נתונים חדש. אפשר להפעיל את הגדרת ההגנה מפני מחיקה אחרי שיצירת מסד הנתונים מסתיימת בהצלחה. בנוסף, ניתן להפעיל הגדרה זו במסד נתונים קיים. אם ברצונך להגן על מספר מסדי נתונים, הפעל את ההגדרה בכל מסד נתונים בנפרד. הפעלה או השבתה של הגנה מפני מחיקה לא משפיעות על הביצועים של מסד הנתונים. אם אתם צריכים למחוק מסד נתונים שההגנה עליו מופעלת, אתם צריכים להשבית את ההגנה לפני שתוכלו למחוק את מסד הנתונים.
מגבלות
אי אפשר להפעיל הגנה מפני מחיקה של מסד נתונים בתרחישים הבאים:
- אם מסד הנתונים נמחק.
- אם מסד הנתונים משוחזר מגיבוי. (אחרי שפעולת השחזור מסתיימת, אפשר להפעיל את ההגנה על מסד הנתונים).
בנוסף, גיבויים של מסד נתונים ומסדי נתונים ששוחזרו מגיבוי לא מקבלים בירושה את הגדרת ההגנה מפני מחיקה של מסד הנתונים המקורי. אחרי שמשחזרים מסד נתונים מגיבוי, צריך להפעיל בנפרד את ההגנה על מחיקת מסד הנתונים.
אם תמחקו את הפרויקט, ההגנה מפני מחיקה של מסד נתונים או מופע ב-Spanner לא תמנע את המחיקה שלהם. מידע נוסף על מה שקורה כשמוחקים פרויקט זמין במאמר השבתה (מחיקה) של פרויקטים.
בקרת גישה באמצעות IAM
כדי להפעיל את הגדרת ההגנה מפני מחיקה של מסד הנתונים, אתם צריכים הרשאות IAM מסוימות.
כדי להפעיל או להשבית את ההגנה מפני מחיקה של מסד נתונים, צריך הרשאה מסוג spanner.databases.update. אם אתה צריך רק לצפות בסטטוס של תצורת מסד הנתונים שלך, אתה צריך את ההרשאה spanner.databases.list או spanner.databases.get. במאמר הקצאת הרשאות IAM מוסבר איך להעניק הרשאות IAM ל-Spanner.
אם יש לכם את התפקיד המוגדר מראש Spanner Database Admin
roles/spanner.databaseAdmin במסד הנתונים, אתם יכולים לעדכן ולהפעיל את ההגנה מפני מחיקה של מסד הנתונים.
אתם יכולים להפעיל את ההגדרה של הגנה מפני מחיקה במסד נתונים קיים כדי למנוע מחיקה מקרית של מסד הנתונים.
הפעלת הגנה מפני מחיקה של מסד נתונים
אפשר להפעיל הגנה מפני מחיקה של מסד נתונים באמצעות ה-CLI של gcloud, ספריות הלקוח וממשקי ה-API של REST או RPC. אי אפשר להפעיל הגנה מפני מחיקה של מסד נתונים באמצעות מסוף Google Cloud .
gcloud
כדי להפעיל את הגדרת ההגנה מפני מחיקה של מסד נתונים, מריצים את הפקודה הבאה:
gcloud spanner databases update
DATABASE_ID --instance=INSTANCE_ID
--enable-drop-protection [--async]
חובה לציין את האפשרויות הבאות:
DATABASE_ID- המזהה של מסד הנתונים.
INSTANCE_ID
- המזהה של המופע של מסד הנתונים.
האפשרויות הבאות הן אופציונליות:
--async
- חזרה מיידית, בלי לחכות שהפעולה תסתיים.
ספריות לקוח
C++
C#
Go
Java
Node.js
PHP
Python
Ruby
בדיקה אם ההגנה מפני מחיקה מופעלת במסד נתונים
ניתן לקבוע אם הגנה מפני מחיקה מופעלת במסד הנתונים על ידי הצגת הגדרות מסד הנתונים.
gcloud
כדי לבדוק אם מופעלת הגנה מפני מחיקה במסד נתונים, אפשר להריץ את הפקודה gcloud spanner databases describe כדי לקבל מידע מפורט על מסד נתונים, או להריץ את הפקודה gcloud spanner databases list כדי לקבל מידע מפורט על מסדי נתונים בתוך מופע.
gcloud spanner databases describe
projects/PROJECT_ID/instances/INSTANCE_ID/databases/DATABASE_ID
חובה לציין את האפשרויות הבאות:
PROJECT_ID
- מזהה הפרויקט של מסד הנתונים.
INSTANCE_ID
- המזהה של המופע של מסד הנתונים.
DATABASE_ID- המזהה של מסד הנתונים.
אם ההגנה מפני מחיקה מופעלת, הפרמטר enableDropProtection: true יופיע בפלט.
השבתה של הגנה מפני מחיקת מסד נתונים
אפשר להשבית את ההגנה מפני מחיקה של מסד נתונים אם המסד כבר לא זקוק להגנה הזו, או אם צריך למחוק מסד נתונים שההגדרה הזו מופעלת בו.
אם רוצים למחוק מופע שיש בו מסד נתונים אחד או יותר עם הגנה מפני מחיקה, קודם צריך להשבית את ההגנה מפני מחיקה בכל מסדי הנתונים במופע הזה, ורק אחר כך אפשר למחוק את המופע.
gcloud
כדי להשבית את הגדרת ההגנה מפני מחיקה של מסד נתונים, מריצים את הפקודה הבאה:
gcloud spanner databases update
DATABASE_ID --instance=INSTANCE_ID
--no-enable-drop-protection [--async]
חובה לציין את האפשרויות הבאות:
DATABASE_ID- המזהה של מסד הנתונים.
INSTANCE_ID
- המזהה של המופע של מסד הנתונים.
האפשרויות הבאות הן אופציונליות:
--async
- חזרה מיידית, בלי לחכות שהפעולה תסתיים.