בדף הזה מוסבר איך משתמשים ב-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 ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד 'יצירת פרויקטים' (
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 .
-
אם משתמשים בפרויקט קיים, מוודאים שיש את ההרשאות הנדרשות כדי להשלים את ההדרכה. אם משתמשים בפרויקט חדש, לא צריך לוודא כי כבר יש את ההרשאות הנדרשות.
מפעילים את Sensitive Data Protection API ואת Cloud KMS API, אם הם עדיין לא מופעלים:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים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 ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד 'יצירת פרויקטים' (
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 .
-
אם משתמשים בפרויקט קיים, מוודאים שיש את ההרשאות הנדרשות כדי להשלים את ההדרכה. אם משתמשים בפרויקט חדש, לא צריך לוודא כי כבר יש את ההרשאות הנדרשות.
מפעילים את Sensitive Data Protection API ואת Cloud KMS API, אם הם עדיין לא מופעלים:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים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
בקטע הזה מוסבר איך ליצור מפתח הצפנה בתקן Advanced Encryption Standard (AES) ולקודד אותו בפורמט Base64.
יוצרים מפתח AES של 128, 192 או 256 ביטים. הפקודה הבאה משתמשת ב-
opensslכדי ליצור מפתח של 256 ביט בספרייה הנוכחית: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 בתגובה.
זהו המפתח העטוף שלכם.
המאמרים הבאים
בדוגמה הבאה מוסבר איך ליצור מפתח עטוף, ליצור טוקניזציה של תוכן ולשחזר פרטי זיהוי של תוכן שעבר טוקניזציה.
מידע נוסף על שיטות להסרת פרטי זיהוי שמשתמשות במפתח הארוז הזה, ודוגמאות קוד