שימוש בספק פרטי הכניסה של Secret Manager

Secret Manager יכול להגן על הנתונים הרגישים שלכם, כמו מפתחות API, סיסמאות ואישורים. אפשר להשתמש בו כדי לנהל, לגשת ולבדוק את הסודות שלכם ב-Cloud de Confiance by S3NS.

אתם יכולים להגדיר אשכול או משימה של Managed Service for Apache Spark לשימוש בסוד של Secret Manager באמצעות ספק פרטי הכניסה של Secret Manager.

זמינות

אפשר להשתמש בתכונה הזו עם אשכולות של Managed Service for Apache Spark שנוצרו עם גרסאות אימג' 2.0.97 ומעלה, 2.1.41 ומעלה, 2.2.6 ומעלה או גרסאות מאוחרות יותר של Managed Service for Apache Spark.

הסברים על המונחים

בטבלה הבאה מפורטים המונחים שמופיעים במסמך הזה.

מונח תיאור
Secret סוד ב-Secret Manager הוא אובייקט גלובלי בפרויקט שמכיל אוסף של מטא-נתונים וגרסאות סוד. אתם יכולים לאחסן סודות, לנהל אותם ולגשת אליהם כ-blobs בינאריים או כמחרוזות טקסט.
Credential ב-Hadoop ובאפליקציות אחרות שמתארחות ב-Managed Service for Apache Spark, פרטי הכניסה מורכבים משם פרטי הכניסה (מזהה) וערך פרטי הכניסה (סיסמה). מזהה וערך של פרטי כניסה ממופים למזהה סוד ולערך סוד (גרסת סוד) ב-Secret Manager.

Usage

אפשר להגדיר את Hadoop ורכיבי OSS אחרים כך שיפעלו עם Secret Manager. לשם כך, צריך להגדיר את המאפיינים הבאים כשיוצרים אשכול של Managed Service for Apache Spark או כששולחים עבודה.

  • נתיב הספק : מאפיין נתיב הספק, hadoop.security.credential.provider.path, הוא רשימה מופרדת בפסיקים של מזהי URI של ספק אישורים אחד או יותר, שמתבצעת בהם מעבר כדי לפתור אישור.

    --properties=hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID
    
    • הערך scheme בנתיב הספק מציין את סוג ספק פרטי הכניסה. סכימות Hadoop כוללות את jceks://, user://,localjceks://. אפשר להשתמש בסכימה gsm:// כדי לחפש פרטי כניסה ב-Secret Manager.
  • החלפת אופרטור הנקודה : השירות Secret Manager לא מאפשר שימוש בנקודות (.) בשמות של סודות. עם זאת, בחלק מרכיבי תוכנת הקוד הפתוח (OSS) נעשה שימוש בנקודות במפתחות של פרטי הכניסה. כדי לפתור את הבעיה הזו, צריך להפעיל את ההגדרה הזו כדי להחליף נקודות (.) במקפים (-) בשמות של פרטי הכניסה. כך אפשר לוודא שפרטי כניסה של OSS עם נקודות בשמות שלהם מאוחסנים ומאוחזרים בצורה נכונה מ-Secret Manager.

    לדוגמה, אם מפתח האישורים של OSS הוא a.b.c, צריך לשנות אותו ל-a-b-c כשמאחסנים אותו ב-Secret Manager.

    --properties=hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true
    

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

  • גרסת סוד : לסודות ב-Secret Manager יכולות להיות כמה גרסאות (ערכים). משתמשים במאפיין הזה כדי לגשת לגרסה ספציפית של סוד לגישה יציבה בסביבות ייצור.

    --properties=hadoop.security.credstore.google-secret-manager.secret-version=1
    

    המאפיין הזה הוא אופציונלי. כברירת מחדל, Secret Manager ניגש לגרסה LATEST, שמתעדכנת לערך האחרון של הסוד בזמן הריצה. אם תרחיש השימוש שלכם הוא גישה תמיד לגרסה LATEST של סוד, אפשר להתעלם מהמאפיין הזה.

