הסרת פרטי הזיהוי ממידע אישי רגיש ושחזור פרטי זיהוי
התהליך שמתואר במסמך הזה נקרא פסאודונימיזציה (או טוקניזציה). בתהליך הזה, 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 .
-
אם משתמשים בפרויקט קיים, מוודאים שיש את ההרשאות הנדרשות כדי להשלים את ההדרכה. אם משתמשים בפרויקט חדש, לא צריך לוודא כי כבר יש את ההרשאות הנדרשות.
מפעילים את ממשקי ה-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) - משתמש 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-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 בתגובה.
זה המפתח העטוף.
שליחת בקשה להסרת פרטים מזהים ל-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כמו שמתואר כאן. אפשר גם להשתמש ב-API 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.
- למידע על טוקניזציה של נתונים באמצעות מפתח קריפטוגרפי, אפשר לעיין במאמר בנושא פסאודונימיזציה.