Managed Airflow (דור 3) | Managed Airflow (דור 2) | Managed Airflow (דור 1 מדור קודם)
בדף הזה מוסבר איך להשתמש במפתחות הצפנה בניהול הלקוח (CMEK) כדי להגן על סביבות Airflow מנוהלות.
מידע על מפתחות הצפנה בניהול הלקוח (CMEK)
כברירת מחדל, Managed Service for Apache Airflow מצפין תוכן של לקוחות במצב מנוחה. Managed Airflow מטפל בהצפנה בשבילכם בלי שתצטרכו לבצע פעולות נוספות. האפשרות הזו נקראת הצפנת ברירת המחדל של Google.
אם רוצים לשלוט במפתחות ההצפנה, אפשר להשתמש במפתחות הצפנה בניהול הלקוח (CMEK) ב-Cloud KMS עם שירותים שמשולבים עם CMEK, כולל Managed Airflow. שימוש במפתחות Cloud KMS מאפשר לכם לשלוט ברמת ההגנה, במיקום, בלוח הזמנים של הרוטציה, בשימוש ובהרשאות הגישה, ובגבולות הקריפטוגרפיים. בנוסף, באמצעות Cloud KMS תוכלו לצפות ביומני ביקורת ולשלוט במחזורי החיים של המפתחות. במקום ש-Google תהיה הבעלים של מפתחות ההצפנה של המפתחות (KEK) הסימטריים שמגנים על הנתונים שלכם ותנהל אותם, אתם שולטים במפתחות האלה ומנהלים אותם ב-Cloud KMS.
אחרי שמגדירים את המשאבים עם CMEK, חוויית הגישה למשאבי Managed Airflow דומה לשימוש בהצפנה שמוגדרת כברירת מחדל ב-Google. מידע נוסף על אפשרויות ההצפנה זמין במאמר מפתחות הצפנה בניהול הלקוח (CMEK).
נתונים שמוגנים באמצעות הצפנת CMEK
Managed Airflow מגן על הנתונים הבאים באמצעות הצפנת CMEK:
- התוכן והסכימה של מסד הנתונים של Airflow
- יומני משימות של Airflow ויומני סביבה ב-Cloud Logging
- התוכן של דלי האחסון בסביבה
- סודות שמאוחסנים באשכול של הסביבה
- דיסקים לאחסון מתמיד שמשמשים את תור המשימות
- תמונות של קונטיינרים של רכיבי סביבה שמאוחסנות במאגרי Artifact Registry
פרטים ספציפיים על אופן ההצפנה של הנתונים זמינים במאמרים הבאים:
- מידע על מפתחות הצפנה בניהול הלקוח (CMEK) במסמכי Cloud SQL.
- שימוש במפתחות הצפנה בניהול הלקוח (CMEK) והצפנת סודות בשכבת האפליקציה במסמכי Google Kubernetes Engine.
- מפתחות הצפנה בניהול הלקוח במסמכי Cloud Storage.
- הגדרת CMEK ל-Cloud Logging במסמכי התיעוד של Cloud Logging.
הנתונים לא מוגנים באמצעות הצפנת CMEK
Cloud Monitoring לא תומך בהצפנת CMEK. השם של הסביבה ושמות של DAG מאוחסנים במסד הנתונים של המעקב בצורה מוצפנת באמצעות Google-owned and Google-managed encryption keys.
ב-Managed Airflow מאוחסן המידע הבא שמוגן באמצעותGoogle-owned and Google-managed encryption keys, ולא באמצעות מפתחות בניהול הלקוח:
- שם הסביבה
- שינויים בהגדרות של Airflow
משתני סביבה
תוויות
השמות של חלק מהפרמטרים שמאוחסנים ב-Managed Airflow יכולים לכלול מחרוזת משנה של שם הסביבה.
רוטציה של מפתחות CMEK ב-Managed Airflow
אחרי שמגדירים הצפנה בסביבה באמצעות מפתחות CMEK, כדאי גם לשקול לבצע רוטציה של המפתחות האלה באופן קבוע, כמו שמתואר במסמכי ה-KMS.
כשמבצעים רוטציה למפתח CMEK, הנתונים שהוצפנו באמצעות גרסאות קודמות של המפתח לא מוצפנים מחדש באופן אוטומטי באמצעות הגרסה החדשה של המפתח. מידע נוסף זמין במאמר בנושא הצפנה מחדש של נתונים.
באופן ספציפי, ההגדרה הזו חלה על:
- אובייקטים שמאוחסנים בקטגוריה של הסביבה.
- נתונים שמאוחסנים במסד הנתונים של Airflow.
- כל אובייקטי הנתונים האחרים מוצפנים באמצעות CMEK בסביבת Managed Airflow.
- תמונות של קונטיינרים של רכיבי סביבה שמאוחסנות במאגרי Artifact Registry.
שימוש במפתח הצפנה בניהול הלקוח בסביבה שלכם
לפני שמתחילים
אפשר להגדיר CMEK רק כשיוצרים סביבה. אי אפשר להפעיל CMEK בסביבה קיימת.
Managed Airflow תומך בהצפנה עם CMEK באמצעות מפתחות שמאוחסנים במנהלי מפתחות חיצוניים.
צריך ליצור מפתח CMEK באותו אזור שבו נמצאות הסביבות. אי אפשר להשתמש במפתחות גלובליים או במפתחות שפועלים בכמה אזורים.
אם רוצים שהסביבה תפעל בתוך היקף VPC Service Controls, צריך להוסיף את Cloud Key Management Service API להיקף.
שלב 1. יצירת מפתח הצפנה בניהול הלקוח
פועלים לפי השלבים שמפורטים במאמר בנושא יצירת מפתחות להצפנה סימטרית כדי ליצור מפתח באזור שבו נמצאת הסביבה שלכם.
שלב 2. איך נותנים תפקידים לסוכני שירות
המסוף
דלג על שלב זה. אתם מעניקים הרשאות לסוכני שירות כשאתם מציינים מפתח לסביבה שלכם.
gcloud
לסוכני השירות הבאים צריכה להיות הרשאה לתפקיד Cloud KMS CryptoKey Encrypter/Decrypter במפתח שבו אתם משתמשים בסביבה שלכם.
מחליפים את PROJECT_NUMBER במספר הפרויקט.
| שם סוכן השירות | כתובת האימייל של חשבון השירות | שם שירות ה-API |
|---|---|---|
| סוכן שירות של Managed Airflow | service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com | composer.googleapis.com |
| סוכן שירות של Cloud Storage | service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com | מתן הרשאות הצפנה/פענוח באמצעות gcloud storage service-agent --authorize-cmek |
(אם נדרש) אם חלק מחשבונות השירות האלה לא מופיעים בפרויקט, המשמעות היא שעדיין לא נוצרה זהות לשירות הזה. לדוגמה, אם עדיין לא יצרתם סביבות Managed Airflow בפרויקט.
כדי להוסיף את חשבונות השירות האלה, יוצרים זהויות לשירותים שמופיעים ברשימה באמצעות הפקודה הבאה:
gcloud beta services identity create \ --service=API_SERVICE_NAMEמחליפים את
API_SERVICE_NAMEבשם שירות ה-API של שירות שאין לו חשבון שירות בפרויקט.דוגמה:
gcloud beta services identity create \ --service=composer.googleapis.comכדי לתת הרשאות לסוכני שירות:
מקצים את התפקיד לסוכן השירות של Managed Airflow:
gcloud kms keys add-iam-policy-binding KEY_NAME \ --location KEY_LOCATION \ --keyring KEY_RING_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project KEY_PROJECT_IDנותנים הרשאות הצפנה ופענוח לסוכן השירות של Cloud Storage. אם אתם משתמשים בקטגוריה של סביבה בהתאמה אישית, אתם יכולים לדלג על השלב הזה.
gcloud storage service-agent \ --authorize-cmek=projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
מחליפים את:
- מחליפים את
PROJECT_IDבמזהה הפרויקט. -
KEY_PROJECT_IDבמזהה הפרויקט שבו מאוחסן המפתח לניהול הלקוח. אם משתמשים במפתח מפרויקט אחר, הערך הזה שונה ממזהה הפרויקט. אם משתמשים במפתח מאותו פרויקט, הערך הזה הוא מזהה הפרויקט. -
PROJECT_NUMBERבמספר הפרויקט. -
KEY_LOCATIONמחליפים במיקום של המפתח המנוהל של הלקוח. המיקום הזה צריך להיות זהה למיקום של הסביבה שלכם. -
KEY_NAMEמחליפים בשם של המפתח המנוהל של הלקוח. -
KEY_RING_NAMEמחליפים ב-keyring שבו מאוחסן המפתח המנוהל של הלקוח.
כדי לקבל את הערכים האלה, אפשר להריץ את הפקודות
gcloud projects describe,gcloud kms keyrings listו-gcloud kms keys describe.
שלב 3. יצירת סביבה עם CMEK
אחרי שיוצרים מפתח הצפנה בניהול הלקוח, אפשר להשתמש בו כדי ליצור סביבות Managed Airflow.
המסוף
כשיוצרים סביבה:
מרחיבים את הקטע הגדרות מתקדמות. בקטע הצפנת נתונים, בוחרים באפשרות מפתח של Cloud Key Management Service.
ברשימה הנפתחת Select a Cloud Key Management Service key, בוחרים את המפתח.
אם נדרשת הגדרה נוספת, תוצג הודעה שתעדכן אתכם. במקרה הזה:
לוחצים על פתיחת האשף.
בתיבת הדו-שיח Prepare CMEK key for usage in Managed Airflow, מעיינים ברשימת סוכני השירות שצריך להקצות להם את התפקיד Cloud KMS CryptoKey Encrypter/Decrypter במפתח.
כדי להעניק את התפקידים וההרשאות הנדרשים, לוחצים על הענקה.
gcloud
הארגומנט --kms-key מציין מפתח הצפנה בניהול הלקוח עבור הסביבה שלכם.
מידע נוסף על יצירת סביבות זמין במאמר יצירת סביבות. לדוגמה, יכול להיות שתרצו לציין פרמטרים אחרים לסביבה שלכם.
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version IMAGE_VERSION \
--kms-key projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
מחליפים את:
-
ENVIRONMENT_NAMEבשם הסביבה. IMAGE_VERSIONבשם של קובץ האימג' של Managed Airflow.-
KEY_PROJECT_IDעם מזהה הפרויקט שבו נמצא המפתח. אם משתמשים במפתח מפרויקט אחר, הערך הזה שונה ממזהה הפרויקט. אם משתמשים במפתח מאותו פרויקט, הערך הזה הוא מזהה הפרויקט. -
LOCATIONעם האזור שבו הסביבה ממוקמת. -
KEY_LOCATIONמחליפים במיקום של מפתח מנוהל של לקוח. המיקום הזה צריך להיות זהה למיקום של הסביבה שלכם. -
KEY_NAMEמחליפים בשם של המפתח המנוהל של הלקוח. -
KEY_RING_NAMEמחליפים ב-keyring שבו מאוחסן המפתח המנוהל של הלקוח.
דוגמה:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-3-airflow-2.11.1-build.6 \
--kms-key projects/example-project/locations/us-central1/keyRings/example-key-ring/cryptoKeys/example-key
צפייה בהגדרות ההצפנה של הסביבה
כדי לראות את הגדרות ההצפנה של סביבה קיימת:
המסוף
במסוף Google Cloud , עוברים לדף Environments.
ברשימת הסביבות, לוחצים על שם הסביבה. הדף Environment details ייפתח.
עוברים לכרטיסייה Environment configuration (הגדרת הסביבה).
פרטים על ההצפנה מופיעים בפריט מפתח להצפנת נתונים.
gcloud
מריצים את הפקודה הבאה gcloud כדי לראות את הגדרות ההצפנה
gcloud composer environments describe \
ENVIRONMENT_NAME \
--location LOCATION \
--format="value(config.encryptionConfig)"
מחליפים את:
-
ENVIRONMENT_NAMEבשם הסביבה. -
LOCATIONעם האזור שבו הסביבה ממוקמת.
דוגמה:
gcloud composer environments describe \
example-environment \
--location us-central1 \
--format="value(config.encryptionConfig)"
שימוש ב-CMEK ליומנים של Managed Airflow
שירות Cloud Logging תומך בהצפנת אחסון יומנים באמצעות מפתחות CMEK. מומלץ להשתמש בהליך הרגיל של CMEK להצפנת יומנים באמצעות מפתחות CMEK.
כדי להצפין יומנים באמצעות מפתחות CMEK, פועלים לפי ההוראות שמפורטות במאמר ניהול המפתחות שמגנים על נתוני האחסון של Logging.
הפניה אוטומטית של יומנים מ-Managed Airflow לקטגוריה של Cloud Storage שמוצפנת באמצעות CMEK
אם אתם מצפים שהיומנים יכילו מידע אישי רגיש, כדאי להפנות מחדש את היומנים של Managed Airflow לקטגוריה של Cloud Storage שמוצפנת באמצעות CMEK באמצעות Log Router. כך נמנעת שליחת היומנים שלכם אל Monitoring.
אם אתם צריכים תמיכה מ-Cloud Customer Care, יכול להיות שתצטרכו להעניק למהנדסי התמיכה של Google גישה ליומנים של Managed Airflow שמאוחסנים ב-Cloud Storage.
gcloud
יוצרים קטגוריה חדשה של Cloud Storage לאחסון היומנים.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATIONמחליפים את:
-
LOCATIONעם האזור שבו הסביבה ממוקמת. -
BUCKET_NAMEבשם של הקטגוריה.
דוגמה:
gcloud storage buckets create gs://composer-logs-us-central1-example-environment --location=us-central1-
מצפינים את הדלי באמצעות מפתח CMEK.
gcloud storage buckets update gs://BUCKET_NAME \ --default-encryption-key=projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAMEמחליפים את:
-
KEY_PROJECT_IDעם מזהה הפרויקט שבו נמצא המפתח. אם משתמשים במפתח מפרויקט אחר, הערך הזה שונה ממזהה הפרויקט. אם משתמשים במפתח מאותו פרויקט, הערך הזה הוא מזהה הפרויקט. -
KEY_LOCATIONמחליפים במיקום של מפתח מנוהל של לקוח. המיקום הזה צריך להיות זהה למיקום של הסביבה שלכם. -
KEY_RING_NAMEמחליפים ב-keyring שבו מאוחסן המפתח המנוהל של הלקוח. -
KEY_NAMEמחליפים בשם של המפתח המנוהל של הלקוח. -
BUCKET_NAMEבשם הקטגוריה.
דוגמה:
gcloud storage buckets update gs://composer-logs-us-central1-example-environment \ --default-encryption-key=projects/example-project/locations/us-central1/keyRings/example-key-ring/cryptoKeys/example-key-
יוצרים יעד חדש ליומן.
gcloud logging sinks create \ composer-log-sink-ENVIRONMENT_NAME \ storage.googleapis.com/BUCKET_NAME \ --log-filter "resource.type=cloud_composer_environment AND resource.labels.environment_name=ENVIRONMENT_NAME AND resource.labels.location=LOCATION"מחליפים את:
-
ENVIRONMENT_NAMEבשם הסביבה. -
LOCATIONעם האזור שבו הסביבה ממוקמת. -
BUCKET_NAMEבשם הקטגוריה.
דוגמה:
gcloud logging sinks create \ composer-log-sink-example-environment \ storage.googleapis.com/composer-logs-us-central1-example-environment \ --log-filter "resource.type=cloud_composer_environment AND resource.labels.environment_name=example-environment AND resource.labels.location=us-central1"-
מקצים לחשבון השירות את התפקיד יצירת אובייקטים של אחסון לקטגוריה הזו. חשבון השירות מוצג בתוצאה של הפקודה הקודמת).
gcloud projects add-iam-policy-binding \ PROJECT_ID \ --member="serviceAccount:LOGGING_SERVICE_AGENT" \ --role="roles/storage.objectCreator" \ --condition=Noneמחליפים את:
-
PROJECT_IDבמזהה הפרויקט (Project ID). -
LOGGING_SERVICE_AGENTמחליפים בכתובת האימייל של חשבון הסוכן של שירות Logging בשביל הקטגוריה הזו. השם של החשבון הזה מופיע בשלב הקודם.
דוגמה:
gcloud projects add-iam-policy-binding \ example-project \ --member="serviceAccount:example-sa@gcp-sa-logging.iam.gserviceaccount.com" \ --role="roles/storage.objectCreator" \ --condition=None-
להחריג את היומנים של הסביבה החדשה מהמעקב.
gcloud beta logging sinks update _Default \ --add-exclusion name=ENVIRONMENT_NAME-exclusion,filter="resource.type=cloud_composer_environment AND resource.labels.environment_name=ENVIRONMENT_NAME AND resource.labels.location=LOCATION"מחליפים את:
-
ENVIRONMENT_NAMEבשם הסביבה. -
LOCATIONעם האזור שבו הסביבה ממוקמת.
דוגמה:
gcloud beta logging sinks update _Default \ --add-exclusion name=example-environment-exclusion,filter="resource.type=cloud_composer_environment AND resource.labels.environment_name=example-environment AND resource.labels.location=us-central1"-
הוספת הצפנת CMEK ברמת הארגון לנתב היומנים.
gcloud logging cmek-settings describe \ --organization=ORGANIZATION_IDgcloud kms keys add-iam-policy-binding \ --project=KEY_PROJECT_ID \ --member LOGGING_SERVICE_AGENT \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --location=KEY_LOCATION \ --keyring=KEY_RING_NAME \ KEY_NAMEgcloud logging cmek-settings update \ --organization=ORGANIZATION_ID \ --kms-project=KEY_PROJECT_ID \ --kms-keyring=KEY_RING_NAME \ --kms-location=KEY_LOCATION \ --kms-key-name=KEY_NAMEמחליפים את:
ORGANIZATION_IDבמזהה הארגון.-
KEY_PROJECT_IDעם מזהה הפרויקט שבו נמצא המפתח. אם משתמשים במפתח מפרויקט אחר, הערך הזה שונה ממזהה הפרויקט. אם משתמשים במפתח מאותו פרויקט, הערך הזה הוא מזהה הפרויקט. -
KEY_RING_NAMEמחליפים ב-keyring שבו מאוחסן המפתח המנוהל של הלקוח. -
KEY_LOCATIONמחליפים במיקום של מפתח מנוהל של לקוח. המיקום הזה צריך להיות זהה למיקום של הסביבה שלכם. -
KEY_NAMEמחליפים בשם של המפתח המנוהל של הלקוח.