רכיב Ranger אופציונלי של Managed Service for Apache Spark

אפשר להתקין רכיבים נוספים כמו Ranger כשיוצרים אשכול של Managed Service for Apache Spark באמצעות התכונה Optional components. בדף הזה מתואר הרכיב Ranger.

רכיב Apache Ranger הוא מסגרת קוד פתוח לניהול הרשאות וביקורת בסביבת Hadoop. שרת Ranger admin וממשק המשתמש שלו באינטרנט זמינים ביציאה 6080 בצומת הראשי הראשון של האשכול.

מאמרים נוספים:

התקנת הרכיב

מתקינים את הרכיב כשיוצרים אשכול של Managed Service for Apache Spark. אפשר להוסיף רכיבים לאשכולות שנוצרו באמצעות Managed Service for Apache Spark גרסה 1.3 ואילך. רכיב Ranger דורש התקנה של רכיב Solr.

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

שלבי ההתקנה:

  1. הגדרת סיסמה ל-Ranger admin:

    1. מקצים את התפקיד Cloud Key Management Service CryptoKey Encrypter/Decrypter לחשבון השירות של האשכול. כברירת מחדל, חשבון השירות של האשכול מוגדר כחשבון השירות של Compute Engine שמוגדר כברירת מחדל, והוא נראה כך:
      project-number-compute@developer.gserviceaccount.com
      
      כשיוצרים את האשכול, אפשר לציין חשבון שירות אחר לאשכול.
      1. דוגמה: הענקת התפקיד Cloud KMS CryptoKey Encrypter/Decrypter לחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine:
        gcloud projects add-iam-policy-binding project-id \
            --member=serviceAccount:project-number-compute@developer.gserviceaccount.com \
            --role=roles/cloudkms.cryptoKeyDecrypter
        
    2. מצפינים את הסיסמה של Ranger admin באמצעות מפתח של Key Management Service ‏ (KMS). בגרסאות תמונה של אשכולות מגרסה 2.2 ומטה, הסיסמה צריכה לכלול לפחות 8 תווים, עם לפחות תו אלפביתי אחד ותו מספרי אחד. בגרסה 2.2 ואילך של אשכולות תמונות, הסיסמה צריכה להכיל לפחות 8 תווים, כולל לפחות אות גדולה אחת, אות קטנה אחת וספרה אחת.
      1. דוגמה:
        1. יוצרים את אוסף המפתחות:
          gcloud kms keyrings create my-keyring --location=global
          
        2. יוצרים את המפתח:
          gcloud kms keys create my-key \
              --location=global \
              --keyring=my-keyring \
              --purpose=encryption
          
        3. הצפנה של סיסמת המשתמש של Ranger admin:
          echo 'my-ranger-admin-password' | \
            gcloud kms encrypt \
              --location=global \
              --keyring=my-keyring \
              --key=my-key \
              --plaintext-file=- \
              --ciphertext-file=admin-password.encrypted
          
    3. מעלים את הסיסמה המוצפנת לקטגוריה של Cloud Storage בפרויקט.
      1. דוגמה:
        gcloud storage cp admin-password.encrypted gs://my-bucket
        
  2. יוצרים את האשכול:

    1. כשמתקינים את רכיב Ranger, צריך להתקין גם את רכיב Solr.
      1. רכיב Ranger מסתמך על רכיב Solr כדי לאחסן את יומני הביקורת שלו ולשאול לגביהם שאילתות. כברירת מחדל, הוא משתמש ב-HDFS לאחסון. הנתונים האלה ב-HDFS נמחקים כשמוחקים את האשכול. כדי להגדיר את רכיב Solr לאחסון נתונים, כולל יומני ביקורת של Ranger, ב-Cloud Storage, משתמשים בdataproc:solr.gcs.path=gs://<bucket> מאפיין האשכול כשיוצרים את האשכול. הנתונים ב-Cloud Storage נשמרים גם אחרי מחיקת האשכול.
    2. מעבירים את כתובות ה-URI של מפתח KMS והסיסמה לפקודה ליצירת אשכול על ידי הגדרת dataproc:ranger.kms.key.uri ו-dataproc:ranger.admin.password.uri מאפייני האשכול.
    3. אפשר גם להעביר את admin סיסמת המשתמש במסד הנתונים של Ranger דרך URI של קובץ מוצפן ב-Cloud Storage על ידי הגדרת dataproc:ranger.db.admin.password.uri מאפיין האשכול.
    4. כברירת מחדל, רכיב Ranger משתמש במופע של מסד הנתונים MySql שפועל בצומת הראשי הראשון של האשכול. במופע MySQL, מפעילים את הדגל log_bin_trust_function_creators על ידי הגדרת המשתנה ל-ON. הגדרת הדגל הזה קובעת אם אפשר לסמוך על יוצרי פונקציות מאוחסנות. אחרי שיוצרים את האשכול ומגדירים את Ranger, אפשר לאפס את log_bin_trust_function_creators ל-OFF.
    5. כדי לשמור את מסד הנתונים של Ranger אחרי מחיקת האשכול, משתמשים במכונת Cloud SQL כמסד נתונים חיצוני של MySQL.

      1. מגדירים את dataproc:ranger.cloud-sql.instance.connection.name מאפיין האשכול למופע Cloud SQL.
      2. מגדירים את dataproc:ranger.cloud-sql.root.password.uri מאפיין האשכול ל-URI של Cloud Storage של סיסמת הבסיס המוצפנת במפתח KMS של מכונת Cloud SQL.
      3. מגדירים את dataproc:ranger.cloud-sql.use-private-ip מאפיין האשכול כדי לציין אם החיבור למופע Cloud SQL הוא באמצעות כתובת IP פרטית.

      רכיב Ranger משתמש בשרת proxy ל-Cloud SQL Auth כדי להתחבר למופע Cloud SQL. כדי להשתמש ב-proxy:

      1. מגדירים את היקף ה-API‏ sqlservice.admin כשיוצרים את האשכול (ראו אישור בקשות באמצעות OAuth 2.0). אם משתמשים בפקודה gcloud dataproc cluster create, מוסיפים את הפרמטר --scopes=default,sql-admin.
      2. מפעילים את SQL Admin API בפרויקט.
      3. מוודאים שלחשבון השירות של האשכול יש את התפקיד Cloud SQL Editor (עריכה ב-Cloud SQL).
      4. מכיוון ששרת ה-proxy ל-Cloud SQL Auth בצומת הראשי יוצר חיבורים יוצאים למכונה של Cloud SQL דרך יציאה 3307, צריך לוודא שחיבורי TCP יוצאים מהצומת הראשי למכונה של Cloud SQL דרך יציאה 3307 מותרים. מידע נוסף זמין במאמר איך פועל שרת ה-Proxy לאימות של Cloud SQL.

      מסוףGoogle Cloud

      1. במסוף Google Cloud , פותחים את הדף Create cluster.
      2. לוחצים על הגדרה נוספת כדי להרחיב את הקטע.
      3. עורכים את הרכיבים האופציונליים.
      4. בחלונית שנפתחת, מסמנים את תיבות הסימון Ranger ו-Solr ולוחצים על שמירה.

      ‫CLI של gcloud

      כדי ליצור אשכול של Managed Service for Apache Spark שכולל את רכיב Ranger, משתמשים בפקודה gcloud dataproc clusters create עם הדגל --optional-components.cluster-name

      gcloud dataproc clusters create cluster-name \
          --optional-components=SOLR,RANGER \
          --region=region \
          --enable-component-gateway \
          --properties="dataproc:ranger.kms.key.uri=projects/project-id/locations/global/keyRings/my-keyring/cryptoKeys/my-key,dataproc:ranger.admin.password.uri=gs://my-bucket/admin-password.encrypted" \
          ... other flags
      

      ‫API בארכיטקטורת REST

      מציינים את הרכיבים Ranger ו-Solr בשדה SoftwareConfig.Component כחלק מבקשת clusters.create של Dataproc API. בנוסף, צריך להגדיר את מאפייני האשכול הבאים בשדה SoftwareConfig.Component.properties:

      1. dataproc:ranger.kms.key.uri: "projects/project-id/locations/global/keyRings/my-keyring/cryptoKeys/my-key"
      2. dataproc:ranger.admin.password.uri : "gs://my-bucket/admin-password.encrypted"

לוחצים על הכרטיסייה Web interfaces (ממשקי אינטרנט). בקטע Component gateway (שער רכיבים), לוחצים על Ranger כדי לפתוח את ממשק האינטרנט של Ranger. מתחברים באמצעות שם המשתמש של אדמין ב-Ranger (לדוגמה, admin) והסיסמה.

יומנים של Ranger Admin

יומני Ranger admin זמינים בLogging כיומני ranger-admin-root.