הסרת פרטים מזהים מנתונים ב-BigQuery בזמן השאילתה

במדריך הזה מוסבר איך להסיר פרטי זיהוי מנתונים בזמן שליחת שאילתות לטבלאות מ-BigQuery באמצעות פונקציות משירותים חיצוניים ו-Sensitive Data Protection. הגישה הזו שימושית לניקוי תוצאות של שאילתות בזמן אמת, כדי למזער את הגישה לנתונים שלא נדרשים לניתוח.

במדריך הזה מוסבר איך להצפין ולפענח נתונים בזמן ההעברה. למידע על שימוש ב-Sensitive Data Protection כדי להצפין נתונים במנוחה, אפשר לעיין במאמר בנושא הסרת פרטים מזהים ממידע אישי רגיש באחסון.

המדריך הזה מיועד לקהלים שהאחריות שלהם כוללת אבטחת נתונים, עיבוד נתונים או ניתוח נתונים. המדריך הזה מיועד למי שיש לו ידע בעיבוד נתונים ובפרטיות נתונים, אבל לא צריך להיות מומחה. במדריך הזה אנחנו גם מניחים שאתם יודעים להריץ סקריפטים בסיסיים של Cloud Shell ו-SQL.

במדריך הזה נעשה שימוש בפונקציות מבוססות SQL, ב-BigQuery, בפונקציות מרוחקות, ב-Cloud Run וב-Sensitive Data Protection.

טכניקות להסרת פרטים מזהים, כמו הצפנה, מסתירות מזהים רגישים גולמיים בנתונים שלכם. הטכניקות האלה מאפשרות לשמור על התועלת של הנתונים לצורך צירוף או ניתוח, תוך צמצום הסיכון בטיפול בנתונים.

יכול להיות שבארגונים יש מדיניות או דרישות רגולטוריות לאחסון רק נתונים שעברו הסרת פרטים מזהים במחסן הנתונים בענן. בנוסף, יכול להיות שהם יצטרכו לשחזר פרטי זיהוי של הנתונים שעברו הסרת פרטי הזיהוי כדי ליצור דוחות.

כדי לצמצם את הסיכון לטיפול בכמויות גדולות של מידע אישי רגיש, אפשר להשתמש בפייפליין אוטומטי להמרת נתונים כדי ליצור מערכי נתונים שעברו הסרת פרטים מזהים. אתם יכולים להשתמש במדריך הזה כדי להחליף את צינור עיבוד הנתונים בשאילתת SQL רק לצורך זיהוי מחדש, או לצורך הסרת פרטים מזהים וזיהוי מחדש. במדריך הזה נסביר איך לבצע הסרת פרטים מזהים וזיהוי מחדש באמצעות שירות מרכזי שמתארח ב-Cloud Run. אתם יכולים להשתמש בשירות המרכזי הזה בכל הארגון בלי להגדיר או לתחזק אשכול Dataflow.

‫Sensitive Data Protection יכול לסווג מערכי נתונים על ידי בדיקת הנתונים למידע רגיש. ל-Sensitive Data Protection יש יותר מ-200 מסווגים מובנים, שנקראים infoTypes. כדי להסיר את הפרטים המזהים של נתונים באמצעות Cloud Data Loss Prevention API, צריך צינורות נתונים ואפליקציות. המדריך הזה נועד לעזור למנתחי נתונים, למהנדסים או למדענים להשיג את אותה התוצאה באמצעות פונקציות SQL.

בסוף המדריך הזה תוכלו לכתוב שאילתה דומה לזו שבהמשך. המידע האישי הרגיש יוסר מהזיהוי ויוחזר לזיהוי בתוצאת השאילתה.

SELECT
    pii_column,
    fns.dlp_freetext_encrypt(pii_column) AS dlp_encrypted,
    fns.dlp_freetext_decrypt(fns.dlp_freetext_encrypt(pii_column)) AS dlp_decrypted
FROM
    UNNEST(
    [
        'My name is John Doe. My email is john.doe@example.com']) AS pii_column

הפלט אמור להיראות כך:

Row pii_column dlp_encrypted dlp_decrypted
1 My name is John Doe. My email is john.doe@example.com My name is John Doe. My email is BQ_TRF_EMAIL(40):AQy6lGvwKR+AiiRqJpEr+nBzZUzOcjXkXamUugU= My name is John Doe. My email is john.doe@example.com

ארכיטקטורה

