בדוגמאות הבאות נוצר אשכול של Managed Service for Apache Spark עם Kerberos מופעל, עם הרכיבים Ranger ו-Solr, ונעשה בו שימוש כדי לשלוט בגישה של משתמשים למשאבי Hadoop, YARN ו-HIVE.
הערות:
אפשר לגשת לממשק המשתמש של Ranger דרך Component Gateway.
ב-Ranger עם אשכול Kerberos, Managed Service for Apache Spark ממפה משתמש Kerberos למשתמש המערכת על ידי הסרת התחום והמופע של משתמש Kerberos. לדוגמה, חשבון Kerberos
user1/cluster-m@MY.REALMממופה למערכתuser1, ומוגדרות מדיניות Ranger שמאפשרות או דוחות הרשאות ל-user1.
יוצרים את האשכול.
- אפשר להריץ את הפקודה
gcloudהבאה בחלון טרמינל מקומי או מתוך Cloud Shell של פרויקט.gcloud dataproc clusters create cluster-name \ --region=region \ --optional-components=SOLR,RANGER \ --enable-component-gateway \ --properties="dataproc:ranger.kms.key.uri=projects/project-id/locations/global/keyRings/keyring/cryptoKeys/key,dataproc:ranger.admin.password.uri=gs://bucket/admin-password.encrypted" \ --kerberos-root-principal-password-uri=gs://bucket/kerberos-root-principal-password.encrypted \ --kerberos-kms-key=projects/project-id/locations/global/keyRings/keyring/cryptoKeys/key
- אפשר להריץ את הפקודה
אחרי שהאשכול פועל, עוברים לדף Clusters (אשכולות) של Managed Service for Apache Spark במסוף Google Cloud , ואז בוחרים את שם האשכול כדי לפתוח את הדף Cluster details (פרטי האשכול). לוחצים על הכרטיסייה Web Interfaces (ממשקי אינטרנט) כדי להציג רשימה של קישורים ל-Component Gateway לממשקי האינטרנט של רכיבי ברירת מחדל ורכיבים אופציונליים שהותקנו באשכול. לוחצים על הקישור של Ranger.
נכנסים ל-Ranger על ידי הזנת
adminשם המשתמש והסיסמה של האדמין ב-Ranger.
ממשק המשתמש של Ranger
adminנפתח בדפדפן מקומי.
מדיניות הגישה ל-YARN
בדוגמה הזו נוצרת מדיניות Ranger שמאפשרת ודוחה גישת משתמשים ל-YARN root.default queue.
בוחרים באפשרות
yarn-dataprocבממשק המשתמש של Ranger Admin.
בדף yarn-dataproc Policies (מדיניות yarn-dataproc), לוחצים על Add New Policy (הוספת מדיניות חדשה). בדף Create Policy (יצירת מדיניות), ממלאים את השדות הבאים או בוחרים את האפשרויות הבאות:
-
Policy Name: 'yarn-policy-1' Queue: "root.default"Audit Logging: 'Yes'Allow Conditions:Select User: "userone"Permissions: בוחרים באפשרות 'בחירת הכל' כדי להעניק את כל ההרשאות
Deny Conditions:Select User: "usertwo"-
Permissions: בוחרים באפשרות 'בחירת הכל' כדי לדחות את כל ההרשאות
לוחצים על הוספה כדי לשמור את המדיניות. המדיניות מפורטת בדף yarn-dataproc Policies:
-
מריצים משימת מיפוי וצמצום של Hadoop בחלון סשן (session window) הראשי של ה-SSH בתור userone:
userone@example-cluster-m:~$ hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduced-examples. jar pi 5 10
- ממשק המשתמש של Ranger מראה שלמשתמש
useroneהייתה הרשאה לשלוח את העבודה.
- ממשק המשתמש של Ranger מראה שלמשתמש
מריצים את משימת המיפוי והצמצום של Hadoop מחלון סשן ה-SSH של המכונה הווירטואלית הראשית כ-
usertwo:usertwo@example-cluster-m:~$ hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduced-examples. jar pi 5 10
- בממשק המשתמש של Ranger מוצג שנדחתה הגישה של
usertwoלשליחת העבודה.
- בממשק המשתמש של Ranger מוצג שנדחתה הגישה של
מדיניות גישה ל-HDFS
בדוגמה הזו נוצרת מדיניות של Ranger שמאפשרת ודוחה גישת משתמש לספרייה /tmp ב-HDFS.
בוחרים באפשרות
hadoop-dataprocבממשק המשתמש של Ranger Admin.
בדף hadoop-dataproc Policies (מדיניות של hadoop-dataproc), לוחצים על Add New Policy (הוספת מדיניות חדשה). בדף Create Policy (יצירת מדיניות), ממלאים את השדות הבאים או בוחרים את האפשרויות הבאות:
Policy Name: "hadoop-policy-1"Resource Path: "/tmp"Audit Logging: 'Yes'Allow Conditions:Select User: "userone"Permissions: בוחרים באפשרות 'בחירת הכל' כדי להעניק את כל ההרשאות
Deny Conditions:Select User: "usertwo"-
Permissions: בוחרים באפשרות 'בחירת הכל' כדי לדחות את כל ההרשאות
לוחצים על הוספה כדי לשמור את המדיניות. המדיניות מפורטת בדף hadoop-dataproc Policies:
ניגשים לספריית HDFS
/tmpבתור userone:userone@example-cluster-m:~$ hadoop fs -ls /tmp
- בממשק המשתמש של Ranger מוצג שניתנה ל-
useroneגישה לספרייה HDFS /tmp.
- בממשק המשתמש של Ranger מוצג שניתנה ל-
ניגשים לספרייה
/tmpב-HDFS בתורusertwo:usertwo@example-cluster-m:~$ hadoop fs -ls /tmp
- ממשק המשתמש של Ranger מראה שהגישה של
usertwoלספרייה HDFS /tmp נדחתה.
- ממשק המשתמש של Ranger מראה שהגישה של
מדיניות הגישה ל-Hive
בדוגמה הזו נוצרת מדיניות של Ranger כדי לאפשר ולדחות גישת משתמש לטבלת Hive.
יוצרים טבלת
employeeקטנה באמצעות Hive CLI במופע הראשי.hive> CREATE TABLE IF NOT EXISTS employee (eid int, name String); INSERT INTO employee VALUES (1 , 'bob') , (2 , 'alice'), (3 , 'john');
בוחרים באפשרות
hive-dataprocבממשק המשתמש של Ranger Admin.
בדף hive-dataproc Policies (מדיניות hive-dataproc), לוחצים על Add New Policy (הוספת מדיניות חדשה). בדף Create Policy (יצירת מדיניות), ממלאים את השדות הבאים או בוחרים את האפשרויות הבאות:
Policy Name: "hive-policy-1"database: 'ברירת מחדל'table: employeeHive Column: "*"Audit Logging: 'Yes'Allow Conditions:Select User: "userone"Permissions: בוחרים באפשרות 'בחירת הכל' כדי להעניק את כל ההרשאות
Deny Conditions:Select User: "usertwo"-
Permissions: בוחרים באפשרות 'בחירת הכל' כדי לדחות את כל ההרשאות
לוחצים על הוספה כדי לשמור את המדיניות. המדיניות מפורטת בדף hive-dataproc Policies:
מריצים שאילתה מסשן ה-SSH הראשי של המכונה הווירטואלית על טבלת העובדים של Hive בתור userone:
userone@example-cluster-m:~$ beeline -u "jdbc:hive2://$(hostname -f):10000/default;principal=hive/$(hostname -f)@REALM" -e "select * from employee;"
- השאילתה userone מצליחה:
Connected to: Apache Hive (version 2.3.6) Driver: Hive JDBC (version 2.3.6) Transaction isolation: TRANSACTION_REPEATABLE_READ +---------------+----------------+ | employee.eid | employee.name | +---------------+----------------+ | 1 | bob | | 2 | alice | | 3 | john | +---------------+----------------+ 3 rows selected (2.033 seconds)
- השאילתה userone מצליחה:
מריצים שאילתה מתוך סשן ה-SSH הראשי של המכונה הווירטואלית על טבלת העובדים של Hive בתור usertwo:
usertwo@example-cluster-m:~$ beeline -u "jdbc:hive2://$(hostname -f):10000/default;principal=hive/$(hostname -f)@REALM" -e "select * from employee;"
- הגישה של usertwo לטבלה נדחית:
Error: Could not open client transport with JDBC Uri: ... Permission denied: user=usertwo, access=EXECUTE, inode="/tmp/hive"
- הגישה של usertwo לטבלה נדחית:
גישה פרטנית ל-Hive
Ranger תומך בהסתרת נתונים ובמסננים ברמת השורה ב-Hive. בדוגמה הזו
ממשיכים את הדוגמה הקודמת hive-policy-1 ומוסיפים מדיניות של הסתרת נתונים ומסננים.
בוחרים באפשרות
hive-dataprocבממשק המשתמש של Ranger Admin, בוחרים בכרטיסייה Masking (מיסוך) ולוחצים על Add New Policy (הוספת מדיניות חדשה).
בדף Create Policy, ממלאים את השדות הבאים כדי ליצור מדיניות להסתרת (ביטול) העמודה של שם העובד:
Policy Name: hive-masking policydatabase: 'ברירת מחדל'table: employeeHive Column: "name"Audit Logging: 'Yes'Mask Conditions:Select User: "userone"Access Types: הרשאות 'בחירה' להוספה או לעריכהSelect Masking Option: "nullify"
לוחצים על הוספה כדי לשמור את המדיניות.
בוחרים באפשרות
hive-dataprocבממשק המשתמש של Ranger Admin, בוחרים בכרטיסייה Row Level Filter ולוחצים על Add New Policy.
בדף Create Policy, מזינים או בוחרים את השדות הבאים כדי ליצור מדיניות לסינון (החזרה) של שורות שבהן
eidלא שווה ל-1:-
Policy Name: hive-filter policy Hive Database: 'ברירת מחדל'Hive Table: employeeAudit Logging: 'Yes'Mask Conditions:Select User: "userone"Access Types: הרשאות 'בחירה' להוספה או לעריכה-
Row Level Filter: ביטוי הסינון eid != 1
לוחצים על הוספה כדי לשמור את המדיניות.
-
חוזרים על השאילתה הקודמת מסשן ה-SSH הראשי של המכונה הווירטואלית מול טבלת העובדים של Hive בתור userone:
userone@example-cluster-m:~$ beeline -u "jdbc:hive2://$(hostname -f):10000/default;principal=hive/$(hostname -f)@REALM" -e "select * from employee;"
- השאילתה מוחזרת עם עמודת השם שמוסתרת ועם bob
(eid=1) שמסונן מהתוצאות.:
Transaction isolation: TRANSACTION_REPEATABLE_READ +---------------+----------------+ | employee.eid | employee.name | +---------------+----------------+ | 2 | NULL | | 3 | NULL | +---------------+----------------+ 2 rows selected (0.47 seconds)
- השאילתה מוחזרת עם עמודת השם שמוסתרת ועם bob
(eid=1) שמסונן מהתוצאות.: