בדף הזה מוסבר איך להצפין נתונים שמאוחסנים במופעים של AML AI באמצעות מפתחות הצפנה בניהול הלקוח (CMEK).
סקירה כללית
כל נתוני הלקוחות במופע של AML AI מוצפנים במצב מנוחה באמצעות מפתח CMEK. אתם יוצרים את המפתח ומנהלים אותו ב-Cloud Key Management Service (Cloud KMS), ושולטים בגישה למפתח באמצעות ניהול זהויות והרשאות גישה (IAM). אם משביתים באופן זמני או משמידים באופן סופי את מפתח ה-CMEK, אי אפשר לגשת לנתונים שהוצפנו באמצעות המפתח הזה.
AML AI תומך ב-CMEK רק באמצעות Cloud KMS. הוא לא תומך בהצפנה של Google כברירת מחדל.
מפתחות CMEK מאפשרים לכם לשלוט במפתחות, כולל רמת ההגנה, המיקום, לוח הזמנים של הרוטציה, השימוש והרשאות הגישה, והגבולות הקריפטוגרפיים. בנוסף, השימוש ב-Cloud KMS מאפשר לכם לראות יומני ביקורת ולשלוט במחזורי החיים של המפתחות, אבל הוא גם כרוך בעלויות נוספות של שירות Cloud KMS.
אפשר להפעיל את Cloud KMS באותו Google Cloud פרויקט כמו AML AI, או בפרויקט נפרד שבו מנהלים באופן מרכזי מפתחות לכמה פרויקטים.
הגדרת ההצפנה נקבעת כשיוצרים מכונה. אחרי שיוצרים מופע, אי אפשר להקצות לו מפתח אחר של Cloud KMS. עדיין אפשר לסובב את המפתח.
מידע נוסף על CMEK באופן כללי מופיע במסמכי התיעוד של Cloud KMS.
רמות ההגנה
ב-Cloud KMS אפשר לבחור מתוך מגוון של רמות הגנה שונות, כולל:
- מפתחות תוכנה
- מודולים של אבטחת חומרה (HSM) באמצעות Cloud HSM
CMEK ב-AML AI לא כל רמות ההגנה זמינות בכל האזורים. שימו לב ש-AML AI לא תומך במפתחות הצפנה באספקת הלקוח (CSEK) או ב-Cloud External Key Manager.
נתוני לקוחות
כל נתוני הלקוחות שמטופלים על ידי AML AI מוצפנים במצב מנוחה באמצעות מפתח CMEK שצוין במשאב Instance המתאים ברמת ההורה. זה כולל את כל נתוני הלקוחות שמשויכים למשאבי AML AI, כמו מערכי נתונים, הגדרות מנוע, מודלים ועוד. כל האחסון הזמני והקבוע של נתוני הלקוחות, כולל עותקים של נתוני קלט ופלט, תכונות של למידת מכונה שנוצרו, היפר-פרמטרים של המודל, משקלים של המודל ותוצאות של תחזיות, מוצפן באמצעות מפתח ה-CMEK של המופע המתאים.
הגדרה של נתוני לקוחות מופיעה בתנאים הספציפיים לשירות. יכול להיות שההגדרה לא כוללת מזהי משאבים, מאפיינים או תוויות נתונים אחרות.
הצפנה של נתוני קלט ופלט
הגדרת ההצפנה של AML AI במופע משמשת רק למשאבי AML AI ולנתונים שלהם. AML AI לא מנהל את ההצפנה של נתוני הקלט או הפלט בפרויקט Google Cloud. אם אתם רוצים שהנתונים האלה יוצפנו באמצעות CMEK, אתם צריכים להגדיר מפתח Cloud KMS שיתאים לרמת ההגנה על המפתח שבחרתם והגדרתם במערך הנתונים ב-BigQuery. אפשר גם להשתמש מחדש באותו מפתח שבו נעשה שימוש ב-AML AI.
רוטציית מפתחות
השיטה המומלצת לשמירה על האבטחה היא לבצע רוטציה של המפתחות באופן תקופתי ואוטומטי. עם CMEK, אתם שולטים ברוטציית המפתחות. כשמבצעים רוטציה למפתח, נתונים שהוצפנו באמצעות גרסאות קודמות של המפתח לא מוצפנים מחדש באופן אוטומטי באמצעות גרסת המפתח החדשה.
יכול להיות שמשאב יחיד של AML AI יאוחסן באופן פנימי בכמה יחידות. אם במהלך משך החיים של משאב AML AI מתבצעת רוטציה של גרסת המפתח, יכול להיות שלא כל היחידות יוצפנו באמצעות אותה גרסת מפתח.
אם מבצעים רוטציה של מפתח, אין דרך ב-AML AI לאלץ הצפנה מחדש או לקבוע אם בטוח למחוק גרסאות ישנות יותר של מפתח.
מידע נוסף על רוטציית מפתחות עם Cloud KMS
יצירת מפתח והענקת הרשאות
בהוראות הבאות מוסבר איך ליצור מפתח למופע ולהעניק הרשאות להצפנה ולפענוח של נתוני המופע באמצעות המפתח.
ב Google Cloud פרויקט שבו רוצים לנהל את המפתחות:
יוצרים אוסף מפתחות באמצעות method
projects.locations.keyRings.create. המיקום של אוסף המפתחות ב-Cloud KMS צריך להיות זהה למיקום המופע שאתם מצפינים.REST
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
KMS_PROJECT_ID: מזהה הפרויקט שמכיל את מחזיק המפתחות Google Cloud -
LOCATION: המיקום של אוסף המפתחות. צריך להשתמש באחד מהאזורים הנתמכים.הצגת מיקומיםus-central1us-east1asia-south1europe-west1europe-west2europe-west4europe-west6me-central2northamerica-northeast1southamerica-east1australia-southeast1
-
KEY_RING_ID: מזהה מוגדר על ידי המשתמש עבור אוסף המפתחות
כדי לשלוח את הבקשה אתם צריכים לבחור אחת מהאפשרויות הבאות:
curl
מריצים את הפקודה הבאה:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings?key_ring_id=KEY_RING_ID"PowerShell
מריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings?key_ring_id=KEY_RING_ID" | Select-Object -Expand Contentאתם אמורים לקבל תגובת JSON שדומה לזו:
{ "name": "projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID", "createTime": "2023-03-14T15:52:55.358979323Z" }gcloud
לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
-
KMS_PROJECT_ID: מזהה הפרויקט שמכיל את מחזיק המפתחות Google Cloud -
LOCATION: המיקום של אוסף המפתחות. צריך להשתמש באחד מהאזורים הנתמכים.הצגת מיקומיםus-central1us-east1asia-south1europe-west1europe-west2europe-west4europe-west6me-central2northamerica-northeast1southamerica-east1australia-southeast1
-
KEY_RING_ID: מזהה מוגדר על ידי המשתמש עבור אוסף המפתחות
מריצים את הפקודה הבאה:
Linux, macOS או Cloud Shell
gcloud kms keyrings create KEY_RING_ID \ --project KMS_PROJECT_ID --location LOCATION
Windows (PowerShell)
gcloud kms keyrings create KEY_RING_ID ` --project KMS_PROJECT_ID --location LOCATION
אמורה להתקבל תגובה ריקה:Windows (cmd.exe)
gcloud kms keyrings create KEY_RING_ID ^ --project KMS_PROJECT_ID --location LOCATION
$
-
יוצרים מפתח באמצעות ה-method
projects.locations.keyRings.cryptoKeys.REST
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
KMS_PROJECT_ID: מזהה הפרויקט שמכיל את מחזיק המפתחות Google Cloud -
LOCATION: המיקום של אוסף המפתחות. צריך להשתמש באחד מהאזורים הנתמכים.הצגת מיקומיםus-central1us-east1asia-south1europe-west1europe-west2europe-west4europe-west6me-central2northamerica-northeast1southamerica-east1australia-southeast1
-
KEY_RING_ID: המזהה שהמשתמש הגדיר לאוסף המפתחות -
KEY_ID: מזהה מוגדר על ידי המשתמש עבור המפתח
תוכן בקשת JSON:
{ "purpose": "ENCRYPT_DECRYPT" }כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם
request.json. כדי ליצור או להחליף את הקובץ הזה בספרייה הנוכחית, מריצים את הפקודה הבאה בטרמינל:cat > request.json << 'EOF' { "purpose": "ENCRYPT_DECRYPT" } EOFלאחר מכן מבצעים את הפקודה הבאה כדי לשלוח את בקשת ה-REST:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys?crypto_key_id=KEY_ID"PowerShell
שומרים את גוף הבקשה בקובץ בשם
request.json. כדי ליצור או להחליף את הקובץ הזה בספרייה הנוכחית, מריצים את הפקודה הבאה בטרמינל:@' { "purpose": "ENCRYPT_DECRYPT" } '@ | Out-File -FilePath request.json -Encoding utf8לאחר מכן מבצעים את הפקודה הבאה כדי לשלוח את בקשת ה-REST:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys?crypto_key_id=KEY_ID" | Select-Object -Expand Contentאתם אמורים לקבל תגובת JSON שדומה לזו:
{ "name": "projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys/KEY_ID", "primary": { "name": "projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys/KEY_ID/cryptoKeyVersions/1", "state": "ENABLED", "createTime": "2023-03-14T15:52:55.358979323Z", "protectionLevel": "SOFTWARE", "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION", "generateTime": "2023-03-14T15:52:55.358979323Z" }, "purpose": "ENCRYPT_DECRYPT", "createTime": "2023-03-14T15:52:55.358979323Z", "versionTemplate": { "protectionLevel": "SOFTWARE", "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION" }, "destroyScheduledDuration": "86400s" }gcloud
לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
-
KMS_PROJECT_ID: מזהה הפרויקט שמכיל את מחזיק המפתחות Google Cloud -
LOCATION: המיקום של אוסף המפתחות. צריך להשתמש באחד מהאזורים הנתמכים.הצגת מיקומיםus-central1us-east1asia-south1europe-west1europe-west2europe-west4europe-west6me-central2northamerica-northeast1southamerica-east1australia-southeast1
-
KEY_RING_ID: המזהה שהמשתמש הגדיר לאוסף המפתחות -
KEY_ID: מזהה מוגדר על ידי המשתמש עבור המפתח
מריצים את הפקודה הבאה:
Linux, macOS או Cloud Shell
gcloud kms keys create KEY_ID \ --keyring KEY_RING_ID \ --project KMS_PROJECT_ID \ --location LOCATION \ --purpose "encryption"
Windows (PowerShell)
gcloud kms keys create KEY_ID ` --keyring KEY_RING_ID ` --project KMS_PROJECT_ID ` --location LOCATION ` --purpose "encryption"
אמורה להתקבל תגובה ריקה:Windows (cmd.exe)
gcloud kms keys create KEY_ID ^ --keyring KEY_RING_ID ^ --project KMS_PROJECT_ID ^ --location LOCATION ^ --purpose "encryption"
$
-
אם לא יצרתם מכונה של AML AI בפרויקט AML AI, חשבון השירות של AML AI עדיין לא קיים. יוצרים את חשבון השירות.
לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו פועל AML AI Google Cloud
מריצים את הפקודה הבאה:
Linux, macOS או Cloud Shell
gcloud beta services identity create --service=financialservices.googleapis.com --project=PROJECT_ID
Windows (PowerShell)
gcloud beta services identity create --service=financialservices.googleapis.com --project=PROJECT_ID
Windows (cmd.exe)
gcloud beta services identity create --service=financialservices.googleapis.com --project=PROJECT_ID
אמורים לקבל תגובה שדומה לזו:
Service identity created: service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com
-
מקצים לחשבון השירות של AML AI את התפקיד CryptoKey Encrypter/Decrypter ב-IAM (
roles/cloudkms.cryptoKeyEncrypterDecrypter). צריך לתת את ההרשאה הזו למפתח שיצרתם.לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו פועל AML AI Google Cloud -
KEY_ID: המזהה שהמשתמש מגדיר למפתח -
LOCATION: המיקום של אוסף המפתחות. צריך להשתמש באחד מהאזורים הנתמכים.הצגת מיקומיםus-central1us-east1asia-south1europe-west1europe-west2europe-west4europe-west6me-central2northamerica-northeast1southamerica-east1australia-southeast1
-
KEY_RING_ID: מזהה מוגדר על ידי המשתמש עבור אוסף המפתחות -
PROJECT_NUMBER: Google Cloud מספר הפרויקט של הפרויקט שבו פועל AML AI
מריצים את הפקודה הבאה:
Linux, macOS או Cloud Shell
gcloud kms keys add-iam-policy-binding KEY_ID --project=PROJECT_ID \ --location LOCATION --keyring=KEY_RING_ID \ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Windows (PowerShell)
gcloud kms keys add-iam-policy-binding KEY_ID --project=PROJECT_ID ` --location LOCATION --keyring=KEY_RING_ID ` --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com ` --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Windows (cmd.exe)
gcloud kms keys add-iam-policy-binding KEY_ID --project=PROJECT_ID ^ --location LOCATION --keyring=KEY_RING_ID ^ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com ^ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
אמורים לקבל תגובה שדומה לזו:
Updated IAM policy for key KEY_ID. bindings: - members: - serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com role: roles/cloudkms.cryptoKeyEncrypterDecrypter etag: BwYCq0Sq4Ho= version: 1
מידע נוסף על הפקודה הזו זמין במאמר gcloud kms keys add-iam-policy-binding.
-
עכשיו אפשר ליצור מכונה ולציין את המפתח שבו רוצים להשתמש להצפנה.
הסרת הגישה
יש כמה דרכים להסיר את הגישה למפתח מהמופע המוצפן באמצעות CMEK:
- ביטול התפקיד Cloud KMS CryptoKey Encrypter/Decrypter מחשבון השירות של AML AI באמצעות Google Cloud המסוף או ה-CLI של gcloud
- השבתה זמנית של מפתח ה-CMEK
- השמדה סופית של מפתח ה-CMEK
מומלץ לבטל את ההרשאות מחשבון השירות של AML AI לפני השבתה או השמדה של מפתח. השינויים בהרשאות מועברים תוך שניות, כך שאפשר לראות את ההשפעות של השבתה או השמדה של מפתח.
כשמשביתים או משמידים את מפתח ההצפנה של מכונה, מאבדים את היכולת להשתמש בנתוני לקוחות שמשויכים למכונה או לאחזר אותם. לא תהיה יותר גישה לכל נתוני הלקוחות שמאוחסנים במופע, כולל מודלים, הגדרות מנוע, תוצאות של בדיקות היסטוריות ותוצאות של תחזיות. משתמשים עם כל תפקיד של צופה ב-AML AI עדיין יכולים לראות שדות כמו שם המופע או שדות משאבים אחרים שמוחזרים על ידי אחזור משאבי AML AI.
כל הפעולות שמשתמשות בנתוני לקוחות או מייצאות אותם, למשל ייצוא מטא-נתונים של backtestResults, ייכשלו.
משתמשים עם תפקיד אדמין או בעלים של AML AI יכולים למחוק את המופע.
מדיניות הארגון ל-CMEK
AML AI לא תומך במדיניות הארגון לגבי CMEK. עם זאת, תמיד נדרש שימוש ב-CMEK ב-AML AI, ללא קשר constraints/gcp.restrictNonCmekServicesלמדיניות הארגון.
אינטראקציה עם VPC-SC
אם הגדרתם את AML AI בתוך היקף של VPC-SC, עדיין צריך להעניק לחשבון השירות גישה למפתח ה-CMEK. אם המפתח לא נמצא באותו היקף של VPC-SC, יש כמה דרכים לעשות את זה, כולל:
- שימוש בכלל יציאה כדי להוסיף את המשאב לרשימת ההיתרים
- שימוש בקישור בין רשתות VPC שכנות (peering) של היקף
מה השלב הבא?
- יצירת מופע
- מידע נוסף על CMEK