בתרשים הבא מוצג איך נעשה שימוש ב-BigQuery כמחסן הנתונים, ב-Sensitive Data Protection כדי להסיר את הפרטים המזהים של הנתונים ולהוסיף אותם מחדש, וב-Cloud Run כדי לארח את הפונקציות המרוחקות.

דיאגרמת ארכיטקטורה כללית של המדריך הזה

מטרות

  • פריסה של שירות Cloud Run שמספק פונקציונליות של הסרת פרטים מזהים מ-Sensitive Data Protection.
  • יצירת פונקציות מרוחקות ב-BigQuery שמשתמשות בתבניות לביטול הזיהוי של Sensitive Data Protection.
  • אפשר לאמת את הצפנת הנתונים ב-BigQuery באמצעות שאילתת SQL.

עלויות

במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:

כדי ליצור הערכת עלויות בהתאם לשימוש החזוי, אתם יכולים להשתמש במחשבון התמחור.

משתמשים חדשים של Google Cloud ? יכול להיות שאתם זכאים לתקופת ניסיון בחינם.

כשמסיימים את המשימות שמתוארות במסמך הזה אפשר למחוק את המשאבים שיצרתם כדי להימנע מחיובים נוספים. מידע נוסף זמין בקטע הסרת המשאבים.

לפני שמתחילים

  1. נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. התקינו את ה-CLI של Google Cloud.

  3. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  4. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init
  5. יוצרים או בוחרים 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 .

  6. מוודאים שהחיוב מופעל בפרויקט Google Cloud .

  7. אם אחד מהממשקים הבאים לא מופעל, צריך להפעיל אותו: Artifact Registry,‏ BigQuery,‏ BigQuery Connection API,‏ Cloud Build,‏ Cloud Data Loss Prevention API,‏ Cloud Key Management Service,‏ Cloud Run,‏ Container Registry,‏ Identity and Access Management,‏ Resource Manager,‏ Secret Manager ו-Service Usage APIs.

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, צריך את ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים

    gcloud services enable artifactregistry.googleapis.com bigquery.googleapis.com bigqueryconnection.googleapis.com cloudbuild.googleapis.com cloudkms.googleapis.com cloudresourcemanager.googleapis.com containerregistry.googleapis.com dlp.googleapis.com iam.googleapis.com run.googleapis.com secretmanager.googleapis.com serviceusage.googleapis.com
  8. התקינו את ה-CLI של Google Cloud.

  9. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  10. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init
  11. יוצרים או בוחרים 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 .

  12. מוודאים שהחיוב מופעל בפרויקט Google Cloud .

  13. אם אחד מהממשקים הבאים לא מופעל, צריך להפעיל אותו: Artifact Registry,‏ BigQuery,‏ BigQuery Connection API,‏ Cloud Build,‏ Cloud Data Loss Prevention API,‏ Cloud Key Management Service,‏ Cloud Run,‏ Container Registry,‏ Identity and Access Management,‏ Resource Manager,‏ Secret Manager ו-Service Usage APIs.

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, צריך את ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים

    gcloud services enable artifactregistry.googleapis.com bigquery.googleapis.com bigqueryconnection.googleapis.com cloudbuild.googleapis.com cloudkms.googleapis.com cloudresourcemanager.googleapis.com containerregistry.googleapis.com dlp.googleapis.com iam.googleapis.com run.googleapis.com secretmanager.googleapis.com serviceusage.googleapis.com

הכנת הסביבה

  1. ב-Cloud Shell, משכפלים את מאגר המקור:

    git clone https://github.com/GoogleCloudPlatform/bigquery-dlp-remote-function.git
    
  2. עוברים לספרייה של המדריך הזה:

    cd bigquery-dlp-remote-function/
    

פריסת המשאבים באמצעות סקריפט

