בדף הזה מוסבר איך להגדיר חשבון שירות ומפתחות למפתחות הצפנה בניהול הלקוח, ואיך ליצור מכונה שמשתמשת במפתח הצפנה בניהול הלקוח שנוצר באופן ידני. במאמר סקירה כללית על מפתחות הצפנה בניהול הלקוח מוסבר בהרחבה על שימוש במפתחות הצפנה בניהול הלקוח ב-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.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
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.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init - מוודאים שיש לכם תפקיד אדמין ב-Cloud SQL בחשבון המשתמש.
מפעילים את Cloud Key Management Service API.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידיםמפעילים את Cloud SQL Admin API.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידים
תהליך העבודה ליצירת מכונה של Cloud SQL עם CMEK
- משתמשי gcloud ו-API בלבד: יוצרים חשבון שירות לכל פרויקט שנדרשים בו מפתחות הצפנה בניהול הלקוח.
- יוצרים אוסף מפתחות ומפתח ומגדירים את המיקום של כל מפתח. המיקום הוא אזור Google Cloud .
- משתמשי gcloud ו-API בלבד: מעניקים לחשבון השירות גישה למפתח.
- רושמים את מזהה המפתח (KMS_KEY_ID), את מיקום המפתח (GCP_REGION) ואת מזהה אוסף המפתחות (KMS_KEYRING_ID).
- עוברים לפרויקט ויוצרים מופע Cloud SQL עם האפשרויות הבאות:
- אותו מיקום כמו מפתח ההצפנה בניהול הלקוח
- הגדרת מפתח בניהול הלקוח
- מזהה מפתח ההצפנה בניהול הלקוח
הצפנת CMEK מופעלת עכשיו במופע Cloud SQL.
יצירה של חשבון שירות
צריך ליצור חשבון שירות לכל פרויקט שנדרשים בו מפתחות הצפנה בניהול הלקוח.
כדי לאפשר למשתמש לנהל חשבונות שירות, צריך להקצות לו אחד מהתפקידים הבאים:
- משתמש בחשבון שירות (
roles/iam.serviceAccountUser): כולל הרשאות להצגת רשימה של חשבונות שירות, לקבלת פרטים על חשבון שירות ולחיקוי של חשבון שירות. - אדמין בחשבון שירות (
roles/iam.serviceAccountAdmin): כולל הרשאות להצגת רשימה של חשבונות שירות ולקבלת פרטים על חשבון שירות. כולל גם הרשאות ליצור, לעדכן ולמחוק חשבונות שירות, ולצפות במדיניות של Cloud SQL ל-SQL Server בחשבון שירות או לשנות אותה.
נכון לעכשיו, אפשר להשתמש רק בפקודות של ה-CLI של gcloud כדי ליצור את סוג חשבון השירות שנדרש למפתחות הצפנה בניהול הלקוח. אם אתם משתמשים במסוף, Cloud SQL יוצר בשבילכם את חשבון השירות הזה באופן אוטומטי.
gcloud
gcloud beta services identity create \ --service=sqladmin.googleapis.com \ --project=PROJECT_ID
Terraform
כדי ליצור חשבון שירות, משתמשים במשאב של Terraform.
החלה של השינויים
כדי להחיל את הגדרות Terraform בפרויקט ב- Google Cloud , מבצעים את השלבים בקטעים הבאים.
הכנת Cloud Shell
- מפעילים את Cloud Shell.
-
מגדירים את פרויקט ברירת המחדל שבו רוצים להחיל את ההגדרות של Terraform. Google Cloud
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
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 (יצירת מחזיק מפתחות).
- מוסיפים שם למחזיק המפתחות. חשוב לשים לב לשם הזה כי תצטרכו אותו כשתעניקו לחשבון השירות גישה למפתח.
- מוסיפים מיקום של מחזיק מפתחות.
- לוחצים על יצירה. ייפתח הדף Create key.
- מוסיפים שם מפתח.
- בשדה מטרה, בוחרים באפשרות הצפנה/פענוח סימטריים.
- בוחרים תקופת רוטציה ותאריך התחלה.
- לוחצים על יצירה.
- בטבלה 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.
- כדי לפתוח את החלונית, לוחצים על Grant access (הענקת גישה).
- מזינים את חשבון השירות כחשבון המשתמש ובוחרים בתפקיד 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 (סוג המכונה והאחסון).
- מרחיבים את האפשרות סוג מכונה ואחסון.
- בקטע Encryption (הצפנה), בוחרים באפשרות Customer-managed key (מפתח בניהול הלקוח).
- בוחרים את מפתח ה-KMS מהתפריט הנפתח או מזינים ידנית את הערך של KMS_KEY_ID. יוצגו רק מפתחות KMS באותו פרויקט ואזור כמו המופע. נעשה שימוש בגרסה הראשית של המפתח, כך שאם מציינים גרסת מפתח בשם המפתח, היא נחתכת. כדי לבחור מפתח KMS ששייך לפרויקט אחר אבל נמצא באותו אזור, בוחרים באפשרות Don't see your key? מזינים את מזהה המשאב של המפתח ומזינים את 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: מחרוזת גרסת Emum (לדוגמה, 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: מחרוזת גרסת Emum (לדוגמה, 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 לא יוצר מפתחות לגיבויים.
איך יוצרים ומנהלים גיבויים לפי דרישה וגיבויים אוטומטיים
בטופס יצירת גיבוי תוצג ההודעה: "הגיבוי יוצפן באמצעות הגרסה הראשית של מפתח ההצפנה לניהול הלקוח של המופע הזה. אם מישהו ישמיד או ישבית את גרסת המפתח הזו, כל נתוני הגיבוי שהוצפנו באמצעות גרסת המפתח הזו יאבדו באופן סופי. אפשר לבדוק את הגרסה הראשית של המפתח ב-Cloud KMS".
בדף הגיבויים, לרשימת הגיבויים שמופעלים בהם מפתחות הצפנה בניהול הלקוח יש שתי עמודות נוספות. עמודה אחת שמראה שהגיבוי הוא עבור מופע עם CMEK, ועמודה שמציגה את גרסת המפתח ששימשה להצפנת הגיבוי.
צפייה בפרטי המפתח של מופע שמופעל בו CMEK
אחרי שיוצרים מכונה של Cloud SQL, אפשר לעיין ברשימת המכונות או בדף הסקירה הכללית של המכונה כדי לראות שהיא נוצרה באמצעות מפתח הצפנה בניהול הלקוח. בפרטים מופיע גם המפתח ששימש ליצירת המופע.
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- ברשימת המופעים, גוללים שמאלה עד שרואים את העמודה הצפנה. בעמודה הזו מופיעים הערכים בניהול Google ובניהול הלקוח.
- לוחצים על שם של מכונה כדי לפתוח את הדף סקירה כללית שלה. מפתח ההצפנה בניהול הלקוח מופיע בחלונית Configuration (הגדרה).
הצפנה מחדש של מכונה או רפליקה קיימת שמופעלת בהן הצפנה באמצעות CMEK
אתם יכולים להצפין מחדש את המופעים והרפליקות הקיימים של Cloud SQL באמצעות הגרסה האחרונה של המפתח הראשי. מידע נוסף על הצפנה מחדש של מופע או העתק קיימים שמופעל בהם CMEK זמין במאמר מידע על מפתחות.
קבלת הגרסה החדשה של המפתח הראשי
כדי להצפין מחדש את המופע או את העותק שלו באמצעות גרסה חדשה, תצטרכו את גרסת המפתח הראשי החדשה. אם אתם צריכים גרסה חדשה של מפתח למכונות שלכם, תצטרכו להחליף את המפתח באמצעות Cloud Key Management Service. כדי לבצע רוטציה של המפתח הראשי, אפשר לעיין במאמר רוטציה של מפתח.
אחרי שרוטציית המפתחות הושלמה, צריך לחכות עד שהשינוי במפתח הראשי יתעדכן לפני שמצפינים מחדש את המכונות. אם השינוי בגרסת המפתח לא עקבי, המופע ימשיך להשתמש בגרסת המפתח הישנה אחרי ההצפנה מחדש. מידע נוסף מופיע במאמר בנושא עקביות של גרסאות מפתחות.
הצפנה מחדש של מופע עם CMEK
אחרי שרוטציית המפתחות מסתיימת, צריך להצפין מחדש את המופע או העותק הקיים שמופעל בו CMEK.
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- כדי לפתוח את הדף סקירה כללית של מכונה, לוחצים על שם המכונה.
- בקטע הגדרה, לוחצים על הצפנה מחדש של המופע.
- בתיבת הדו-שיח שמופיעה, מאשרים את הבחירה על ידי לחיצה על הצפנה מחדש.
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"
}
גיבויים אוטומטיים עם הצפנה מחדש
כשמצפינים מחדש מופע ראשי באמצעות גרסה חדשה של מפתח ראשי, Cloud SQL יוצר באופן אוטומטי גיבוי על פי דרישה שנקרא גיבוי להצפנה מחדש.
ברשימת הגיבויים של מכונת Cloud SQL, הגיבוי של ההצפנה מחדש מופיע כסוג on-demand ומסומן בתווית backup created automatically for data before CMEK re-encryption.
כמו בגיבויים אחרים לפי דרישה, גיבויים של הצפנה מחדש נשמרים עד שמוחקים אותם או מוחקים את המופע.
מגבלות על הצפנה מחדש
כשמצפינים מחדש מופע, חשוב לשים לב למגבלות הבאות:
- אי אפשר לבצע פעולות ניהול אחרות במופע בזמן שפעולת ההצפנה מחדש מתבצעת.
- פעולת ההצפנה מחדש גורמת להשבתה שתלויה בגודל של המופע או העותק המשוכפל.
- רפליקות של מכונה לא מוצפנות מחדש כשמכונה מוצפנת. צריך להצפין מחדש כל רפליקה בנפרד.
- כשמצפינים מחדש את המופע, הגיבויים לא מוצפנים מחדש באופן אוטומטי באמצעות גרסת המפתח החדשה. כדי לשחזר את הגיבוי או את השחזור לנקודת זמן מסוימת לזמן שאחרי יצירת הגיבוי, תצטרכו לשמור את גרסת מפתח 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. | צריך לבדוק את סטטוס החיבור של 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 |
המאמרים הבאים
- הגדרת גישה למופע.
- התחברות למכונה באמצעות לקוח.
- יצירת מסד נתונים במופע.
- ייבוא נתונים למופע.
- יצירת משתמשים במופע.
- מידע נוסף על הגדרות של מופע
- איך מוסיפים הצדקות לגישה למפתחות