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

הרכיב האופציונלי Apache Ranger מאפשר לנהל הרשאות וביקורת לסביבה של Hadoop באשכולות של Managed Service for Apache Spark. כשמתקינים את הרכיב הזה במהלך יצירת האשכול, שרת Ranger admin וממשק המשתמש באינטרנט זמינים ביציאה 6080 בצומת הראשי הראשון של האשכול.

למשימות קשורות ולהנחיות, קראו איך להשתמש ב-Ranger עם Kerberos, איך לגבות ולשחזר סכימה של Ranger ושיטות מומלצות לשימוש ב-Apache Ranger ב-Managed Service for Apache Spark.

התקנת הרכיב

מתקינים את הרכיב כשיוצרים אשכול 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 לאחסון נתונים ב-Cloud Storage, כולל יומני הביקורת של Ranger, משתמשים במאפיין האשכול 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 של סיסמת הבסיס (root) המוצפנת באמצעות מפתח 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.
      4. מכיוון ש-Cloud SQL Auth Proxy בצומת הראשי יוצר חיבורים יוצאים למכונה של Cloud SQL דרך יציאה 3307, צריך לוודא שחיבורי TCP יוצאים מהצומת הראשי למכונה של Cloud SQL דרך יציאה 3307 מותרים. למידע נוסף, קראו את המאמר איך פועל Cloud SQL Auth Proxy.

    מסוףGoogle Cloud

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

    ‫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"

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

יומני אדמין של Ranger

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