בדף הזה מוסבר איך להשתמש ב-Cloud Key Management Service (Cloud KMS) כדי ליצור מפתח עטוף שאפשר להשתמש בו כדי לשלוח בקשות deidentify ו-reidentify אל Cloud Data Loss Prevention API של Sensitive Data Protection.
התהליך של שימוש במפתח קריפטוגרפי כדי להסיר פרטי זיהוי מתוכן ולשחזר פרטי זיהוי נקרא פסאודונימיזציה (או טוקניזציה). מידע על המושגים שקשורים לתהליך הזה זמין במאמר בנושא פסאודונימיזציה.
דוגמה ליצירת מפתח מוצפן, לטוקניזציה של תוכן ולזיהוי מחדש של תוכן שעבר טוקניזציה מופיעה במאמר ביטול הזיהוי וזיהוי מחדש של טקסט רגיש.
אפשר להשלים את השלבים במסמך הזה תוך 5 עד 10 דקות, לא כולל השלבים שבקטע לפני שמתחילים.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
יוצרים או בוחרים Google Cloud פרויקט.
תפקידים שנדרשים כדי לבחור או ליצור פרויקט
- Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים
-
יוצרים Google Cloud פרויקט:
gcloud projects create PROJECT_ID
מחליפים את
PROJECT_IDבשם של פרויקט Google Cloud שיוצרים. -
בוחרים את הפרויקט שיצרתם: Google Cloud
gcloud config set project PROJECT_ID
מחליפים את
PROJECT_IDבשם הפרויקט ב- Google Cloud .
-
אם משתמשים בפרויקט קיים, מוודאים שיש את ההרשאות הנדרשות כדי להשלים את ההדרכה. אם משתמשים בפרויקט חדש, לא צריך לוודא כי כבר יש את ההרשאות הנדרשות.
מפעילים את ממשקי ה-API של Cloud KMS ושל Sensitive Data Protection:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידיםgcloud services enable dlp.googleapis.com
cloudkms.googleapis.com -
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
יוצרים או בוחרים Google Cloud פרויקט.
תפקידים שנדרשים כדי לבחור או ליצור פרויקט
- Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים
-
יוצרים Google Cloud פרויקט:
gcloud projects create PROJECT_ID
מחליפים את
PROJECT_IDבשם של פרויקט Google Cloud שיוצרים. -
בוחרים את הפרויקט שיצרתם: Google Cloud
gcloud config set project PROJECT_ID
מחליפים את
PROJECT_IDבשם הפרויקט ב- Google Cloud .
-
אם משתמשים בפרויקט קיים, מוודאים שיש את ההרשאות הנדרשות כדי להשלים את ההדרכה. אם משתמשים בפרויקט חדש, לא צריך לוודא כי כבר יש את ההרשאות הנדרשות.
מפעילים את ממשקי ה-API של Cloud KMS ושל Sensitive Data Protection:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידיםgcloud services enable dlp.googleapis.com
cloudkms.googleapis.com
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות ליצירת מפתח AES עטוף, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:
- אדמין של Cloud KMS (
roles/cloudkms.admin) - Cloud KMS CryptoKey Encrypter (
roles/cloudkms.cryptoKeyEncrypter)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
יצירה של אוסף מפתחות ומפתח
לפני שמתחילים את התהליך הזה, צריך להחליט איפה רוצים ש-Sensitive Data Protection יעבד את הבקשות להסרת פרטי הזיהוי ולזיהוי מחדש. כשיוצרים מפתח Cloud KMS, צריך לאחסן אותו ב-global או באותו אזור שבו ישמש לבקשות שלכם ל-Sensitive Data Protection.
אחרת, בקשות Sensitive Data Protection ייכשלו.
רשימת המיקומים הנתמכים מופיעה במאמר בנושא מיקומים ב-Sensitive Data Protection. שימו לב לשם האזור שבחרתם (לדוגמה, us-west1).
בפרוצדורה הזו, global משמש כמיקום לכל בקשות ה-API. אם רוצים להשתמש באזור אחר, מחליפים את global בשם האזור.
יוצרים אוסף מפתחות:
gcloud kms keyrings create "dlp-keyring" \ --location "global"יוצרים מפתח:
gcloud kms keys create "dlp-key" \ --location "global" \ --keyring "dlp-keyring" \ --purpose "encryption"מציגים את אוסף המפתחות והמפתח:
gcloud kms keys list \ --location "global" \ --keyring "dlp-keyring"הפלט שמתקבל:
NAME: projects/<var>PROJECT_ID</var>/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key PURPOSE: ENCRYPT_DECRYPT ALGORITHM: GOOGLE_SYMMETRIC_ENCRYPTION PROTECTION_LEVEL: SOFTWARE LABELS: PRIMARY_ID: 1 PRIMARY_STATE: ENABLEDבפלט הזה,
PROJECT_IDהוא מזהה הפרויקט.הערך של
NAMEהוא השם המלא של המשאב של מפתח Cloud KMS. חשוב לשמור את הערך הזה כי הוא נדרש לבקשות להסרת פרטי זיהוי ולשחזור פרטי זיהוי.
יצירת מפתח AES בקידוד Base64
בקטע הזה מוסבר איך ליצור מפתח הצפנה בתקן AES (Advanced Encryption Standard) ולקודד אותו בפורמט Base64.
יוצרים מפתח AES של 128, 192 או 256 ביט. הפקודה הבאה משתמשת ב-
opensslכדי ליצור מפתח של 256-bit בספרייה הנוכחית:openssl rand -out "./aes_key.bin" 32הקובץ
aes_key.binנוסף לספרייה הנוכחית.מקודדים את מפתח ה-AES כמחרוזת base64:
base64 -i ./aes_key.binהפלט אמור להיראות כך:
uEDo6/yKx+zCg2cZ1DBwpwvzMVNk/c+jWs7OwpkMc/s=
עטיפת מפתח ה-AES באמצעות מפתח Cloud KMS
בקטע הזה מתואר איך להשתמש במפתח Cloud KMS שיצרתם ביצירה של אוסף מפתחות ומפתח כדי לארוז את מפתח ה-AES בקידוד Base64 שיצרתם ביצירה של מפתח AES בקידוד Base64.
כדי לארוז את מפתח ה-AES, משתמשים ב-curl כדי לשלוח את הבקשה הבאה ל-method projects.locations.keyRings.cryptoKeys.encrypt של Cloud KMS API:
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key:encrypt" \
--request "POST" \
--header "Authorization:Bearer $(gcloud auth application-default print-access-token)" \
--header "content-type: application/json" \
--data "{\"plaintext\": \"BASE64_ENCODED_AES_KEY\"}"
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
BASE64_ENCODED_AES_KEY: המחרוזת בקידוד base64 שמוחזרת ביצירת מפתח AES בקידוד base64.
התגובה שמתקבלת מ-Cloud KMS דומה ל-JSON הבא:
{
"name": "projects/<var>PROJECT_ID</var>/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key/cryptoKeyVersions/1",
"ciphertext": "CiQAYuuIGo5DVaqdE0YLioWxEhC8LbTmq7Uy2G3qOJlZB7WXBw0SSQAjdwP8ZusZJ3Kr8GD9W0vaFPMDksmHEo6nTDaW/j5sSYpHa1ym2JHk+lUgkC3Zw5bXhfCNOkpXUdHGZKou1893O8BDby/82HY=",
"ciphertextCrc32c": "901327763",
"protectionLevel": "SOFTWARE"
}
בפלט הזה, PROJECT_ID הוא מזהה הפרויקט.
שימו לב לערך של ciphertext בתגובה.
זה המפתח העטוף.
המאמרים הבאים
דוגמה שממחישה איך יוצרים מפתח עטוף, מבצעים טוקניזציה של תוכן ולשחזר פרטי זיהוי של תוכן שעבר טוקניזציה.
מידע נוסף על שיטות להסרת פרטים מזהים באמצעות המפתח המוצפן הזה ודוגמאות קוד