כדי להשתמש בסקריפט הפריסה בלי לבצע התאמות אישיות, פועלים לפי השלבים הבאים. אם רוצים להתאים אישית את הפריסה, מדלגים על הקטע הזה ועוברים אל פריסת פתרון מותאם אישית באופן ידני.

  1. מגדירים את הערכים בשדות PROJECT_ID ו-REGION:

    # Project ID of the Google Cloud project
    PROJECT_ID="PROJECT_ID"
    
    # Google Cloud region to use for deployment of resources
    # Refer to https://cloud.google.com/about/locations
    REGION="REGION"
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫PROJECT_ID: מזהה הפרויקט שלכם במדריך הזה.
    • ‫REGION: האזור שבו רוצים לאחסן ולעבד את הנתונים, לדוגמה us-west1. מציינים אזור, לא אזור זמן.
  2. אופציונלי: אם יש לכם תבנית בדיקה שבה אתם רוצים להשתמש, מגדירים את השדה DLP_INSPECT_TEMPLATE לשם המשאב המלא של תבנית הבדיקה הזו. תבנית הבדיקה צריכה להיות באותו אזור שהגדרתם בשדה REGION.

    מוודאים שתבנית הבדיקה כוללת את כל סוגי המידע שמשמשים בתבנית לביטול הזיהוי.

    אם מדלגים על השלב הזה, Sensitive Data Protection בודק את הנתונים באמצעות קבוצת ברירת מחדל של המערכת של גלאי infoType.

    DLP_INSPECT_TEMPLATE="DLP_INSPECT_TEMPLATE"
    

    מחליפים את DLP_INSPECT_TEMPLATE בשם המשאב המלא של תבנית הבדיקה, לדוגמה: projects/PROJECT_ID/locations/REGION/inspectTemplates/TEMPLATE_ID.

  3. אימות באמצעות Application Default Credentials:

    gcloud auth application-default login && \
    gcloud auth application-default set-quota-project "${PROJECT_ID}"
    
  4. מפעילים את סקריפט Terraform כדי ליצור את כל המשאבים:

    terraform init && \
    terraform apply \
    -var "project_id=${PROJECT_ID}" \
    -var "region=${REGION}" \
    -var "dlp_inspect_template_full_path=${DLP_INSPECT_TEMPLATE}"
    

    המערכת מציגה את כל הפעולות ש-Terraform תבצע. בודקים את הפעולות. כדי להמשיך, מזינים yes.

  5. מוודאים שאפשר להצפין ולפענח את הנתונים.

פריסת פתרון בהתאמה אישית באופן ידני

כדי להתאים אישית את הפריסה, פועלים לפי השלבים הבאים. אם רוצים להשתמש בסקריפט הפריסה שסופק בלי לבצע התאמות אישיות או שלבים ידניים, אפשר לעיין במאמר פריסת המשאבים באמצעות סקריפט.

הגדרת משתני הסביבה

ב-Cloud Shell, מגדירים את משתני הסביבה הבאים:

PROJECT_ID="PROJECT_ID"
REGION="REGION"
CLOUD_RUN_SERVICE_NAME="CLOUD-RUN-SERVICE-NAME"
ARTIFACT_REGISTRY_NAME="ARTIFACT-DOCKER-REGISTRY-NAME"

מחליפים את מה שכתוב בשדות הבאים:

  • ‫PROJECT_ID: מזהה הפרויקט שלכם במדריך הזה.
  • ‫REGION: האזור שבו רוצים לאחסן ולעבד את הנתונים, לדוגמה us-west1. מציינים אזור, לא אזור זמן.
  • ‫CLOUD_RUN_SERVICE_NAME: שם לשירות החדש ב-Cloud Run. אפשר להזין עד 15 תווים.
  • ‫ARTIFACT_REGISTRY_NAME: שם למאגר החדש של Artifact Registry לאחסון קובצי אימג' של קונטיינרים.

יצירת חשבון שירות בשביל שירות Cloud Run

  1. יוצרים חשבון שירות:

    RUNNER_SA_NAME="${CLOUD_RUN_SERVICE_NAME}-runner"
    RUNNER_SA_EMAIL="${RUNNER_SA_NAME}@${PROJECT_ID}.iam.gserviceaccount.com"
    gcloud iam service-accounts create "${RUNNER_SA_NAME}" \
        --project="${PROJECT_ID}" \
        --description "Runner for BigQuery remote function execution" \
        --display-name "${RUNNER_SA_NAME}"
    
  2. מקצים את התפקידים הנדרשים ל-Sensitive Data Protection.

    מקצים את התפקיד DLP Reader:

    gcloud projects add-iam-policy-binding "${PROJECT_ID}" \
        --member="serviceAccount:${RUNNER_SA_EMAIL}" \
        --role='roles/dlp.reader'
    

    נותנים את התפקיד DLP User:

    gcloud projects add-iam-policy-binding "${PROJECT_ID}" \
        --member="serviceAccount:${RUNNER_SA_EMAIL}" \
        --role='roles/dlp.user'
    

פריסת שירות Cloud Run

