שימוש בהצפנת נתונים שקופה (TDE)

בדף הזה מוסבר איך להשתמש בהצפנת נתונים שקופה (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
  

המאמרים הבאים