הסרת פרטי זיהוי ושחזור פרטי זיהוי של מידע אישי רגיש
התהליך שמתואר במסמך הזה נקרא פסאודונימיזציה (או טוקניזציה). בתהליך הזה, Sensitive Data Protection משתמש במפתח קריפטוגרפי כדי להמיר (להסיר פרטי זיהוי) טקסט רגיש לטוקן. כדי לשחזר את הטקסט הזה (לשחזר פרטי זיהוי), צריך את המפתח הקריפטוגרפי ששימש במהלך הסרת פרטי הזיהוי ואת הטוקן.
Sensitive Data Protection תומך בשיטות קריפטוגרפיות הפיכות ולא הפיכות. כדי לשחזר פרטי זיהוי של תוכן, צריך לבחור שיטה הפיכה.
השיטה הקריפטוגרפית שמתוארת כאן נקראת הצפנה דטרמיניסטית באמצעות AES-SIV (תקן Advanced Encryption Standard במצב וקטור אתחול סינתטי). אנחנו ממליצים על השיטה הזו כי היא מספקת את רמת האבטחה הגבוהה ביותר מבין כל השיטות הקריפטוגרפיות ההפיכות ש-Sensitive Data Protection תומך בהן.
אפשר להשלים את השלבים שבמסמך הזה תוך 10 עד 20 דקות, לא כולל השלבים בקטע לפני שמתחילים.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
יוצרים או בוחרים Google Cloud פרויקט.
התפקידים שנדרשים כדי לבחור או ליצור פרויקט
- בחירת פרויקט: כדי לבחור פרויקט לא נדרש תפקיד 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). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידיםgcloud services enable dlp.googleapis.com
cloudkms.googleapis.com -
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
יוצרים או בוחרים Google Cloud פרויקט.
התפקידים שנדרשים כדי לבחור או ליצור פרויקט
- בחירת פרויקט: כדי לבחור פרויקט לא נדרש תפקיד 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). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידיםgcloud services enable dlp.googleapis.com
cloudkms.googleapis.com
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות ליצירת מפתח AES עטוף, להסרת פרטי הזיהוי של מידע אישי רגיש ולזיהוי מחדש שלו, בקשו מהאדמין להקצות לכם את התפקידים הבאים ב-IAM בפרויקט:
- אדמין ב-Cloud KMS (
roles/cloudkms.admin) - מצפין CryptoKey של Cloud KMS (
roles/cloudkms.cryptoKeyEncrypter) - משתמש DLP (
roles/dlp.user)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
יצירה של אוסף מפתחות ומפתח
לפני שמתחילים בתהליך הזה, צריך להחליט איפה רוצים ש-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 בתגובה.
זהו המפתח העטוף שלכם.
שליחת בקשה להסרת פרטי הזיהוי ל-DLP API
בקטע הזה מוסבר איך להסיר פרטי זיהוי מנתונים רגישים בתוכן טקסט.
כדי להשלים את המשימה הזו, צריך:
- שם המשאב המלא של מפתח Cloud KMS שיצרתם בקטע יצירה של אוסף מפתחות ומפתח.
- המפתח הארוז שיצרתם בקטע אריזת מפתח ה-AES באמצעות מפתח Cloud KMS.
צריך לשמור את הבקשה לדוגמה בקובץ JSON. אם אתם משתמשים ב-Cloud Shell, השתמשו בעורך של Cloud Shell כדי ליצור את הקובץ. כדי להפעיל את העורך, לוחצים על Open Editor בסרגל הכלים של Cloud Shell.
כדי להסיר פרטים אישיים מזהים ממידע רגיש בתוכן טקסטואלי:
יוצרים קובץ בקשת JSON בשם
deidentify-request.jsonעם הטקסט הבא.{ "item": { "value": "My name is Alicia Abernathy, and my email address is aabernathy@example.com." }, "deidentifyConfig": { "infoTypeTransformations": { "transformations": [ { "infoTypes": [ { "name": "EMAIL_ADDRESS" } ], "primitiveTransformation": { "cryptoDeterministicConfig": { "cryptoKey": { "kmsWrapped": { "cryptoKeyName": "projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key", "wrappedKey": "WRAPPED_KEY" } }, "surrogateInfoType": { "name": "EMAIL_ADDRESS_TOKEN" } } } } ] } }, "inspectConfig": { "infoTypes": [ { "name": "EMAIL_ADDRESS" } ] } }מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
WRAPPED_KEY: המפתח הארוז שיצרתם בשלב אריזת מפתח ה-AES באמצעות מפתח Cloud KMS.
חשוב לוודא שהערך שמתקבל ב-
cryptoKeyNameיוצר את שם המשאב המלא של המפתח ב-Cloud KMS.מידע נוסף על הרכיבים של בקשת ה-JSON הזו מופיע במאמר
projects.locations.content.deidentify. אחרי שתסיימו את המשימה הזו, נסו קלטים שונים לבקשה הזו. אפשר להשתמש ב-curlכמו שמתואר כאן. אפשר גם להשתמש ב-APIs Explorer בדף מאמרי העזרה של ה-API, בקטע Try this method.-
משתמשים ב-
curlכדי לשלוח בקשתprojects.locations.content.deidentify:curl -s \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json" \ https://dlp.googleapis.com/v2/projects/PROJECT_ID/locations/global/content:deidentify \ -d @deidentify-request.jsonמחליפים את
PROJECT_IDבמזהה הפרויקט.כדי להעביר שם קובץ אל
curl, משתמשים באפשרות-d(לנתונים) ומקדימים את שם הקובץ בסימן@. הקובץ הזה צריך להיות באותה ספרייה שבה מריצים את הפקודהcurl.התגובה שמתקבלת מ-Sensitive Data Protection דומה ל-JSON הבא:
{ "item": { "value": "My name is Alicia Abernathy, and my email address is EMAIL_ADDRESS_TOKEN(52):AVAx2eIEnIQP5jbNEr2j9wLOAd5m4kpSBR/0jjjGdAOmryzZbE/q." }, "overview": { "transformedBytes": "22", "transformationSummaries": [ { "infoType": { "name": "EMAIL_ADDRESS" }, "transformation": { "cryptoDeterministicConfig": { "cryptoKey": { "kmsWrapped": { "wrappedKey": "CiQAYuuIGo5DVaqdE0YLioWxEhC8LbTmq7Uy2G3qOJlZB7WXBw0SSQAjdwP8ZusZJ3Kr8GD9W0vaFPMDksmHEo6nTDaW/j5sSYpHa1ym2JHk+lUgkC3Zw5bXhfCNOkpXUdHGZKou1893O8BDby/82HY=", "cryptoKeyName": "projects/<var>PROJECT_ID</var>/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key" } }, "surrogateInfoType": { "name": "EMAIL_ADDRESS_TOKEN" } } }, "results": [ { "count": "1", "code": "SUCCESS" } ], "transformedBytes": "22" } ] } }בשדה
item, כתובת האימייל מוחלפת בטוקן כמוEMAIL_ADDRESS_TOKEN(52):AVAx2eIEnIQP5jbNEr2j9wLOAd5m4kpSBR/0jjjGdAOmryzZbE/q. שימו לב לערך של האסימון בתשובה. כדי לשחזר פרטי זיהוי של התוכן שהוסרו ממנו פרטי הזיהוי, מעבירים את הטוקן כולו בבקשה לשחזור פרטי זיהוי.
שליחת בקשה לשחזור פרטי זיהוי אל DLP API
בקטע הזה מוסבר איך לשחזר פרטי זיהוי של נתונים שעברו טוקניזציה בתוכן טקסטואלי.
כדי להשלים את המשימה הזו, תצטרכו:
- שם המשאב המלא של מפתח Cloud KMS שיצרתם בקטע יצירת אוסף מפתחות ומפתח.
- המפתח הארוז שיצרתם בשלב אריזת מפתח ה-AES באמצעות מפתח Cloud KMS.
- הטוקן שקיבלתם בשלב שליחת בקשה להסרת פרטים מזהים ל-DLP API.
כדי לשחזר פרטי זיהוי של תוכן שעבר טוקניזציה:
יוצרים קובץ בקשה בפורמט JSON בשם
reidentify-request.jsonעם הטקסט הבא.{ "reidentifyConfig":{ "infoTypeTransformations":{ "transformations":[ { "infoTypes":[ { "name":"EMAIL_ADDRESS_TOKEN" } ], "primitiveTransformation":{ "cryptoDeterministicConfig":{ "cryptoKey":{ "kmsWrapped": { "cryptoKeyName": "projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key", "wrappedKey": "WRAPPED_KEY" } }, "surrogateInfoType":{ "name":"EMAIL_ADDRESS_TOKEN" } } } } ] } }, "inspectConfig":{ "customInfoTypes":[ { "infoType":{ "name":"EMAIL_ADDRESS_TOKEN" }, "surrogateType":{ } } ] }, "item":{ "value": "My name is Alicia Abernathy, and my email address is TOKEN." } }מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט. -
WRAPPED_KEY: המפתח העטוף שיצרתם בקטע עטיפת מפתח AES באמצעות מפתח Cloud KMS. -
TOKEN: הטוקן שקיבלתם בשליחת בקשה להסרת פרטי זיהוי ל-DLP API, לדוגמהEMAIL_ADDRESS_TOKEN(52):AVAx2eIEnIQP5jbNEr2j9wLOAd5m4kpSBR/0jjjGdAOmryzZbE/q.
חשוב לוודא שהערך שמתקבל ב-
cryptoKeyNameיוצר את שם המשאב המלא של מפתח Cloud KMS.מידע נוסף על הרכיבים של בקשת ה-JSON הזו זמין במאמר
projects.locations.content.reidentify. אחרי שתסיימו את המשימה הזו, נסו להזין קלטים שונים לבקשה הזו. אפשר להשתמש ב-curlכמו שמתואר כאן. לחלופין, אפשר להשתמש ב-APIs Explorer בדף מאמרי העזרה של ה-API בקטע Try this method.-
משתמשים ב-
curlכדי לשלוח בקשתprojects.locations.content.reidentify:curl -s \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json" \ https://dlp.googleapis.com/v2/projects/PROJECT_ID/locations/global/content:reidentify \ -d @reidentify-request.jsonמחליפים את
PROJECT_IDבמזהה הפרויקט.כדי להעביר שם קובץ אל
curl, משתמשים באפשרות-d(לנתונים) ומקדימים את שם הקובץ בסימן@. הקובץ הזה צריך להיות באותה ספרייה שבה מריצים את הפקודהcurl.התגובה שמתקבלת מ-Sensitive Data Protection דומה ל-JSON הבא:
{ "item": { "value": "My name is Alicia Abernathy, and my email address is aabernathy@example.com." }, "overview": { "transformedBytes": "70", "transformationSummaries": [ { "infoType": { "name": "EMAIL_ADDRESS" }, "transformation": { "cryptoDeterministicConfig": { "cryptoKey": { "kmsWrapped": { "wrappedKey": "CiQAYuuIGo5DVaqdE0YLioWxEhC8LbTmq7Uy2G3qOJlZB7WXBw0SSQAjdwP8ZusZJ3Kr8GD9W0vaFPMDksmHEo6nTDaW/j5sSYpHa1ym2JHk+lUgkC3Zw5bXhfCNOkpXUdHGZKou1893O8BDby/82HY=", "cryptoKeyName": "projects/<var>PROJECT_ID</var>/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key" } }, "surrogateInfoType": { "name": "EMAIL_ADDRESS_TOKEN" } } }, "results": [ { "count": "1", "code": "SUCCESS" } ], "transformedBytes": "70" } ] } }בשדה
item, האסימון של כתובת האימייל מוחלף בכתובת האימייל בפועל מהטקסט המקורי.עכשיו הסרתם את פרטי הזיהוי ושחזרתם את פרטי הזיהוי של מידע אישי רגיש בתוכן טקסט באמצעות הצפנה דטרמיניסטית.
הסרת המשאבים
כדי לא לצבור חיובים בחשבון Google Cloud על המשאבים שבהם השתמשתם בדף הזה, אתם צריכים למחוק את הפרויקט ב- Google Cloud יחד עם המשאבים.
השמדת גרסת המפתח
אם אתם לא רוצים להשתמש יותר במפתח שיצרתם במשימה הזו, אתם יכולים להשמיד את הגרסה שלו.
מציגים את הגרסאות הזמינות של המפתח:
gcloud kms keys versions list \
--location "global" \
--keyring "dlp-keyring" \
--key "dlp-key"
כדי להשמיד גרסה, מריצים את הפקודה הבאה:
gcloud kms keys versions destroy KEY_VERSION \
--location "global" \
--keyring "dlp-keyring" \
--key "dlp-key"
מחליפים את KEY_VERSION במספר הגרסה שרוצים להשמיד, לדוגמה 1.
מחיקת הפרויקט
אם יצרתם פרויקט חדש למשימה הזו, הדרך הכי קלה למנוע חיובים נוספים היא למחוק את הפרויקט.
כדי למחוק פרויקט ב- Google Cloud :
gcloud projects delete PROJECT_ID
ביטול פרטי הכניסה
אם רוצים, מבטלים את פרטי הכניסה של ה-CLI של gcloud.
gcloud auth revoke
המאמרים הבאים
- למידע נוסף על הסרת פרטי זיהוי מתוכן רגיש, קראו את המאמר הסרת פרטי זיהוי ממידע אישי רגיש.
- במאמר הסרת פרטי זיהוי ולשחזר פרטי זיהוי של פרטים אישיים מזהים (PII) במערכי נתונים גדולים באמצעות Sensitive Data Protection מוסבר איך תהליך עבודה של הסרת פרטי זיהוי משתלב בפריסות בעולם האמיתי.
- למידע על המושגים שקשורים להמרת נתונים לטוקנים באמצעות מפתח קריפטוגרפי, קראו את המאמר פסאודונימיזציה.