כדי לפרוס את האפליקציה:

  1. אופציונלי: אפשר לשנות את ערכי ברירת המחדל על ידי שינוי משתני הסביבה או עדכון הקובץ src/main/resources/aes.properties.

  2. יוצרים מאגר ב-Artifact Registry לאחסון קובץ האימג' של הקונטיינר של הפונקציה:

    gcloud artifacts repositories create "${ARTIFACT_REGISTRY_NAME}" \
    --repository-format=docker \
    --location="${REGION}" \
    --description="Container images repository for BigQuery Functions" \
    --project="${PROJECT_ID}"
    
  3. קומפילציה של האפליקציה ופריסה שלה ב-Cloud Run באמצעות Cloud Build:

    gcloud builds submit \
    --project ${PROJECT_ID} \
    --substitutions=_CONTAINER_IMAGE_NAME="${REGION}-docker.pkg.dev/${PROJECT_ID}/${ARTIFACT_REGISTRY_NAME}/${CLOUD_RUN_SERVICE_NAME}:latest" \
    --machine-type=e2-highcpu-8 && \
    gcloud beta run deploy ${CLOUD_RUN_SERVICE_NAME} \
    --image="${REGION}-docker.pkg.dev/${PROJECT_ID}/${ARTIFACT_REGISTRY_NAME}/${CLOUD_RUN_SERVICE_NAME}:latest" \
    --execution-environment=gen2 \
    --platform=managed \
    --region="${REGION}" \
    --service-account="${RUNNER_SA_EMAIL}" \
    --cpu=4 \
    --memory=8Gi \
    --no-allow-unauthenticated \
    --project ${PROJECT_ID} \
    --update-env-vars=PROJECT_ID=${PROJECT_ID}
    

    הפלט אמור להיראות כך:

    ID: 403a276e-b0c6-41f3-aaed-f0ec9f9cedba
    CREATE_TIME: 2023-02-04T01:52:15+00:00
    DURATION: 1M59S
    SOURCE: gs://PROJECT_ID_cloudbuild/source/1675475534.124241-9c43787f64e04cfd9e4a1979d3324fe0.tgz
    IMAGES: gcr.io/PROJECT_ID/CLOUD_RUN_SERVICE_NAME (+1 more)
    STATUS: SUCCESS
    Deploying container to Cloud Run service [CLOUD_RUN_SERVICE_NAME] in project [PROJECT_ID] region [REGION]
    OK Deploying new service... Done.
     OK Creating Revision... Revision deployment finished. Checking container heal
     th.
     OK Routing traffic...
    Done.
    Service [CLOUD_RUN_SERVICE_NAME] revision [CLOUD_RUN_SERVICE_NAME-00001-tat] has been deployed and is serving 100 percent of traffic.
    Service URL: https://CLOUD_RUN_SERVICE_NAME-j2bpjx2xoq-uw.a.run.app
    
  4. מאחזרים את כתובת ה-URL של Cloud Run ושומרים אותה במשתני הסביבה:

    RUN_URL="$(gcloud run services describe ${CLOUD_RUN_SERVICE_NAME} --region \
        ${REGION} --project ${PROJECT_ID} --format="get(status.address.url)")"
    

יצירת תבנית לביטול הזיהוי של Sensitive Data Protection

תבניות לביטול שיוך לזהות ב-Sensitive Data Protection עוזרות לשמור את הגדרות ביטול השיוך לזהות, כדי שאפשר יהיה להשתמש בהן שוב בכמה פעולות ובכמה מקורות נתונים.

בשלב הזה משתמשים בקובץ sample_dlp_deid_config.json, שמכיל תבנית לדוגמה להסרת פרטים מזהים.

ב-Cloud Shell, יוצרים את התבנית:

