הגדרת הצפנה באמצעות מפתחות הצפנה בניהול הלקוח

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

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

    gcloud beta services identity create \
      --service=API_SERVICE_NAME
    

    מחליפים את API_SERVICE_NAME בשם שירות ה-API של שירות שאין לו חשבון שירות בפרויקט.

    דוגמה:

    gcloud beta services identity create \
      --service=composer.googleapis.com
    
  2. כדי לתת הרשאות לסוכני שירות:

    1. מקצים את התפקיד לסוכן השירות של 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
      
    2. נותנים הרשאות הצפנה ופענוח לסוכן השירות של 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.

המסוף

כשיוצרים סביבה:

  1. מרחיבים את הקטע הגדרות מתקדמות. בקטע הצפנת נתונים, בוחרים באפשרות מפתח של Cloud Key Management Service.

  2. ברשימה הנפתחת Select a Cloud Key Management Service key, בוחרים את המפתח.

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

    1. לוחצים על פתיחת האשף.

    2. בתיבת הדו-שיח Prepare CMEK key for usage in Managed Airflow, מעיינים ברשימת סוכני השירות שצריך להקצות להם את התפקיד Cloud KMS CryptoKey Encrypter/Decrypter במפתח.

    3. כדי להעניק את התפקידים וההרשאות הנדרשים, לוחצים על הענקה.

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

צפייה בהגדרות ההצפנה של הסביבה

כדי לראות את הגדרות ההצפנה של סביבה קיימת:

המסוף

  1. במסוף Google Cloud , עוברים לדף Environments.

    מעבר אל Environments

  2. ברשימת הסביבות, לוחצים על שם הסביבה. הדף Environment details ייפתח.

  3. עוברים לכרטיסייה Environment configuration (הגדרת הסביבה).

  4. פרטים על ההצפנה מופיעים בפריט מפתח להצפנת נתונים.

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

  1. יוצרים קטגוריה חדשה של 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
    
  2. מצפינים את הדלי באמצעות מפתח 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
    
  3. יוצרים יעד חדש ליומן.

    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"
    
  4. מקצים לחשבון השירות את התפקיד יצירת אובייקטים של אחסון לקטגוריה הזו. חשבון השירות מוצג בתוצאה של הפקודה הקודמת).

    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
    
  5. להחריג את היומנים של הסביבה החדשה מהמעקב.

    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"
    
  6. הוספת הצפנת CMEK ברמת הארגון לנתב היומנים.

    gcloud logging cmek-settings describe \
      --organization=ORGANIZATION_ID
    
    gcloud 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_NAME
    
    gcloud 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 מחליפים בשם של המפתח המנוהל של הלקוח.

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