רכיב 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@
      
      כשיוצרים את האשכול, אפשר לציין חשבון שירות אחר לאשכול.
      1. דוגמה: הקצאת התפקיד Cloud KMS CryptoKey Encrypter/Decrypter לחשבון השירות שמשמש כברירת המחדל של Compute Engine:
        gcloud projects add-iam-policy-binding project-id \
            --member=serviceAccount:project-number-compute@ \
            --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. מעבירים את מפתח ה-KMS ואת הסיסמה של כתובות ה-URI של Cloud Storage לפקודה ליצירת אשכול על ידי הגדרת 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 שפועלת בצומת הראשי הראשון של האשכול. כדי לשמור את מסד הנתונים של Ranger אחרי מחיקת האשכול, אפשר להגדיר את האשכול לשימוש במופע חיצוני של Cloud SQL. כדי להשתמש במכונה חיצונית של Cloud SQL:

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

      כשמשתמשים במכונת Cloud SQL חיצונית, רכיב Ranger משתמש בCloud SQL Auth Proxy כדי להתחבר למכונת 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 cluster-nameעם הדגל --optional-components.

    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

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