DEID_TEMPLATE=$(curl -X POST \
-H "Authorization: Bearer `gcloud auth print-access-token`" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: ${PROJECT_ID}" \
--data-binary "@sample_dlp_deid_config.json" \
"https://dlp.googleapis.com/v2/projects/${PROJECT_ID}/locations/${REGION}/deidentifyTemplates")

DEID_TEMPLATE_NAME="$(echo ${DEID_TEMPLATE} | jq -r '.name')"

‫Google ממליצה להשתמש במפתח עטוף כשמבצעים הצפנה של Sensitive Data Protection בעומסי עבודה רגישים בפועל. לצורך הדגמה, במדריך הזה נעשה שימוש במפתח לא מוצפן. למידע נוסף על יצירת מפתח מוצפן ושימוש בו בבקשות להסרת פרטים מזהים ולזיהוי מחדש, אפשר לעיין במאמר בנושא הסרת פרטים מזהים וזיהוי מחדש של נתונים רגישים.

יצירת החיבור ל-BigQuery ל-Cloud Run

  1. ב-Cloud Shell, יוצרים חיבור ל-BigQuery כדי לגשת ל-Cloud Run:

    bq mk --connection \
    --display_name='External transform function connection' \
    --connection_type=CLOUD_RESOURCE \
    --project_id="${PROJECT_ID}" \
    --location="${REGION}" \
    ext-${CLOUD_RUN_SERVICE_NAME}
    
  2. מאתרים ומגדירים את חשבון השירות של BigQuery שמשמש לחיבור:

    CONNECTION_SA="$(bq --project_id ${PROJECT_ID} --format json show \
        --connection ${PROJECT_ID}.${REGION}.ext-${CLOUD_RUN_SERVICE_NAME} \
        | jq -r '.cloudResource.serviceAccountId')"
    
  3. מקצים לחשבון השירות את התפקיד Cloud Run Invoker:

    gcloud projects add-iam-policy-binding ${PROJECT_ID} \
        --member="serviceAccount:${CONNECTION_SA}" \
        --role='roles/run.invoker'
    

יצירת מערך נתונים ב-BigQuery לפונקציות מרוחקות

  1. הגדרת מערך הנתונים ב-BigQuery לפונקציות המרוחקות:

    BQ_FUNCTION_DATASET="fns"
    
  2. יוצרים את מערך הנתונים אם הוא עדיין לא קיים:

       bq mk --dataset \
           --project_id ${PROJECT_ID} \
           --location ${REGION} \
           ${BQ_FUNCTION_DATASET}
    

יצירת פונקציות מרוחקות של Sensitive Data Protection

  1. אופציונלי: אם יש לכם תבנית בדיקה שבה אתם רוצים להשתמש, מגדירים את המשתנה DLP_INSPECT_TEMPLATE לשם המשאב המלא של תבנית הבדיקה הזו. תבנית הבדיקה צריכה להיות באותו אזור שהגדרתם במשתנה הסביבה REGION.

    מוודאים שתבנית הבדיקה כוללת את כל סוגי המידע שמשמשים בתבנית לביטול הזיהוי.

    אם מדלגים על השלב הזה, Sensitive Data Protection בודק את הנתונים באמצעות קבוצת ברירת מחדל של המערכת של גלאי infoType.

    DLP_INSPECT_TEMPLATE="DLP_INSPECT_TEMPLATE"
    

    מחליפים את DLP_INSPECT_TEMPLATE בשם המשאב המלא של תבנית הבדיקה, לדוגמה: projects/PROJECT_ID/locations/REGION/inspectTemplates/TEMPLATE_ID.

  2. יוצרים את פונקציית הסרת פרטי הזיהוי של Sensitive Data Protection:

    bq query --project_id ${PROJECT_ID} \
    --use_legacy_sql=false \
    "CREATE OR REPLACE FUNCTION ${BQ_FUNCTION_DATASET}.dlp_freetext_encrypt(v STRING)
    RETURNS STRING
    REMOTE WITH CONNECTION \`${PROJECT_ID}.${REGION}.ext-${CLOUD_RUN_SERVICE_NAME}\`
    OPTIONS (endpoint = '${RUN_URL}', user_defined_context = [('mode', 'deidentify'),('algo','dlp'),('dlp-deid-template','${DEID_TEMPLATE_NAME}'),('dlp-inspect-template', '${DLP_INSPECT_TEMPLATE}')]);"
    
  3. יוצרים את פונקציית הזיהוי מחדש של Sensitive Data Protection:

    bq query --project_id ${PROJECT_ID} \
    --use_legacy_sql=false \
    "CREATE OR REPLACE FUNCTION ${BQ_FUNCTION_DATASET}.dlp_freetext_decrypt(v STRING)
    RETURNS STRING
    REMOTE WITH CONNECTION \`${PROJECT_ID}.${REGION}.ext-${CLOUD_RUN_SERVICE_NAME}\`
    OPTIONS (endpoint = '${RUN_URL}', user_defined_context = [('mode', 'reidentify'),('algo','dlp'),('dlp-deid-template','${DEID_TEMPLATE_NAME}'),('dlp-inspect-template', '${DLP_INSPECT_TEMPLATE}')]);"
    

אימות של ביטול הזיהוי וזיהוי מחדש

כדי לוודא שהפתרון מבטל את הזיהוי של הנתונים ומזהה אותם מחדש, צריך לבצע את הפעולות הבאות:

המסוף

  1. במסוף Google Cloud , עוברים אל BigQuery.

    כניסה ל-BigQuery

    מערכת BigQuery תיפתח בפרויקט שאליו ניגשתם לאחרונה.

  2. כדי לפתוח עורך שאילתות, לוחצים על Compose a new query.

  3. מזינים את השאילתה הבאה:

    SELECT
        pii_column,
        fns.dlp_freetext_encrypt(pii_column) AS dlp_encrypted,
        fns.dlp_freetext_decrypt(fns.dlp_freetext_encrypt(pii_column)) AS dlp_decrypted
    FROM
        UNNEST(
        [
            'My name is John Doe. My email is john.doe@example.com',
            'Some non PII data',
            '650-253-0000',
            'some script with simple number 1234']) AS pii_column
    
  4. לוחצים על Run.

BQ

  1. מגדירים את משתנה הסביבה של מערך הנתונים:

    BQ_FUNCTION_DATASET="fns"
    
  2. מריצים את השאילתה:

    bq query --project_id ${PROJECT_ID} \
    --use_legacy_sql=false \
    "
    SELECT
      pii_column,
      ${BQ_FUNCTION_DATASET}.dlp_freetext_encrypt(pii_column) AS dlp_encrypted,
    ${BQ_FUNCTION_DATASET}.dlp_freetext_decrypt(${BQ_FUNCTION_DATASET}.dlp_freetext_encrypt(pii_column)) AS dlp_decrypted
    FROM
      UNNEST(
        [
          'My name is John Doe. My email is john.doe@example.com',
          'Some non PII data',
          '650-253-0000',
          'some script with simple number 1234']) AS pii_column"
    

הפלט אמור להיראות כך:

Row pii_column dlp_encrypted dlp_decrypted
1 My name is John Doe. My email is john.doe@example.com My name is John Doe. My email is BQ_TRF_EMAIL(40):AQy6lGvwKR+AiiRqJpEr+nBzZUzOcjXkXamUugU= My name is John Doe. My email is john.doe@example.com
2 Some non PII data Some non PII data Some non PII data
3 650-253-0000 BQ_TRF_PH(40):AeKpGU5KBXaTyecCun7dv1hHht5w5Q2PTpvkRC4= 650-253-0000
4 some script with simple number 1234 some script with simple number 1234 some script with simple number 1234

לתשומת ליבכם

כשמתאימים את המדריך הזה לצרכים שלכם, כדאי להתייחס לנקודות הבאות:

  • הסרת הפרטים המזהים והוספתם מחדש מתבצעות באמצעות שירות Cloud Run. הקצאת מעבד (CPU) וזיכרון ב-Cloud Run בהתאם לדרישות המחשוב. לפרטים נוספים, ראו מגבלות על CPU ומגבלות על זיכרון ב-Cloud Run.
  • כשמשתמשים ב-Sensitive Data Protection, כדאי לעיין במגבלות השימוש ובהמלצות לשליטה בעלויות.
  • כדי לשלוט בעלויות ובניצול הכולל של מכסת Sensitive Data Protection, כדאי להגביל את הפריטים שמועברים דרך הפונקציה המרוחקת של Sensitive Data Protection ל-10,000 או פחות. הפתרון יכול לאגד את הבקשות באופן אוטומטי כדי לטפל בצורה חלקה במגבלות הבאות של בקשות Sensitive Data Protection:

    • מספר הערכים המקסימלי בטבלה: 50,000
    • מגבלת גודל הבקשה שמוגדרת כברירת מחדל: 0.5MB

    במקום המקור, צריך להעביר לפונקציה Sensitive Data Protection את התוצאות הסופיות והמסוננות של השאילתה.

    בפתרון הזה, כל ערך בעמודה pii_column הוא פריט – לדוגמה, My name is John Doe. My email is john.doe@example.com הוא פריט אחד.

  • חשוב לוודא שמערך הנתונים ב-BigQuery, שירות Cloud Run והתבניות של Sensitive Data Protection נמצאים באותו אזור בענן.

הסרת המשאבים

כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.

    כדי למחוק Google Cloud פרויקט:

    gcloud projects delete PROJECT_ID

המאמרים הבאים