הגדרת Kerberos לנקודות קצה של Dataproc Metastore Thrift

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

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

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

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

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

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

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

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

שיקולים לגבי הרשת

לפני שמגדירים את Kerberos, כדאי לבדוק את הגדרות הרשת הבאות:

  • מגדירים קישור דרך IP בין רשת ה-VPC לבין KDC. חובה לבצע את הפעולה הזו כדי לאמת את קובץ ה-KDC באמצעות שירות Dataproc Metastore.

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

  • אם אתם משתמשים ב-VPC Service Controls, הסוד ב-Secret Manager ואובייקט krb5.conf Cloud Storage צריכים להיות שייכים לפרויקט שנמצא באותם גבולות גזרה לשירות כמו שירות Dataproc Metastore.

  • מחליטים באיזו רשת של קישור בין רשתות שכנות (peering) של VPC רוצים להשתמש. צריך להגדיר את אשכול Dataproc ואת שירות Dataproc Metastore עם אותה רשת VPC שכנה (peering).

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

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

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

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

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

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

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

הפעלת Kerberos ב-Dataproc Metastore

בהוראות הבאות מוסבר איך להגדיר את Kerberos לשירות Dataproc Metastore שמצורף לאשכול Dataproc.

יצירת אשכול Dataproc והפעלת Kerberos

gcloud

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

gcloud dataproc clusters create CLUSTER_NAME \
    --image-version=2.0 \
    --enable-kerberos \
    --scopes 'https://www.googleapis.com/auth/cloud-platform'

מחליפים את מה שכתוב בשדות הבאים:

  • CLUSTER_NAME: השם של אשכול Dataproc.

הגדרת אשכול Dataproc ל-Kerberos

בהוראות הבאות מוסבר איך להשתמש ב-SSH כדי להתחבר לאשכול Dataproc ראשי שמשויך לשירות Dataproc Metastore.

לאחר מכן, משנים את קובץ hive-site.xml ומגדירים את Kerberos לשירות.

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

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

  3. פותחים את הקובץ /etc/hive/conf/hive-site.xml.

    sudo vim /etc/hive/conf/hive-site.xml
    

    הפלט אמור להיראות כך:

    <property>
    <name>hive.metastore.kerberos.principal</name>
    <value>PRINCIPAL_NAME</value>
    </property>
    <property>
    <name>hive.metastore.kerberos.keytab.file</name>
    <value>METASTORE_PRINCPAL_KEYTAB</value>
    </property>
    

    מחליפים את:

    • PRINCIPAL_NAME: שם חשבון ראשי, בפורמט הבא primary/instance@REALM. לדוגמה: hive/test@C.MY-PROJECT.INTERNAL.
    • METASTORE_PRINCIPAL_KEYTAB: המיקום של קובץ ה-keytab של Hive Metastore. משתמשים בערך /etc/security/keytab/metastore.service.keytab.

יצירת קובץ keytab

בהוראות הבאות מוסבר איך ליצור קובץ keytab.

קובץ keytab מכיל צמד של ישויות Kerberos וצמד של מפתחות מוצפנים. הוא משמש לאימות של שם שירות ראשי (SPN) באמצעות Kerberos KDC.

איך יוצרים קובץ keytab

  1. בסשן ה-SSH של Dataproc, יוצרים את קובץ ה-keytab ואת העיקרון.

    sudo kadmin.local -q "addprinc -randkey PRINCIPAL_NAME"
    sudo kadmin.local -q "ktadd -k /etc/security/keytab/metastore.service.keytab PRINCIPAL_NAME"
    
  2. בסשן ה-SSH של Dataproc, יוצרים את קובץ ה-keytab ומעלים אותו ל-Secret Manager.

    gcloud secrets create SECRET_NAME --replication-policy automatic
    sudo gcloud secrets versions add SECRET_NAME --data-file /etc/security/keytab/metastore.service.keytab

    מחליפים את מה שכתוב בשדות הבאים:

    • SECRET_NAME: שם הסוד.

עדכון הקובץ krb5.conf

