בדף הזה מוסבר איך להשתמש בהצפנת נתונים שקופה (TDE).
בקטעים הבאים מוסבר איך לנהל אישורים של TDE.
לפני שמתחילים
כדי לייבא או לייצא אישורים של TDE, אתם צריכים את ההרשאה לניהול זהויות והרשאות גישה (IAM) cloudsql.instances.manageEncryption, שזמינה בתפקיד cloudsql.admin. מידע נוסף זמין במאמר בנושא תפקידים ב-Cloud SQL.
GRANT VIEW ANY DEFINITION TO other_login AS CustomerDbRootRole
ייבוא אישור TDE חיצוני
המסוף
אי אפשר לייבא אישור TDE באמצעות Google Cloud מסוף.
gcloud
כדי לייבא אישור מקטגוריה של Cloud Storage, משתמשים בפקודה הבאה:
gcloud sql import
gcloud sql import tde INSTANCE_NAME \ --certificate CERTIFICATE_NAME \ --cert-path=gs://BUCKET_NAME/CERTIFICATE_NAME \ --pvk-path=gs://BUCKET_NAME/KEY_NAME \ --prompt-for-pvk-password \ --pvk-password CERTIFICATE_PASSWORD
מחליפים את הפרטים הבאים:
- INSTANCE_NAME: השם של מופע Cloud SQL שאליו רוצים לייבא את אישור ה-TDE.
- CERTIFICATE_NAME: השם של אישור ההצפנה שרוצים לייבא.
- BUCKET_NAME: השם של קטגוריית Cloud Storage שבה נמצא אישור ה-TDE שרוצים לייבא.
- KEY_NAME: השם של מפתח ההצפנה שמשויך לקטגוריה של Cloud Storage.
- CERTIFICATE_PASSWORD: סיסמת האישור.
REST v1
כדי לייבא אישור TDE, משתמשים בשיטה instances.import ומציינים את המאפיינים הבאים:
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: שם הפרויקט שאליו רוצים לייבא את אישור ההצפנה.
- INSTANCE_NAME: השם של מופע Cloud SQL שאליו רוצים לייבא את אישור ההצפנה.
- TDE_CERTIFICATE_NAME: השם של אישור ההצפנה שרוצים להשתמש בו אחרי שהוא יובא.
- CERTIFICATE_NAME: השם של אישור ההצפנה שרוצים לייבא.
- BUCKET_NAME: השם של קטגוריית Cloud Storage שבה נמצא אישור ההצפנה שרוצים לייבא.
- KEY_NAME: השם של מפתח ההצפנה שמשויך לקטגוריה של Cloud Storage.
- CERTIFICATE_PASSWORD: סיסמת האישור.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/import
תוכן בקשת JSON:
{
"importContext":
{
"fileType": "TDE",
"tdeImportOptions":
{
"name": "TDE_CERTIFICATE_NAME",
"certificatePath": "gs://BUCKET_NAME/CERTIFICATE_NAME",
"privateKeyPath": "gs://BUCKET_NAME/KEY_NAME",
"privateKeyPassword": "CERTIFICATE_PASSWORD"
}
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
REST v1beta4
כדי לייבא אישור TDE, משתמשים בשיטה instances.import ומציינים את המאפיינים הבאים:
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: שם הפרויקט שאליו רוצים לייבא את אישור ההצפנה.
- INSTANCE_NAME: השם של מופע Cloud SQL שאליו רוצים לייבא את אישור ההצפנה.
- TDE_CERTIFICATE_NAME: השם של אישור ההצפנה שרוצים להשתמש בו אחרי שהוא יובא.
- CERTIFICATE_NAME: השם של אישור ההצפנה שרוצים לייבא.
- BUCKET_NAME: השם של קטגוריית Cloud Storage שבה נמצא אישור ההצפנה שרוצים לייבא.
- KEY_NAME: השם של מפתח ההצפנה שמשויך לקטגוריה של Cloud Storage.
- CERTIFICATE_PASSWORD: סיסמת האישור.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/import
תוכן בקשת JSON:
{
"importContext":
{
"fileType": "TDE",
"tdeImportOptions":
{
"name": "TDE_CERTIFICATE_NAME",
"certificatePath": "gs://BUCKET_NAME/CERTIFICATE_NAME",
"privateKeyPath": "gs://BUCKET_NAME/KEY_NAME",
"privateKeyPassword": "CERTIFICATE_PASSWORD"
}
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
לכל אישור TDE מיובא מוקצה שם ייחודי בפורמט הבא:
gcloud_tde_user_CERTIFICATE_NAME_GENERATED_GUIDאם שחזור לנקודת זמן מסוימת (PITR) מופעל במכונה, יכול להיות שיחלפו כמה דקות עד שאישור ה-TDE המיובא יהיה זמין.
עדכון של אישורי TDE
אפשר להחליף אישור TDE מיובא באמצעות התהליך המאוחסן
msdb.dbo.gcloudsql_rotate_tde_certificate. הפרוצדורה צריכה להיות מופעלת על ידי המשתמשsqlserver, או על ידי משתמשים שהמשתמשsqlserverהעניק להם הרשאה, באמצעות קריאה שדומה לקריאה הבאה:EXEC msdb.dbo.gcloudsql_rotate_tde_certificate TDE_CERTIFICATE_NAME
מחיקת אישורי TDE
אפשר לייבא עד עשרה אישורי TDE של משתמשים. אם צריך לייבא עוד, צריך למחוק אישורים מיותרים של TDE באמצעות
msdb.dbo.gcloudsql_drop_tde_user_certificateהפרוצדורה המאוחסנת. הפרוצדורה צריכה להיות מופעלת על ידי המשתמשsqlserver, או על ידי משתמשים שהמשתמשsqlserverהעניק להם הרשאה, באמצעות קריאה שדומה לקריאה הבאה:EXEC gcloudsql_drop_tde_user_certificate TDE_CERTIFICATE_NAME
אי אפשר למחוק אישור שמנוהל על ידי Cloud SQL.
אי אפשר למחוק אישור בזמן שהוא בשימוש.
ייצוא אישור TDE
כדי לייצא, צריך לציין את השם המלא של אישור ה-TDE, כולל הקידומת והסיומת. אפשר לחפש את השם המלא של אישור ההצפנה TDE על ידי שאילתה של עמודת השם מהתצוגה sys.certificates:
SELECT name FROM sys.certificates
המסוף
אי אפשר לייצא אישור TDE באמצעות מסוף Google Cloud .
gcloud
כדי לייצא אישור TDE לקטגוריה של Cloud Storage, משתמשים בפקודה הבאה:
gcloud sql export
gcloud sql export tde INSTANCE_NAME \ --certificate CERTIFICATE_NAME \ --cert-path=gs://BUCKET_NAME/CERTIFICATE_NAME \ --pvk-path=gs://BUCKET_NAME/KEY_NAME \ --prompt-for-pvk-password \ --pvk-password CERTIFICATE_PASSWORD
מחליפים את הפרטים הבאים:
- INSTANCE_NAME: השם של מופע Cloud SQL שממנו רוצים לייצא את אישור ה-TDE.
- CERTIFICATE_NAME: השם של אישור ההצפנה שרוצים לייצא.
- BUCKET_NAME: השם של הקטגוריה ב-Cloud Storage שבה נמצא אישור ה-TDE שרוצים לייצא.
- KEY_NAME: השם של מפתח ההצפנה שמשויך לקטגוריה של Cloud Storage.
- CERTIFICATE_PASSWORD: סיסמת האישור.
REST v1
כדי לייצא אישור TDE, משתמשים בשיטה instances.export ומציינים את המאפיינים הבאים:
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: שם הפרויקט שממנו רוצים לייצא את אישור ההצפנה.
- INSTANCE_NAME: השם של מופע Cloud SQL שממנו רוצים לייצא את אישור ההצפנה.
- TDE_CERTIFICATE_NAME: השם של אישור ההצפנה שרוצים להשתמש בו אחרי שהוא יוצא.
- CERTIFICATE_NAME: השם של אישור ההצפנה שרוצים לייצא.
- BUCKET_NAME: השם של הקטגוריה של Cloud Storage שבה נמצא אישור ההצפנה שרוצים לייצא.
- KEY_NAME: השם של מפתח ההצפנה שמשויך לקטגוריה של Cloud Storage.
- CERTIFICATE_PASSWORD: סיסמת האישור.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/export
תוכן בקשת JSON:
{
"exportContext":
{
"fileType": "TDE",
"tdeExportOptions":
{
"name": "TDE_CERTIFICATE_NAME",
"certificatePath": "gs://BUCKET_NAME/CERTIFICATE_NAME",
"privateKeyPath": "gs://BUCKET_NAME/KEY_NAME",
"privateKeyPassword": "CERTIFICATE_PASSWORD"
}
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
REST v1beta4
כדי לייצא אישור TDE, משתמשים בשיטה instances.export ומציינים את המאפיינים הבאים:
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: שם הפרויקט שממנו רוצים לייצא את אישור ההצפנה.
- INSTANCE_NAME: השם של מופע Cloud SQL שממנו רוצים לייצא את אישור ההצפנה.
- TDE_CERTIFICATE_NAME: השם של אישור ההצפנה שרוצים להשתמש בו אחרי שהוא יוצא.
- CERTIFICATE_NAME: השם של אישור ההצפנה שרוצים לייצא.
- BUCKET_NAME: השם של הקטגוריה של Cloud Storage שבה נמצא אישור ההצפנה שרוצים לייצא.
- KEY_NAME: השם של מפתח ההצפנה שמשויך לקטגוריה של Cloud Storage.
- CERTIFICATE_PASSWORD: סיסמת האישור.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/export
תוכן בקשת JSON:
{
"exportContext":
{
"fileType": "TDE",
"tdeExportOptions":
{
"name": "TDE_CERTIFICATE_NAME",
"certificatePath": "gs://BUCKET_NAME/CERTIFICATE_NAME",
"privateKeyPath": "gs://BUCKET_NAME/KEY_NAME",
"privateKeyPassword": "CERTIFICATE_PASSWORD"
}
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
ייבוא גיבוי מוצפן ב-TDE
כשמייבאים גיבוי מוצפן באמצעות TDE, אם אישור ה-TDE התואם כבר נמצא במופע המקור, אפשר לייבא את הגיבוי המוצפן ישירות והוא לא יפוענח. אין צורך לספק שוב את האישור.
אם האישור לא נמצא במופע, צריך להשתמש בדגל --keep-encrypted כשמייבאים. השימוש בדגל מספק את היתרונות הבאים:
- שומר את אישור ה-TDE שמשויך למופע.
- ההגדרה הזו מונעת את פענוח הגיבוי במהלך הייבוא.
אם לא משתמשים בדגל --keep-encrypted, הגיבוי המיובא יפוענח, והאישור של TDE לא יישמר בשרת.
מידע נוסף זמין במקורות המידע הבאים:
ייצוא גיבוי מוצפן ב-TDE
אפשר לייצא גיבוי מוצפן ב-TDE באותו אופן שבו מייצאים גיבוי לא מוצפן. האישור ששימש להצפנת הגיבוי לא נכלל בייצוא. צריך לייצא אותו בנפרד.
מידע נוסף זמין במקורות המידע הבאים:
הצפנה ופענוח של מסד נתונים
אתם יכולים להצפין ולפענח את המופע שלכם בדומה לשיטה שבה אתם משתמשים ב-SQL Server.
בהתחלה, רק משתמשים עם פרטי כניסה כמו root יכולים לגשת לאישורי TDE.sqlserver
כדי להעניק גישה למשתמשים אחרים, משתמשים בפקודה הבאה או בפקודה דומה:
GRANT VIEW ANY DEFINITION TO CERTIFICATE_NAME AS CustomerDbRootRole
אפשר גם להעניק גישה לאישור ספציפי ולמשתמש ספציפי במסד הנתונים.
כדי להצפין מסד נתונים, אפשר להשתמש בפקודה הבאה או בפקודה דומה:
CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER CERTIFICATE CERTIFICATE_NAME ALTER DATABASE DATABASE_NAME SET ENCRYPTION ON
כדי לפענח מסד נתונים, משתמשים בפקודה הבאה או בפקודה דומה:
ALTER DATABASE DATABASE_NAME SET ENCRYPTION OFF