הרכיב האופציונלי 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.
שלבי ההתקנה:
הגדרת הסיסמה ל-Ranger
admin:- מקצים את התפקיד Cloud Key Management Service CryptoKey Encrypter/Decrypter לחשבון השירות של האשכול. כברירת מחדל, חשבון השירות של האשכול מוגדר כחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine, והוא נראה כך:
אפשר לציין חשבון שירות אחר לאשכול כשיוצרים את האשכול.project-number-compute@
- דוגמה:
הקצאת התפקיד Cloud KMS CryptoKey Encrypter/Decrypter לחשבון השירות שמשמש כברירת המחדל של Compute Engine:
gcloud projects add-iam-policy-binding project-id \ --member=serviceAccount:project-number-compute@ \ --role=roles/cloudkms.cryptoKeyDecrypter
- דוגמה:
הקצאת התפקיד Cloud KMS CryptoKey Encrypter/Decrypter לחשבון השירות שמשמש כברירת המחדל של Compute Engine:
- מצפינים את הסיסמה של Ranger
adminבאמצעות מפתח של Key Management Service (KMS). באשכולות עם גרסת תמונה שקודמת ל-2.2, הסיסמה צריכה להכיל לפחות 8 תווים, כולל לפחות אות אחת וספרה אחת. באשכולות עם גרסת תמונה 2.2 ואילך, הסיסמה צריכה להכיל לפחות 8 תווים, כולל לפחות אות גדולה אחת, אות קטנה אחת ותו מספרי אחד.- דוגמה:
- יוצרים את אוסף המפתחות:
gcloud kms keyrings create my-keyring --location=global
- יוצרים את המפתח:
gcloud kms keys create my-key \ --location=global \ --keyring=my-keyring \ --purpose=encryption
- מצפינים את סיסמת המשתמש של 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
- יוצרים את אוסף המפתחות:
- דוגמה:
- מעלים את הסיסמה המוצפנת לקטגוריה של Cloud Storage בפרויקט.
- דוגמה:
gcloud storage cp admin-password.encrypted gs://my-bucket
- דוגמה:
- מקצים את התפקיד Cloud Key Management Service CryptoKey Encrypter/Decrypter לחשבון השירות של האשכול. כברירת מחדל, חשבון השירות של האשכול מוגדר כחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine, והוא נראה כך:
יוצרים את האשכול:
- כשמתקינים את הרכיב Ranger, צריך להתקין גם את הרכיב Solr.
- רכיב ה-Ranger מסתמך על רכיב ה-Solr כדי לאחסן את יומני הביקורת שלו ולשלוח אליהם שאילתות, שכברירת מחדל משתמש ב-HDFS כאחסון. נתוני ה-HDFS האלה נמחקים כשהאשכול נמחק. כדי להגדיר את רכיב Solr לאחסון נתונים ב-Cloud Storage, כולל יומני הביקורת של Ranger, משתמשים במאפיין האשכול
dataproc:solr.gcs.path=gs://<bucket>כשיוצרים את האשכול. הנתונים ב-Cloud Storage נשמרים אחרי שהאשכול נמחק.
- רכיב ה-Ranger מסתמך על רכיב ה-Solr כדי לאחסן את יומני הביקורת שלו ולשלוח אליהם שאילתות, שכברירת מחדל משתמש ב-HDFS כאחסון. נתוני ה-HDFS האלה נמחקים כשהאשכול נמחק. כדי להגדיר את רכיב Solr לאחסון נתונים ב-Cloud Storage, כולל יומני הביקורת של Ranger, משתמשים במאפיין האשכול
- מעבירים את מפתח ה-KMS ואת הסיסמה של מזהי ה-URI של Cloud Storage לפקודה ליצירת אשכול, על ידי הגדרת מאפייני האשכול
dataproc:ranger.kms.key.uriו-dataproc:ranger.admin.password.uri. - אם רוצים, אפשר להעביר את סיסמת המשתמש
adminשל מסד הנתונים של Ranger באמצעות URI של קובץ Cloud Storage מוצפן, על ידי הגדרת המאפיין של האשכולdataproc:ranger.db.admin.password.uri. כברירת מחדל, הרכיב Ranger משתמש במכונה של מסד הנתונים MySql שפועלת בצומת הראשי הראשון של האשכול. כדי לשמור את מסד הנתונים של Ranger אחרי מחיקת האשכול, אתם יכולים להגדיר את האשכול כך שישתמש במכונה חיצונית של Cloud SQL. כדי להשתמש במכונה חיצונית של Cloud SQL:
- לפני שיוצרים את האשכול, צריך להגדיר את המכונה של Cloud SQL כדי להפעיל את הדגל לניהול מסד הנתונים
log_bin_trust_function_creators, על ידי הגדרת הערך שלו ל-on. כך סקריפטים של הגדרת הסכימה של Ranger יכולים לפעול במהלך יצירת האשכול. אחרי שהאשכול נוצר, אפשר לאפס את הדגל הזה ל-off. - מגדירים את מאפיין האשכול של
dataproc:ranger.cloud-sql.instance.connection.nameלמכונה של Cloud SQL. - מגדירים את מאפיין האשכול
dataproc:ranger.cloud-sql.root.password.uriל-URI של Cloud Storage של סיסמת הבסיס (root) המוצפנת באמצעות מפתח KMS של המכונה של Cloud SQL. - מגדירים את המאפיין של האשכול
dataproc:ranger.cloud-sql.use-private-ipכדי לציין אם החיבור למכונה של Cloud SQL הוא באמצעות כתובת IP פרטית.
כשמשתמשים במכונה חיצונית של Cloud SQL, רכיב Ranger משתמש ב-Cloud SQL Auth Proxy כדי להתחבר למכונה של Cloud SQL. כדי להשתמש בשרת ה-proxy:
- מגדירים את היקף ה-API של
sqlservice.adminכשיוצרים את האשכול (ראו אישור בקשות באמצעות OAuth 2.0). אם משתמשים בפקודהgcloud dataproc cluster create, מוסיפים את הפרמטר--scopes=default,sql-admin. - מפעילים את SQL Admin API בפרויקט.
- מוודאים שלחשבון השירות של האשכול יש את התפקיד עריכה ב-Cloud SQL.
- מכיוון ש-Cloud SQL Auth Proxy בצומת הראשי יוצר חיבורים יוצאים למכונה של Cloud SQL דרך יציאה 3307, צריך לוודא שחיבורי TCP יוצאים מהצומת הראשי למכונה של Cloud SQL דרך יציאה 3307 מותרים. למידע נוסף, קראו את המאמר איך פועל Cloud SQL Auth Proxy.
- לפני שיוצרים את האשכול, צריך להגדיר את המכונה של Cloud SQL כדי להפעיל את הדגל לניהול מסד הנתונים
מסוףGoogle Cloud
- במסוף Google Cloud , פותחים את הדף Create cluster.
- לוחצים על הגדרות נוספות כדי להרחיב את הקטע.
- עורכים את Optional components.
- בחלונית שנפתחת, מסמנים את התיבות של 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:
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"
- כשמתקינים את הרכיב Ranger, צריך להתקין גם את הרכיב Solr.
לוחצים על הכרטיסייה ממשקי אינטרנט. בקטע Component gateway, לוחצים על Ranger כדי לפתוח את ממשק האינטרנט של Ranger. מתחברים באמצעות שם המשתמש (לדוגמה, "admin") והסיסמה של האדמין ב-Ranger.
יומני אדמין של Ranger
יומני Ranger admin זמינים ב-Logging כיומני ranger-admin-root.