לאחר מכן, צריך לעדכן את קובץ krb5.conf כדי לשייך אותו לאשכול Dataproc.

  1. קובעים את כתובת ה-IP הפנימית הראשית של המופע הראשי של אשכול Dataproc.

    gcloud compute instances list
    

    לדוגמה, הרצת הפקודה הזו יוצרת פלט דומה:

    ~$ gcloud compute instances list --project kerberos-project
    NAME                                                 ZONE           MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP    EXTERNAL_IP     STATUS
    cluster-236-m                                        us-central1-c  n2-standard-4               192.0.2.2      *.*.*.*         RUNNING
    ...
    

    במקרה הזה, כתובת ה-IP הפנימית של האשכול היא 192.0.2.2.

  2. פותחים את הקובץ krb5.conf.

    sudo vim /etc/krb5.conf
    
  3. בקובץ, מחליפים את הפרמטר KDC ואת הפרמטר admin_server הקיימים בכתובת ה-IP הפנימית של אשכול Dataproc.

    לדוגמה, אם משתמשים בערך של כתובת ה-IP מהשלבים הקודמים, הפלט ייראה בערך כך.

    [realms]
    US-CENTRAL1-A.C.MY-PROJECT.INTERNAL = {
       kdc = 192.0.2.2
       admin_server = 192.0.2.2
    }
    
  4. מעלים את הקובץ /etc/krb5.conf ממכונת ה-VM הראשית של Dataproc לקטגוריה של Cloud Storage.

    gcloud storage cp /etc/krb5.conf gs://PATH_TO_KRB5
    

    מחליפים את:

    • PATH_TO_KRB5: ה-URI של Cloud Storage שמכיל את קובץ krb5.conf.

    אחרי שההעלאה מסתיימת, מעתיקים את הנתיב של ההעלאה. צריך להשתמש בו כשיוצרים את שירות Dataproc Metastore.

מתן תפקידים והרשאות ב-IAM

  1. נותנים לחשבון השירות של Dataproc Metastore הרשאה לגשת לקובץ keytab. החשבון הזה מנוהל על ידי Google ומופיע בדף ממשק המשתמש של הרשאות IAM כשמסמנים את התיבה Include Google-provided role grants.

      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com \
          --role roles/secretmanager.secretAccessor

  2. נותנים לחשבון השירות של Dataproc Metastore הרשאה לגשת לקובץ krb5.conf.

      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com \
          --role roles/storage.objectViewer

יצירת שירות Dataproc Metastore עם Kerberos

יוצרים שירות חדש של Dataproc Metastore שמוגדר עם קובצי Kerberos.

חשוב לוודא שיוצרים את השירות ברשת ה-VPC כמו אשכול Dataproc.

gcloud metastore services create SERVICE \
   --location=LOCATION \
   --instance-size=medium \
   --network=VPC_NETWORK \
   --kerberos-principal=KERBEROS_PRINCIPAL \
   --krb5-config=KRB5_CONFIG \
   --keytab=CLOUD_SECRET

מחליפים את מה שכתוב בשדות הבאים:

  • SERVICE: השם של שירות Dataproc Metastore.
  • LOCATION: המיקום של שירות Dataproc Metastore.
  • VPC_NETWORK: השם של רשת ה-VPC משתמשים באותה רשת שהוגדרה באשכול Dataproc.
  • KERBEROS_PRINCIPAL: השם של העיקרון ב-Kerberos שיצרתם קודם.
  • KRB5_CONFIG: המיקום של קובץ krb5.conf. משתמשים ב-URI של אובייקט Cloud Storage שמפנה לקובץ.
  • CLOUD_SECRET: שם המשאב היחסי של גרסת סוד ב-Secret Manager.

אחרי שיוצרים את האשכול, Dataproc Metastore מנסה להתחבר עם פרטי הכניסה של Kerberos באמצעות העיקרון, ה-keytab וkrb5.confהקובץ שסופקו. אם החיבור נכשל, גם יצירת Dataproc Metastore נכשלת.

אחרי שיוצרים את שירות Dataproc Metastore, מאתרים את מזהה ה-URI של נקודת הקצה של Thrift ואת ספריית מחסן הנתונים.

  1. מתחברים באמצעות SSH למופע הראשי של אשכול Dataproc.

  2. בסשן ה-SSH, פותחים את הקובץ /etc/hive/conf/hive-site.xml.

    sudo vim /etc/hive/conf/hive-site.xml
    
  3. משנים את /etc/hive/conf/hive-site.xml באשכול Dataproc.

    <property>
    <name>hive.metastore.uris</name>
    <!-- Update this value. -->
    <value>ENDPOINT_URI</value>
    </property>
    <!-- Add this property entry. -->
    <property>
    <name>hive.metastore.warehouse.dir</name>
    <value>WAREHOUSE_DIR</value>
    </property>
    
  4. מפעילים מחדש את HiveServer2:

    sudo systemctl restart hive-server2.service
    

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

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

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

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

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

    allowed.system.users=hive
    

קבלת כרטיס Kerberos

  1. צריך לקבל את כרטיס Kerberos לפני שמתחברים למופע של Dataproc Metastore.

    sudo klist -kte /etc/security/keytab/metastore.service.keytab
    sudo kinit -kt /etc/security/keytab/metastore.service.keytab PRINCIPAL_NAME
    sudo klist # gets the ticket information.
    sudo hive
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PRINCIPAL_NAME: השם של החשבון הראשי.

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