הגדרת Kerberos לנקודות קצה של gRPC ב-Dataproc Metastore

בדף הזה מוסבר איך להגדיר את Kerberos לשירות Dataproc Metastore שמשתמש בפרוטוקול נקודת הקצה gRPC. אם שירות Dataproc Metastore שלכם משתמש בפרוטוקול של נקודת הקצה Thrift, כדאי לעיין במאמר הגדרת Kerberos לנקודות קצה של Thrift.

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

  • הסבר על היסודות של Kerberos.

    בהוראות האלה, משתמשים באשכול Dataproc כדי ליצור את נכסי Kerberos הבאים:

    • קובץ Keytab.
    • קובץ krb5.conf.
    • חשבון משתמש ב-Kerberos.

    מידע נוסף על האופן שבו נכסי Kerberos האלה פועלים עם שירות Dataproc Metastore זמין במאמר מידע על Kerberos.

  • יוצרים ומארחים שרת KDC משלכם של Kerberos או לומדים איך להשתמש בשרת KDC המקומי של אשכול Dataproc.

  • יוצרים קטגוריה של Cloud Storage או מקבלים גישה לקטגוריה קיימת. חובה לאחסן את קובץ ה-krb5.conf בדלי הזה.

תפקידים נדרשים

כדי לקבל את ההרשאה שדרושה ליצירת Dataproc Metastore שמוגדר עם Kerberos, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט, בהתאם לעיקרון של הרשאות מינימליות:

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

התפקיד שמוגדר מראש הזה מכיל את ההרשאה metastore.services.create, שנדרשת כדי ליצור Dataproc Metastore שמוגדר עם Kerberos .

יכול להיות שתוכלו לקבל את ההרשאה הזו גם בתפקידים בהתאמה אישית או בתפקידים אחרים שמוגדרים מראש.

מידע נוסף על תפקידים והרשאות ספציפיים ב-Dataproc Metastore זמין במאמר ניהול גישה באמצעות IAM.

מידע נוסף זמין במאמר IAM ובקרת גישה ב-Dataproc Metastore.

הגדרת Kerberos ל-Dataproc Metastore

בהוראות הבאות מוסבר איך להגדיר Kerberos לשירות Dataproc Metastore שמשתמש בנקודת הקצה של gRPC.

קודם יוצרים Dataproc Metastore שמשתמש בנקודת הקצה של gRPC. לאחר מכן, יוצרים אשכול Dataproc עם Kerberos ומחברים אותו.

יצירת שירות Dataproc Metastore עם נקודת קצה של gRPC

כדי ליצור Dataproc Metastore שמשתמש בנקודת הקצה של gRPC, מריצים את הפקודה הבאה של gcloud metastore services create:

gcloud

gcloud metastore services create SERVICE \
     --instance-size=medium \
     --endpoint-protocol=grpc

מחליפים את:

  • SERVICE: השם של שירות Dataproc Metastore

יצירת אשכול Dataproc וחיבור לשירות

כדי ליצור Dataproc עם Kerberos, מריצים את הפקודה gcloud dataproc clusters create הבאה.

בפקודה הזו, האפשרות --enable-kerberos יוצרת את קובץ ה-Keytab של Kerberos, את קובץ krb5.conf ואת ה-principal. כל הערכים האלה נוצרים באמצעות שמות והגדרות ברירת מחדל שמוגדרים על ידי אשכול Dataproc.

gcloud

gcloud dataproc clusters create CLUSTER_NAME \
    --project PROJECT_ID \
    --region REGION \
    --image-version 2.0-debian10 \
    --dataproc-metastore DATAPROC_METASTORE_NAME \
    --enable-kerberos \
    --scopes 'https://www.googleapis.com/auth/cloud-platform'

מחליפים את:

  • CLUSTER_NAME: השם של אשכול Dataproc.
  • PROJECT_ID: מזהה הפרויקט ב-Google Cloud.
  • REGION: האזור Google Cloud שבו רוצים ליצור את אשכול Dataproc.
  • DATAPROC_METASTORE_NAME: השם של שירות Dataproc Metastore שמצרפים לאשכול, בפורמט הבא: projects/<my_project>/locations/<location>/services/<service_id>.

הגדרת Dataproc לפני שליחת משימות

כדי להריץ את העבודות ב-Dataproc, צריך להוסיף את המשתמש hive למאפיין allowed.system.users בקובץ container-executor.cfg של Hadoop. כך המשתמשים יכולים להריץ שאילתות כדי לגשת לנתונים, כמו select * from.

בהוראות הבאות מוסבר איך להתחבר באמצעות SSH לאשכול Dataproc הראשי שמשויך לשירות Dataproc Metastore ולעדכן את הקובץ container-executor.cfg.

  1. נכנסים לדף VM Instances במסוף Google Cloud .
  2. ברשימת המכונות הווירטואליות, לוחצים על SSH

    ייפתח חלון דפדפן בספריית הבית שלכם בצומת.

  3. בסשן ה-SSH, פותחים את הקובץ container-executor.cfg של Hadoop.

    sudo vim /etc/hadoop/conf/container-executor.cfg
    

    מוסיפים את השורה הבאה לכל צומת Dataproc.

    allowed.system.users=hive
    

קבלת כרטיס Kerberos

בהוראות הבאות מוסבר איך ליצור כרטיס קרברוס.

  1. בסשן SSH של אשכול Dataproc, יוצרים כרטיס Kerberos ומתחברים לשירות Dataproc Metastore.

    הפקודה הזו משתמשת בשם ברירת המחדל של קובץ ה-keytab שנוצר על ידי אשכול Dataproc.

    sudo klist -kte /etc/security/keytab/hive.service.keytab
    sudo kinit -kt /etc/security/keytab/hive.service.keytab hive/_HOST@${realm}
    sudo klist # gets the ticket information.
    

    הערך _HOST מאוחזר כשמציגים את רשימת קובץ ה-keytab באמצעות הפקודה klist -kte. הוא מכיל את שם המארח של הצומת הראשי.

(אופציונלי) הוספת חשבון משתמש חדש

  1. כדי להוסיף חשבון ראשי חדש, מריצים את הפקודה הבאה.

    sudo kadmin.local -q "addprinc -randkey PRINCIPAL"
    sudo kadmin.local -q "ktadd -k /etc/security/keytab/hive.service.keytab PRINCIPAL"
    
  2. מקבלים את כרטיס Kerberos.

    sudo klist -kte /etc/security/keytab/hive.service.keytab
    sudo kinit -kt /etc/security/keytab/hive.service.keytab PRINCIPAL
    sudo klist
    sudo hive
    

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