בדף הזה מוסבר איך להצפין מידע אישי רגיש בפרמטרים של תבניות שסופקו על ידי Google, באמצעות מפתחות הצפנה עם Cloud KMS.
סקירה כללית
חלק מהתבניות ש-Google מספקת מאפשרות להצפין נתונים רגישים בפרמטרים של התבנית, כמו שמות משתמשים, סיסמאות, מחרוזות חיבור של JDBC ומפתחות API. כשנתמכות, התבניות האלה כוללות פרמטר לציון מפתח ההצפנה של Cloud KMS, למשל:
KMSEncryptionKeytokenKMSEncryptionKeyapiKeyKMSEncryptionKey
כדי להשתמש במפתחות הצפנה של Cloud KMS עם התבניות האלה, צריך לבצע את השלבים הבאים:
- מקצים לחשבון השירות של העובד (worker) ב-Dataflow את התפקיד Cloud KMS CryptoKey Decrypter.
- יצירת מפתח הצפנה.
- משתמשים במפתח כדי להצפין את הנתונים.
- מבצעים קידוד Base64 לנתונים המוצפנים.
- כשמריצים את התבנית, מציינים את מפתח ההצפנה ומשתמשים בערכי הפרמטרים המוצפנים.
אם מציינים מפתח הצפנה, צריך להצפין את כל הפרמטרים שתומכים בהצפנה. כדי להבין אילו פרמטרים אפשר להצפין, צריך לעיין במסמכים של התבנית הספציפית.
דוגמה
בדוגמה הבאה נעשה שימוש בתבנית MySQL to BigQuery.
יוצרים אוסף מפתחות.
gcloud kms keyrings create "KEY_RING_NAME" \ --location "global"יצירת מפתח הצפנה.
gcloud kms keys create "KEY_NAME" \ --location "global" \ --keyring "KEY_RING_NAME" \ --purpose "encryption"מצפינים ומקודדים ב-Base64 את שם המשתמש, הסיסמה ומחרוזת החיבור של JDBC.
export USER_NAME=`echo -n "USER_NAME" \ | gcloud kms encrypt --key=quickstart --keyring=test --location=global --plaintext-file=- --ciphertext-file=- \ | base64 -w 0` export PASSWORD=`echo -n "PASSWORD" \ | gcloud kms encrypt --key=quickstart --keyring=test --location=global --plaintext-file=- --ciphertext-file=- \ | base64 -w 0` export CONNECTION_STRING=`echo -n "CONNECTION_STRING" \ | gcloud kms encrypt --key=quickstart --keyring=test --location=global --plaintext-file=- --ciphertext-file=- \ | base64 -w 0`מריצים את התבנית.
gcloud dataflow flex-template run mysql-job \ --project=PROJECT_ID \ --region=us-central1 \ --template-file-gcs-location=gs://dataflow-templates-us-central1/latest/flex/MySQL_to_BigQuery \ --parameters \ connectionURL="$CONNECTION_STRING",\ query="SOURCE_SQL_QUERY",\ outputTable=PROJECT_ID:DATASET.TABLE_NAME,\ bigQueryLoadingTemporaryDirectory=CLOUD_STORAGE_PATH,\ username="$USER_NAME",\ password="$PASSWORD",\ KMSEncryptionKey=projects/PROJECT_ID/locations/global/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
פתרון בעיות
בקטע הזה מופיע מידע על פתרון בעיות בהצפנה של פרמטרים של תבניות.
ההרשאה נדחתה
כשמריצים את העבודה, מופיעה שגיאת PERMISSION_DENIED ביומני העבודה, בדומה לשגיאה הבאה:
PERMISSION_DENIED: Permission cloudkms.cryptoKeyVersions.useToDecrypt denied on
resource RESOURCE_PATH (or it may not exist)
כדי לפענח את הנתונים, לחשבון השירות של העובד ב-Dataflow צריכה להיות ההרשאה cloudkms.cryptoKeyVersions.useToDecrypt למפתח ההצפנה. מוודאים שלחשבון השירות של העובד הוקצה התפקיד Cloud KMS CryptoKey Decrypter. מידע נוסף זמין במאמר בנושא אבטחה והרשאות ב-Dataflow.