הסרת פרטי זיהוי ושחזור פרטי זיהוי של מידע אישי רגיש
התהליך שמתואר במסמך הזה נקרא פסאודונימיזציה (או טוקניזציה). בתהליך הזה, Sensitive Data Protection משתמש במפתח קריפטוגרפי כדי להמיר (להסיר את פרטי הזיהוי) טקסט רגיש לטוקן. כדי לשחזר את הטקסט הזה (לשחזר פרטי זיהוי), צריך את המפתח הקריפטוגרפי ששימש במהלך הסרת פרטי הזיהוי ואת הטוקן.
Sensitive Data Protection תומך בשיטות קריפטוגרפיות הפיכות ובלתי הפיכות. כדי לשחזר פרטי זיהוי של תוכן, צריך לבחור שיטה הפיכה.
השיטה הקריפטוגרפית שמתוארת כאן נקראת הצפנה דטרמיניסטית באמצעות AES-SIV (תקן הצפנה מתקדם במצב וקטור אתחול סינתטי). אנחנו ממליצים על השיטה הזו כי היא מספקת את רמת האבטחה הגבוהה ביותר מבין כל השיטות הקריפטוגרפיות ההפיכות שנתמכות על ידי Sensitive Data Protection.
אפשר להשלים את השלבים במסמך הזה תוך 10 עד 20 דקות, לא כולל השלבים לפני שמתחילים.
לפני שמתחילים
- נכנסים לחשבון 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 .
-
אם משתמשים בפרויקט קיים, מוודאים שיש את ההרשאות הנדרשות כדי להשלים את ההדרכה. אם משתמשים בפרויקט חדש, לא צריך לוודא כי כבר יש את ההרשאות הנדרשות.
אם אחד מהממשקים 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 ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד 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 .
-
אם משתמשים בפרויקט קיים, מוודאים שיש את ההרשאות הנדרשות כדי להשלים את ההדרכה. אם משתמשים בפרויקט חדש, לא צריך לוודא כי כבר יש את ההרשאות הנדרשות.
אם אחד מהממשקים 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) - משתמש 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
בקטע הזה מוסבר איך ליצור מפתח הצפנה בתקן AES (Advanced Encryption Standard) ולקודד אותו בפורמט 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 Editor. כדי להפעיל את העורך, לוחצים על 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
המאמרים הבאים
- מידע נוסף על הסרת פרטי הזיהוי מתוכן רגיש זמין במאמר בנושא הסרת פרטי הזיהוי מנתונים רגישים.
- כדי להבין איך תהליך עבודה של הסרת פרטים מזהים משתלב בפריסות מהחיים האמיתיים, אפשר לעיין במאמר הסרת פרטים מזהים וזיהוי מחדש של פרטים אישיים מזהים במערכי נתונים גדולים באמצעות Sensitive Data Protection.
- מידע על טוקניזציה של נתונים באמצעות מפתח קריפטוגרפי זמין במאמר בנושא פסאודונימיזציה.