יצירת אשכול Managed Service for Apache Spark עם ספק פרטי כניסה של Secret Manager

  1. מריצים את הפקודה הבאה באופן מקומי או ב-Cloud Shell כדי ליצור אשכול Managed Service for Apache Spark עם המאפיינים הנדרשים.
    gcloud dataproc clusters create CLUSTER_NAME \
        --region=REGION \
        --properties="hadoop:hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID,hadoop:hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true" \
        ...other flags as needed...
    

הערות:

שליחת Managed Service for Apache Spark עם ספק אישורים של Secret Manager

  1. מריצים את הפקודה הבאה באופן מקומי או ב-Cloud Shell כדי לשלוח משימה של Managed Service for Apache Spark עם המאפיינים הנדרשים.

    gcloud dataproc jobs submit CLUSTER_NAME \
        --region=REGION \
        --properties="hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID,hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true" \
        ...other flags as needed... \
        -- job-args
    

הערות:

שימוש ב-Secret Manager עם Hive Metastore

המאפיין של Hive Metastore‏, javax.jdo.option.ConnectionPassword, מכיל את הסיסמה שמשמשת לאימות הגישה למסד הנתונים של Metastore. הסיסמה נשמרת בפורמט טקסט ב-hive-site.xml, וזה מייצג סיכון אבטחה. בסביבת ייצור, מומלץ לאחסן את הסיסמה ב-Secret Manager, ואז לעדכן את קובץ ההגדרות של hive-site.xml כדי לאפשר לשירות Hive metastore לקרוא את הסיסמה מ-Secret Manager.

בדוגמאות הבאות מוסבר איך להשתמש ב-Secret Manager בתרחישים שונים של Hive Metastore.

יצירת אשכול עם מאגר מטא-נתונים מקומי

  1. מריצים את הפקודה הבאה באופן מקומי או ב-Cloud Shell כדי ליצור אשכול Managed Service for Apache Spark.
    gcloud dataproc clusters create CLUSTER_NAME \
        --region=REGION \
        ...other flags as needed... \
    

הערות:

  • ‫CLUSTER_NAME: השם של האשכול החדש.
  • ‫REGION: אזור Compute Engine שבו יפעל עומס העבודה.
  1. יוצרים סוד באמצעות Secret Manager או באמצעות הפקודה hadoop credential.

    • אפשרות חלופית 1: שימוש ב-Secret Manager ליצירת סוד.

      • שם הסוד: /projects/PROJECT_ID/secrets/javax-jdo-option-ConnectionPassword/versions/1
      • ערך Secret: ‏ METASTORE_PASSWORD.
    • אפשרות חלופית 2: משתמשים בפקודה hadoop credential כדי ליצור סוד.

      sudo hadoop credential create javax-jdo-option-ConnectionPassword -provider gsm://projects/PROJECT_ID -v METASTORE_PASSWORD
      

      • ‫METASTORE_PASSWORD: מכיוון ש-Secret Manager לא תומך באופרטור הנקודה(.), צריך להחליף את כל הנקודות(.) בסיסמה במקפים(-).
  2. מוודאים שהסוד קיים.

    sudo hadoop credential list -provider gsm://projects/PROJECT_ID
    

  3. משתמשים בכלי לעריכת טקסט כדי להסיר את המאפיין javax.jdo.option.ConnectionPassword מהקובץ hive-site.xml, ואז מוסיפים לקובץ את המאפיינים hadoop.security.credential.provider.path ו-hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator.

    נכסים לדוגמה:

    hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID
    hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true
    

  4. מפעילים מחדש את Hive Metastore.

    sudo systemctl restart hive-metastore
    

