מפתחות הצפנה בניהול הלקוח (CMEK) מאפשרים להגן על נתונים במנוחה ב-Cloud SQL באמצעות מפתחות קריפטוגרפיים משלכם ב-Cloud Key Management Service. שליטה במפתחות שלכם עוזרת לכם לעמוד בדרישות הרגולטוריות ולפקח באופן ישיר על כללי מדיניות הגישה למפתחות ועל לוחות הזמנים של הרוטציה.
אתם יכולים להגדיר חשבון שירות ומפתחות Cloud KMS, ואז ליצור מכונה של Cloud SQL שמשתמשת ב-CMEK שנוצר באופן ידני. במאמר סקירה כללית על מפתחות הצפנה בניהול הלקוח מוסבר בהרחבה על השימוש במפתחות הצפנה בניהול הלקוח ב-Cloud SQL.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Install the gcloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Install the gcloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init - מוודאים שבחשבון המשתמש שלכם יש את התפקיד "אדמין ב-Cloud SQL".
מפעילים את Cloud Key Management Service API, אם הוא עדיין לא מופעל.
התפקידים שנדרשים כדי להפעיל ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידיםמפעילים את Cloud SQL Admin API, אם הוא עדיין לא מופעל.
התפקידים שנדרשים כדי להפעיל ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים
תהליך העבודה ליצירת מכונה של Cloud SQL עם CMEK
- למשתמשי gcloud ו-API בלבד: יוצרים חשבון שירות לכל פרויקט שנדרשים בו מפתחות הצפנה בניהול הלקוח.
- יוצרים אוסף מפתחות ומפתח באותו אזור ב- Google Cloud שבו רוצים ליצור את המכונה.
- למשתמשי gcloud ו-API בלבד: נותנים לחשבון השירות גישה למפתח.
- רשמו לעצמכם את מזהה המפתח (KMS_KEY_ID), את מיקום אוסף המפתחות (GCP_REGION) ואת מזהה אוסף המפתחות (KMS_KEYRING_ID).
- נכנסים לפרויקט ויוצרים מכונה של Cloud SQL עם האפשרויות הבאות:
- אותו מיקום כמו של מפתח ההצפנה בניהול הלקוח
- הגדרת המפתח בניהול הלקוח
- מזהה מפתח ההצפנה בניהול הלקוח
המכונה שלכם ב-Cloud SQL מופעלת עכשיו עם CMEK.
יצירה של חשבון שירות
צריך ליצור חשבון שירות לכל פרויקט שנדרשים בו מפתחות הצפנה בניהול הלקוח.
כדי לאפשר למשתמש לנהל חשבונות שירות, צריך להקצות לו את אחד מהתפקידים הבאים:
- משתמש בחשבון שירות (
roles/iam.serviceAccountUser): כולל הרשאות להצגת רשימה של חשבונות שירות, לקבלת פרטים על חשבון שירות ולהתחזות לחשבון שירות. - אדמין בחשבון שירות (
roles/iam.serviceAccountAdmin): כולל הרשאות להצגת רשימה של חשבונות שירות ולקבלת פרטים על חשבון שירות. כולל גם הרשאות ליצור, לעדכן ולמחוק חשבונות שירות, ולהציג או לשנות את המדיניות של Cloud SQL ל-SQL Server בחשבון שירות.
אפשר להשתמש רק בפקודות של ה-CLI של gcloud כדי ליצור את סוג חשבון השירות שנדרש למפתחות הצפנה בניהול הלקוח. אם אתם משתמשים במסוףGoogle Cloud , Cloud SQL יוצר בשבילכם את חשבון השירות הזה באופן אוטומטי.
gcloud
gcloud beta services identity create \ --service=sqladmin.googleapis.com \ --project=PROJECT_ID
Terraform
כדי ליצור חשבון שירות, משתמשים במשאב של Terraform.
החלה של השינויים
כך מחילים את ההגדרות של Terraform בפרויקט ב- Google Cloud :
הכנת Cloud Shell
- מפעילים את Cloud Shell.
-
מגדירים את פרויקט ברירת המחדל ב- Google Cloud שבו רוצים להחיל את ההגדרות של Terraform.
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.
הכנת הספרייה
לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).
-
יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת
.tf, למשלmain.tf. במדריך הזה, הקובץ נקראmain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.
מעתיקים את הקוד לדוגמה בקובץ
main.tfהחדש שיצרתם.לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.
- בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
- שומרים את השינויים.
-
מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
terraform init
אופציונלי: תוכלו לכלול את האפשרות
-upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:terraform init -upgrade
החלה של השינויים
-
בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
terraform plan
מתקנים את ההגדרות לפי הצורך.
-
מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform:terraform apply
ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!".
- פותחים את הפרויקט ב- Google Cloud כדי להציג את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.
הפקודה הקודמת מחזירה שם של חשבון שירות. אתם משתמשים בשם של חשבון השירות הזה במהלך התהליך שמתואר בקטע מתן גישה למפתח לחשבון השירות.
יצירת מפתח
אפשר ליצור את המפתח באותו פרויקט ב- Google Cloud שבו נמצא המכונה של Cloud SQL, או בפרויקט משתמש נפרד. המיקום של אוסף המפתחות ב-Cloud KMS צריך להיות זהה לאזור שבו רוצים ליצור את המכונה של Cloud SQL. מפתח של מספר אזורים או של אזור גלובלי לא יעבוד. אם האזורים לא תואמים, הבקשה ליצירת מכונה של Cloud SQL תיכשל.
כדי ליצור מפתח Cloud KMS:
המסוף
-
נכנסים לדף Key management במסוף Google Cloud .
- לוחצים על Create key ring.
- מוסיפים Key ring name. חשוב לזכור את השם הזה, כי תצטרכו אותו כשתתנו לחשבון השירות גישה למפתח.
- בוחרים מיקום לאוסף המפתחות.
- לוחצים על יצירה. נפתח הדף Create key.
- מוסיפים שם מפתח.
- בשדה Purpose, בוחרים באפשרות Symmetric encrypt/decrypt.
- בוחרים תקופת רוטציה ותאריך התחלה.
- לוחצים על יצירה.
- בטבלה Keys, לוחצים על סמל האפשרויות הנוספות (3 נקודות) בעמודה האחרונה ובוחרים באפשרות Copy Resource ID או רושמים את המזהה. זהו KMS_KEY_ID. צריך את KMS_KEY_ID כשנותנים למפתח גישה לחשבון השירות.
gcloud
- יוצרים אוסף מפתחות חדש.
רשמו את השם הזה כי תצטרכו אותו כשתתנו למפתח גישה לחשבון השירות.gcloud kms keyrings create KMS_KEYRING_ID \ --location=GCP_REGION
- יוצרים מפתח באוסף המפתחות.
רשמו את השם הזה כי תצטרכו אותו כשתתנו למפתח גישה לחשבון השירות.gcloud kms keys create KMS_KEY_ID \ --location=GCP_REGION \ --keyring=KMS_KEYRING_ID \ --purpose=encryption
Terraform
כדי ליצור אוסף מפתחות, משתמשים במשאב של Terraform.
כדי ליצור מפתח, משתמשים במשאב של Terraform.
מחילים את ההגדרות של Terraform:
terraform apply
מתן גישה למפתח לחשבונות שירות
כשיוצרים מכונה של Cloud SQL עם CMEK, צריך לתת לחשבון השירות של הפרויקט שמכיל את המכונה גישה למפתח. אם משתמשים ב Google Cloud מסוף כדי ליצור את המכונה, לחשבונות השירות ניתנת גישה למפתח באופן אוטומטי כשיוצרים את המכונה. אם אתם משתמשים ב-CLI של gcloud או ב-API כדי ליצור את המכונה, או אם אתם נתקלים בשגיאות שקשורות להרשאות אחרי שאתם יוצרים את המכונה, בצעו את הפעולות הבאות.
כדי לתת לחשבון השירות גישה:
המסוף
-
נכנסים לדף Key management במסוף Google Cloud .
- בוחרים את הפרויקט שבו נמצא המפתח.
- לוחצים על השם של אוסף המפתחות.
- לוחצים על שם המפתח.
- לוחצים על הכרטיסייה Permissions.
- כדי לפתוח את החלונית, לוחצים על מתן גישה.
- מזינים את חשבון השירות כחשבון המשתמש ובוחרים את התפקיד Cloud KMS CryptoKey Encrypter/Decrypter.
- לוחצים על Save.
אפשר גם להקצות את התפקיד בדף IAM של הפרויקט.
gcloud
gcloud kms keys add-iam-policy-binding KMS_KEY_ID \ --location=GCP_REGION \ --keyring=KMS_KEYRING_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloud-sql.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter
Terraform
כדי לתת גישה למפתח, משתמשים במשאב של Terraform.
מחילים את ההגדרות של Terraform:
terraform apply
יצירת מכונה של Cloud SQL עם CMEK
כדי ליצור מכונה עם מפתחות הצפנה בניהול הלקוח:
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- לוחצים על Create instance.
- בוחרים את המנוע של מסד הנתונים.
- נותנים שם למכונה. אל תכללו מידע רגיש או פרטים אישיים מזהים בשם המכונה, כי הוא גלוי כלפי חוץ. אין צורך לכלול את מזהה הפרויקט בשם המכונה. הוא נוצר באופן אוטומטי במקומות המתאימים (לדוגמה, בקובצי היומן).
- מזינים את הסיסמה של המשתמש
'root'@'%'. - מגדירים את האזור של המכונה. מקמו את המכונה באותו אזור שבו נמצאים המשאבים שניגשים אליה. ברוב המקרים לא צריך לציין אזור.
- בקטע Configuration options, בוחרים את כל אפשרויות ההגדרה עד שמגיעים ל-Machine type and storage.
- מרחיבים את הקטע Machine type and storage.
- בקטע Encryption, בוחרים באפשרות Customer-managed key.
- בוחרים את מפתח ה-KMS מהתפריט הנפתח או מזינים ידנית את KMS_KEY_ID. יוצגו רק מפתחות KMS באותו פרויקט ובאותו אזור של המכונה. המערכת משתמשת בגרסת המפתח הראשית של המפתח, כך שאם גרסת המפתח מצוינת בשם המפתח, היא נחתכת. כדי לבחור מפתח KMS ששייך לפרויקט אחר אבל נמצא באותו אזור, בוחרים באפשרות Don't see your key? Enter key resource ID והזינו את הערך של KMS_KEY_ID ששמרתם קודם.
- אם לחשבון השירות אין הרשאה להצפין או לפענח באמצעות המפתח שנבחר, תוצג הודעה. במקרה כזה, לוחצים על Grant כדי להקצות לחשבון השירות את תפקיד ה-IAM
roles/cloudkms.cryptoKeyEncrypterDecrypter>במפתח ה-KMS שנבחר. - אחרי שבוחרים את אפשרויות ההגדרה, לוחצים על יצירה.
- תופיע הודעה שמסבירה את ההשלכות של שימוש במפתח הצפנה בניהול הלקוח. צריך לקרוא ולאשר אותה כדי להמשיך ביצירת המכונה.
gcloud
gcloud sql instances create INSTANCE_NAME \ --project=PROJECT_ID \ --disk-encryption-key=KMS_KEY_ID \ --database-version=VERSION \ --cpu=NUMBER_CPUS \ --memory=MEMORY_SIZE \ --region=REGION \ --root-password=INSERT-PASSWORD-HERE
Terraform
כדי ליצור מכונה עם CMEK, משתמשים במשאב של Terraform.
למחוק את השינויים
כדי למחוק את השינויים:
- כדי להשבית את ההגנה מפני מחיקה, בקובץ התצורה של Terraform מגדירים את הארגומנט
deletion_protectionלערךfalse.deletion_protection = "false"
- מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform המעודכנות:terraform apply
-
כדי להסיר משאבים שהוחלו בעבר על הגדרות Terraform, מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה:terraform destroy
REST v1
כדי ליצור מכונה עם מפתחות הצפנה בניהול הלקוח, מעבירים אתdiskEncryptionConfiguration לפקודה.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה
- region: האזור
- database-version: מחרוזת גרסת Enum (לדוגמה, SQLSERVER_2017_STANDARD)
- kms-resource-id: המזהה שקיבלתם כשיצרתם את המפתח.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances
תוכן בקשת JSON:
{
"name":"instance-id",
"region":"region",
"databaseVersion": "database-version",
"diskEncryptionConfiguration" :
{
"kmsKeyName" : "kms-resource-id"
},
"settings":
{
"backupConfiguration":
{
"enabled":true
}
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-16T02:32:12.281Z",
"operationType": "UPDATE",
"name": "operation-id",
"targetId": "instance-id",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
"targetProject": "project-id"
}
REST v1beta4
כדי ליצור מכונה עם מפתחות הצפנה בניהול הלקוח, מעבירים אתdiskEncryptionConfiguration לפקודה.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה
- region: האזור
- database-version: מחרוזת גרסת Enum (לדוגמה, SQLSERVER_2017_STANDARD)
- kms-resource-id: המזהה שקיבלתם כשיצרתם את המפתח.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances
תוכן בקשת JSON:
{
"name":"instance-id",
"region":"region",
"databaseVersion": "database-version",
"diskEncryptionConfiguration" :
{
"kmsKeyName" : "kms-resource-id"
},
"settings":
{
"backupConfiguration":
{
"enabled":true
}
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-16T02: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"
}
יצירת גיבוי למכונה שמופעל בה CMEK
כשיוצרים גיבוי של מכונה ב-Cloud SQL, הגיבוי מוצפן באמצעות אותה גרסה של המפתח הראשי כמו המפתח בניהול הלקוח של המכונה הראשית. אם המכונה משתמשת ב-CMEK שנוצר על ידי Cloud KMS Autokey, הגיבוי עדיין משתמש באותו מפתח כמו המכונה הראשית. Autokey לא יוצר מפתחות לגיבויים.
יצירה וניהול של גיבויים אוטומטיים ועל פי דרישה
בטופס Create a backup תופיע ההודעה: "Your backup will be encrypted with the primary version of this instance's customer-managed encryption key. אם מישהו ישמיד או ישבית את גרסת המפתח הזו, כל נתוני הגיבוי שהוצפנו באמצעותה יאבדו באופן סופי. אפשר לבדוק את הגרסה הראשית של המפתח ב-Cloud KMS".
בדף הגיבויים, ברשימת הגיבויים שמופעלים באמצעות מפתחות הצפנה בניהול הלקוח יש שתי עמודות נוספות. עמודה אחת שמראה שהגיבוי מיועד למכונה שתומכת ב-CMEK, ועמודה שמציגה את גרסת המפתח ששימשה להצפנת הגיבוי.
הצגת פרטי המפתח של מכונה שמופעל בה CMEK
אחרי שיוצרים מכונה של Cloud SQL, אפשר לבדוק ברשימת המכונות או בדף הסקירה הכללית של המכונה שהיא נוצרה באמצעות מפתח הצפנה בניהול הלקוח. בפרטים מופיע גם המפתח ששימש ליצירת המכונה.
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- ברשימת המכונות, גוללים שמאלה עד שרואים את העמודה Encryption. בעמודה הזו מופיעים הערכים Google-managed ו-Customer-managed.
- לוחצים על שם המכונה כדי לפתוח את הדף Overview שלה. מפתח ההצפנה בניהול הלקוח מופיע בחלונית Configuration.
הצפנה מחדש של מכונה או רפליקה קיימת עם CMEK
אתם יכולים להצפין מחדש את המכונות והרפליקות הקיימות של Cloud SQL באמצעות הגרסה האחרונה של המפתח הראשי. כשמצפינים מחדש מכונות שמשתמשות ב-Persistent Disk לאחסון, ההצפנה מחדש מתבצעת ללא זמן השבתה.
למידע נוסף על הצפנה מחדש של מכונה או רפליקה קיימת עם CMEK, ראו מידע על מפתחות.
קבלת הגרסה החדשה של המפתח הראשי
כדי להצפין מחדש את המכונה או הרפליקה באמצעות גרסה חדשה, צריך את גרסת המפתח הראשי החדשה. אם אתם צריכים גרסת מפתח חדשה למכונות, תצטרכו להחליף את המפתח באמצעות Cloud Key Management Service. כדי להחליף את המפתח הראשי, קראו את המאמר החלפת מפתח.
אחרי שרוטציית המפתחות מסתיימת, צריך להמתין עד שהשינוי במפתח הראשי יופץ לפני שמצפינים מחדש את המכונות. אם השינוי בגרסת המפתח לא עקבי, המכונה תמשיך להשתמש בגרסת המפתח הישנה אחרי ההצפנה מחדש. מידע נוסף זמין במאמר עקביות של גרסאות מפתחות.
הצפנה מחדש של מכונה שמופעל בה CMEK
בסיום רוטציית המפתחות, צריך להצפין מחדש את המכונה או הרפליקה הקיימות שמופעל בהן CMEK. הצפנה מחדש דורשת זמן השבתה רק במכונות שמשתמשות באפשרות האחסון Google Cloud Hyperdisk Balanced.
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- כדי לפתוח את הדף Overview של מכונה, לוחצים על שם המכונה.
- בקטע Configuration, לוחצים על Re-encrypt instance.
- בתיבת הדו-שיח שמופיעה, לוחצים על Re-encrypt כדי לאשר את הבחירה.
gcloud
כדי להצפין מחדש את המכונה או הרפליקה, מריצים את הפקודה הבאה:
gcloud sql instances reencrypt INSTANCE_NAME
INSTANCE_NAME בשם המכונה או הרפליקה שמצפינים מחדש.
REST v1
כדי להצפין מחדש את המכונה או הרפליקה באמצעות המפתח החדש, מריצים את הפקודה הבאה:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/reencrypt
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט
- INSTANCE_ID: מזהה המכונה
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/reencrypt
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2023-06-28T21:19:09.503Z",
"operationType": "REENCRYPT",
"name": "operation-id",
"targetId": "instance-id",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
"targetProject": "project-id"
}
REST v1beta4
כדי להצפין מחדש את המכונה או הרפליקה באמצעות המפתח החדש, מריצים את הפקודה הבאה:POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/reencrypt
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט
- INSTANCE_ID: מזהה המכונה
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/reencrypt
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2023-06-28T21:22:13.663Z",
"operationType": "REENCRYPT",
"name": "operation-id",
"targetId": "instance-id",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
"targetProject": "project-id"
}
גיבויים מוצפנים אוטומטיים
כשמצפינים מחדש מכונה ראשית שמשתמשת באפשרות האחסון Google Cloud Hyperdisk Balanced, Cloud SQL יוצר באופן אוטומטי גיבוי על פי דרישה שנקרא "גיבוי הצפנה מחדש". לא נוצרים גיבויים מוצפנים מחדש למכונות שמשתמשות ב-Persistent Disk לאחסון.
ברשימת הגיבויים של המכונה של Cloud SQL, הגיבוי של ההצפנה מחדש מופיע כסוג on-demand ומתויג בתווית backup created automatically for data before CMEK
re-encryption.
כמו גיבויים אחרים על פי דרישה, גיבויים של הצפנה מחדש נשמרים עד שמוחקים אותם או את המכונה.
מגבלות על הצפנה מחדש
כשמצפינים מחדש מכונה, חשוב לשים לב למגבלות הבאות:
- אי אפשר לבצע פעולות אדמין אחרות במכונה בזמן שפעולת ההצפנה מחדש מתבצעת.
- במכונות שמשתמשות באפשרות האחסון Google Cloud Hyperdisk Balanced, פעולת ההצפנה מחדש גורמת לזמן השבתה שתלוי בגודל המכונה או הרפליקה.
- הרפליקות של המכונה לא מוצפנות מחדש כשהמכונה מוצפנת מחדש. צריך להצפין מחדש כל רפליקה בנפרד.
- כשמצפינים מחדש את המכונה, הגיבויים לא מוצפנים מחדש באופן אוטומטי באמצעות גרסת המפתח החדשה. כדי לשחזר את הגיבוי או את המערכת מנקודה מסוימת בזמן (PITR) למועד שאחרי ביצוע הגיבוי, צריך לשמור את גרסת המפתח של Cloud KMS שבאמצעותה הגיבוי הוצפן.
- גיבויים שנוצרו אחרי רוטציה של מפתח Cloud KMS שבאמצעותו המכונה מוצפנת, ישתמשו בגרסת המפתח הראשי של המפתח הזה באופן אוטומטי, גם אם המכונה לא מוצפנת באמצעות גרסת המפתח הזו.
כדי לפתור בעיות, אפשר לעיין בטבלה לפתרון בעיות בהצפנה מחדש.
גיבויים משופרים
כשמשתמשים בגיבויים משופרים כדי להגן על מכונה שמופעל בה CMEK, הגיבויים משתמשים באופן אוטומטי באותו CMEK כמו המכונה. אפשר לגבות מכונות עם CMEK רק בכספת גיבוי עם CMEK, אבל הגיבויים של Cloud SQL בכספת הגיבוי יוצפנו באמצעות ה-CMEK שעבר בירושה מהמכונה, ולא באמצעות המפתח של הכספת.
כדי להפעיל גיבויים משופרים למכונה, צריך לבצע את השלבים שמפורטים במאמר גיבוי מכונות של Cloud SQL בכספת גיבוי.
שימוש ב-Cloud External Key Manager (Cloud EKM)
כדי להגן על הנתונים במכונות של Cloud SQL, אתם יכולים להשתמש במפתחות שמנוהלים בשותף חיצוני נתמך לניהול מפתחות. מידע נוסף זמין במאמר Cloud External Key Manager, כולל בקטע שיקולים.
כשאתם מוכנים ליצור מפתח Cloud EKM, תוכלו להיעזר במאמר ניהול מפתחות Cloud EKM. אחרי שיוצרים מפתח, צריך לספק את שם המפתח כשיוצרים מכונה של Cloud SQL.
אתם יכולים להשתמש ב-Key Access Justifications כחלק מ-Cloud EKM. התכונה "הצדקות גישה למפתחות" מאפשרת לכם לראות את הסיבה לכל בקשה של Cloud EKM. בנוסף, אתם יכולים לאשר או לדחות בקשה באופן אוטומטי על סמך ההצדקה שסופקה. למידע נוסף, קראו את הסקירה הכללית על הצדקות לבקשות גישה למפתחות.
לכן, בעזרת "הצדקות לגישה למפתחות" אתם יכולים לשלוט טוב יותר בנתונים שלכם, כי אתם מקבלים הצדקה לכל ניסיון לפענח את הנתונים.
ל-Google אין שליטה על הזמינות של המפתחות במערכת של שותף חיצוני לניהול מפתחות.
השבתה והפעלה מחדש של גרסאות מפתחות
מומלץ לקרוא את הנושאים הבאים:
פתרון בעיות
בקטע הזה מתוארות פעולות שאפשר לנסות כשמקבלים הודעת שגיאה בזמן ההגדרה או השימוש במכונות שמופעל בהן CMEK.
פעולות של אדמין ב-Cloud SQL, כמו יצירה, שכפול או עדכון, עלולות להיכשל בגלל שגיאות ב-Cloud KMS, או בגלל תפקידים או הרשאות חסרים. סיבות נפוצות לכשל כוללות גרסת מפתח חסרה של Cloud KMS, גרסת מפתח מושבתת או הרוסה של Cloud KMS, הרשאות IAM לא מספיקות כדי לגשת לגרסת המפתח של Cloud KMS, או שגרסת המפתח של Cloud KMS נמצאת באזור אחר מהמכונה של Cloud SQL. אתם יכולים להיעזר בטבלה הבאה כדי לאבחן ולפתור בעיות נפוצות.
טבלת פתרון בעיות במפתחות הצפנה בניהול הלקוח
| אם מופיעה השגיאה הזו… | יכול להיות שהבעיה היא... | אפשר לנסות את זה… |
|---|---|---|
| לא נמצא חשבון שירות לכל מוצר ולכל פרויקט | השם של חשבון השירות שגוי. | מוודאים שיצרתם חשבון שירות לפרויקט המשתמש הנכון.
|
| אי אפשר לתת גישה לחשבון השירות | לחשבון המשתמש אין הרשאה לתת גישה לגרסת המפתח הזו. | מוסיפים את התפקיד Organization Administrator לחשבון המשתמש או לחשבון השירות.
|
| גרסת המפתח של Cloud KMS הושמדה | גרסת המפתח מושמדת. | אם גרסת המפתח מושמדת, אי אפשר להשתמש בה כדי להצפין או לפענח נתונים. |
| גרסת המפתח של Cloud KMS מושבתת | גרסת המפתח מושבתת. | מפעילים מחדש את גרסת המפתח של Cloud KMS.
|
| אין מספיק הרשאות כדי להשתמש במפתח Cloud KMS | התפקיד cloudkms.cryptoKeyEncrypterDecrypter חסר במשתמש או בחשבון השירות שמשמשים להפעלת פעולות במכונות Cloud SQL, או שגרסת המפתח של Cloud KMS לא קיימת. |
בפרויקט Google Cloud שמארח את המפתח, מוסיפים את התפקיד cloudkms.cryptoKeyEncrypterDecrypter לחשבון המשתמש או לחשבון השירות.
אם התפקיד כבר הוקצה לחשבון שלכם, קראו את המאמר יצירת מפתח כדי ללמוד איך ליצור גרסת מפתח חדשה. ראו הערה. |
| מפתח Cloud KMS לא נמצא | גרסת המפתח לא קיימת. | יוצרים גרסת מפתח חדשה. איך יוצרים מפתח? ראו הערה. |
| אין גישה למפתח EKM | אין גישה למפתח של External Key Manager (EKM) במשך כמה שעות. גם אחרי כמה ניסיונות חוזרים, עדיין אי אפשר לגשת למפתח ה-EKM.
אם המכונה מושעית כי המפתח לא זמין, אבל המפתח מוצג כפעיל וזמין במסוף Google Cloud , כנראה שהבעיה היא בחיבור או באימות של ה-EKM. |
בודקים את סטטוס החיבור של ה-EKM ופותרים את הבעיה מול ספק ה-EKM.
|
| המכונה של Cloud SQL והגרסה של מפתח Cloud KMS נמצאות באזורים שונים | גרסת המפתח של Cloud KMS והמכונה של Cloud SQL צריכות להיות באותו אזור. היא לא פועלת אם גרסת המפתח של Cloud KMS נמצאת באזור גלובלי או במספר אזורים. | יוצרים גרסת מפתח באותו אזור שבו רוצים ליצור מכונות. איך יוצרים מפתח? ראו הערה. |
| גרסת המפתח של Cloud KMS שוחזרה, אבל המכונה עדיין מושעית כמה דקות לאחר מכן. | תהליך האימות הפנימי של המכונה יכול להימשך עד 10 דקות, ואז המכונה תהיה זמינה שוב. | מחכים 10 דקות עד שהמכונה תהיה זמינה. |
| גרסת המפתח של Cloud KMS שוחזרה, אבל המכונה עדיין מושעית אחרי יותר מ-10 דקות. | גרסת המפתח מושבתת או שהיא לא מעניקה את ההרשאות המתאימות. | מפעילים מחדש את גרסת המפתח ומקצים את התפקיד cloudkms.cryptoKeyEncrypterDecrypter למשתמש או לחשבון השירות בפרויקט Google Cloud שמארח את המפתח. |
טבלה לפתרון בעיות בהצפנה מחדש
| אם מופיעה השגיאה הזו… | יכול להיות שהבעיה היא... | אפשר לנסות את זה… |
|---|---|---|
| ההצפנה מחדש של משאב ה-CMEK נכשלה כי אין גישה למפתח Cloud KMS. חשוב לוודא שגרסת המפתח הראשי מופעלת ושההרשאה ניתנה כמו שצריך. | גרסת המפתח מושבתת או שהיא לא מעניקה את ההרשאות המתאימות. | מפעילים מחדש את גרסת המפתח של Cloud KMS: בפרויקט ב- Google Cloud שמארח את המפתח, מוודאים שהתפקיד |
| ההצפנה מחדש של משאב CMEK נכשלה בגלל שגיאה פנימית בשרת. אפשר לנסות שוב מאוחר יותר | יש שגיאת שרת פנימית. | מנסים להצפין מחדש. מידע נוסף זמין במאמר הצפנה מחדש של מכונה או רפליקה קיימת שמופעל בהן CMEK. |
המאמרים הבאים
- הגדרת הגישה למכונה.
- מתחברים למכונה באמצעות לקוח.
- יוצרים מסד נתונים במכונה.
- מייבאים נתונים למכונה.
- יוצרים משתמשים במכונה.
- מידע נוסף על הגדרות המכונה
- איך מוסיפים הצדקות לגישה למפתחות