יצירת אשכול עם Hive Metastore חיצוני

  1. מריצים את הפקודה הבאה באופן מקומי או ב-Cloud Shell כדי ליצור אשכול של Managed Service for Apache Spark עם מאפייני האשכול הבאים. אפשר להשתמש באשכול הזה כ-Hive metastore חיצוני למשימות Hive שמופעלות מאשכולות אחרים של Managed Service for Apache Spark, עבור עומסי עבודה של Spark Hive.

    gcloud dataproc clusters create METASTORE_CLUSTER_NAME \
        --region=REGION \
        --properties=core:fs.defaultFS=gs://METASTORE_CLUSTER_PROXY_BUCKET,dataproc:dataproc.components.deactivate="hdfs hive-server2 hive-metastore" \
        ...other flags as needed...
    
  2. יוצרים סוד באמצעות Secret Manager או באמצעות הפקודה hadoop credential.

    • אפשרות חלופית 1: שימוש ב-Secret Manager ליצירת סוד.
      • שם הסוד: /projects/PROJECT_ID/secrets/javax-jdo-option-ConnectionPassword/versions/1
      • ערך Secret: ‏ METASTORE_PASSWORD.
    • אפשרות חלופית 2: משתמשים בפקודה hadoop credential כדי ליצור סוד.
      sudo hadoop credential create javax-jdo-option-ConnectionPassword -provider gsm://projects/PROJECT_ID -v METASTORE_PASSWORD
      
      • ‫METASTORE_PASSWORD: מכיוון ש-Secret Manager לא תומך באופרטור הנקודה(.), צריך להחליף את הנקודות(.) בסיסמה במקפים(-).
  3. מוודאים שהסוד קיים.

    sudo hadoop credential list -provider gsm://projects/PROJECT_ID
      

יצירת אשכול להרצת משימות Hive שמתחברות למאגר מטא נתונים חיצוני

  1. מריצים את הפקודה הבאה באופן מקומי או ב-Cloud Shell כדי ליצור אשכול של Managed Service for Apache Spark עם מאפייני האשכול הבאים. אפשר להשתמש באשכול הזה כדי להריץ משימות Hive שמתחברות למאגר מטא נתונים חיצוני באשכול אחר של Managed Service for Apache Spark.
    gcloud dataproc clusters create CLUSTER_NAME \
        --region=REGION \
        --properties="hive:javax.jdo.option.ConnectionURL=jdbc:mysql://METASTORE_CLUSTER_NAME-m/metastore,hive:hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID,hive:hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true" \
        ...other flags as needed...
    

פקודות של פרטי כניסה ל-Hadoop

אתם יכולים להשתמש ב-SSH כדי להתחבר לצומת הראשי של Managed Service for Apache Spark, ולהשתמש בפקודה hadoop credential כדי ליצור סודות, להציג אותם ולנהל אותם.

הפקודות של hadoop credential בנויות בפורמט הבא: hadoop credential SUBCOMMAND OPTIONS. בדוגמאות הבאות, הדגל -provider נוסף כדי לציין את סוג הספק והמיקום שלו (החנות של הספק). הסכימה gsm:// מציינת את Secret Manager.

  • יוצרים סוד עם מזהה הסוד שצוין. הפקודה לא יוצרת את הסוד אם מזהה הסוד שצוין קיים. ההתנהגות הזו זהה לזו של CredentialProvider API של Hadoop.

    hadoop credential create SECRET_ID -provider gsm://projects/PROJECT_ID -v VALUE
    

  • הצגת רשימה של סודות שמאוחסנים בפרויקט.

    hadoop credential list -provider gsm://projects/PROJECT_ID
    

  • בדיקה אם סוד קיים בפרויקט עם ערך שצוין.

    hadoop credential check SECRET_ID -provider gsm://projects/PROJECT_ID -v VALUE
    

  • בודקים אם יש גרסה ספציפית של סוד בקובץ תצורה.

    hadoop credential conf CONFIG_FILE check SECRET_ID -provider gsm://projects/PROJECT_ID -v VALUE
    
  • ‫CONFIG_FILE: קובץ ה-XML שבו מוגדר הערך hadoop.security.credstore.google-secret-manager.secret-version.

  • מחיקה של כל הגרסאות של סוד בפרויקט.

    hadoop credential delete SECRET_ID -provider gsm://projects/ PROJECT_ID
    

מידע נוסף זמין במדריך לפקודות Hadoop.

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