בדף הזה מוסבר איך מגדירים בקרת גישה פרטנית למסדי נתונים של Spanner עם ניב GoogleSQL ומסדי נתונים עם ניב PostgreSQL.
מידע על בקרת גישה פרטנית מופיע במאמר מידע על בקרת גישה פרטנית.
כדי להגדיר בקרת גישה פרטנית:
משתמשים עם בקרת גישה ברמת גרנולריות גבוהה צריכים לציין תפקיד במסד הנתונים כדי לבצע שאילתות, DML או פעולות בשורות במסד הנתונים.
לפני שמתחילים
צריך לוודא שלכל חשבון ראשי שרוצים להגדיר לו בקרת גישה ברמת גרנולריות גבוהה מוקצה תפקיד Cloud Spanner Viewer ניהול זהויות והרשאות גישה (IAM) (roles/spanner.viewer). מומלץ להקצות את התפקיד הזה ברמת הפרויקט למשתמשים שצריכים לבצע אינטראקציה עם משאבי Spanner במסוף Google Cloud .
הוראות מפורטות מופיעות במאמר בנושא הענקת הרשאות לישויות.
יצירת תפקידים במסד הנתונים והקצאת הרשאות
תפקיד במסד נתונים הוא אוסף של הרשאות גישה פרטניות. אפשר ליצור עד 100 תפקידים במסד נתונים לכל מסד נתונים.
מחליטים על תפקידים והיררכיות של תפקידים במסד הנתונים ומקודדים אותם ב-DDL. כמו בשינויים אחרים בסכימה ב-Spanner, מומלץ מאוד לבצע שינויים בסכימה בחבילה ולא בנפרד. מידע נוסף זמין במאמר בנושא הגבלת התדירות של עדכוני סכימה.
המסוף
כדי ליצור תפקיד במסד נתונים ולהעניק לו הרשאות גישה מפורטות, פועלים לפי השלבים הבאים:
נכנסים לדף Instances במסוף Google Cloud .
בוחרים את המופע שמכיל את מסד הנתונים שרוצים להוסיף לו את התפקיד.
בוחרים את מסד הנתונים.
בדף סקירה כללית, לוחצים על Spanner Studio.
בדף Spanner Studio, לכל תפקיד במסד הנתונים שרוצים ליצור ולהעניק לו הרשאות, פועלים לפי השלבים הבאים:
כדי ליצור את התפקיד, מזינים את ההצהרה הבאה:
CREATE ROLE ROLE_NAME;
אל תלחצו על שליחה עדיין.
כדי להעניק הרשאות לתפקיד, מזינים הצהרת
GRANTבשורה הבאה אחרי הצהרתCREATE ROLE.פרטים על התחביר של הצהרת
GRANTזמינים במאמר בנושא שפת הגדרת נתונים ב-GoogleSQL. מידע על הרשאות זמין במאמר הרשאות של בקרת גישה ברמת פירוט גבוהה.לדוגמה, כדי להעניק את ההרשאות
SELECT,INSERTו-UPDATEבטבלאותemployeesו-contractorsלתפקיד במסד הנתוניםhr_manager, מזינים את ההצהרה הבאה:GoogleSQL
GRANT SELECT, INSERT, UPDATE ON TABLE employees, contractors TO ROLE hr_manager;PostgreSQL
GRANT SELECT, INSERT, UPDATE ON TABLE employees, contractors TO hr_manager;אפשר להשתמש בתבנית DDL עבור הצהרת
GRANT. בחלונית Explorer, עוברים לתפקיד שרוצים להעניק לו הרשאות. לוחצים על הצגת פעולות ובוחרים את סוג ההרשאה שרוצים להעניק לתפקיד הזה. התבניתGRANTמאוכלסת בכרטיסייה חדשה של כלי העריכה.
לוחצים על שליחה.
אם יש שגיאות ב-DDL, במסוף מוחזרת שגיאה. Google Cloud
gcloud
כדי ליצור תפקיד במסד נתונים ולהעניק לו הרשאות גישה מפורטות, משתמשים בפקודה gcloud spanner databases ddl update עם ההצהרות CREATE ROLE ו-GRANT.
לפרטים על התחביר של ההצהרות CREATE ROLE ו-GRANT, אפשר לעיין במאמר בנושא שפת הגדרת הנתונים ב-GoogleSQL.
לדוגמה, אפשר להשתמש בפקודה הבאה כדי ליצור תפקיד במסד נתונים ולהעניק לו הרשאות בטבלה אחת או יותר.
GoogleSQL
gcloud spanner databases ddl update DATABASE_NAME --instance=INSTANCE_NAME \ --ddl='CREATE ROLE ROLE_NAME; GRANT PRIVILEGES ON TABLE TABLES TO ROLE ROLE_NAME;'
PostgreSQL
gcloud spanner databases ddl update DATABASE_NAME --instance=INSTANCE_NAME \ --ddl='CREATE ROLE ROLE_NAME; GRANT PRIVILEGES ON TABLE TABLES TO ROLE_NAME;'
מחליפים את מה שכתוב בשדות הבאים:
PRIVILEGESהיא רשימה מופרדת בפסיקים של הרשאות בקרת גישה פרטנית. מידע על הרשאות זמין במאמר הרשאות של בקרת גישה ברמת פירוט גבוהה.
TABLESהיא רשימה של טבלאות שמופרדות בפסיקים.
לדוגמה, כדי להעניק את ההרשאות SELECT, INSERT ו-UPDATE בטבלאות employees ו-contractors לתפקיד hr_analyst במסד הנתונים hrdb1 במופע hr, מזינים את ההצהרה הבאה:
GoogleSQL
gcloud spanner databases ddl update hrdb1 --instance=hr \ --ddl='CREATE ROLE hr_analyst; GRANT SELECT, INSERT, UPDATE ON TABLE employees, contractors TO ROLE hr_analyst;'
PostgreSQL
gcloud spanner databases ddl update hrdb1 --instance=hr \ --ddl='CREATE ROLE hr_analyst; GRANT SELECT, INSERT, UPDATE ON TABLE employees, contractors TO hr_analyst;'
ספריות לקוח
שתי דוגמאות הקוד האלה יוצרות תפקיד במסד נתונים ומבטלות אותו.
C++
C#
Go
Java
Node.js
PHP
Python
Ruby
יצירת היררכיה של תפקידים עם העברה אוטומטית
אפשר ליצור היררכיה של תפקידים במסד נתונים על ידי הקצאת תפקיד אחד במסד נתונים לתפקיד אחר. תפקידים צאצאים (שנקראים תפקידים של חברים) יורשים הרשאות מהתפקיד ההורה.
כדי להעניק תפקיד במסד נתונים לתפקיד אחר במסד הנתונים, משתמשים בהצהרה הבאה:
GoogleSQL
GRANT ROLE role1 TO ROLE role2;
PostgreSQL
GRANT role1 TO role2;
מידע נוסף זמין במאמר היררכיות וירושה של תפקידים במסד נתונים.
הקצאת תפקידים במסד נתונים לישויות מורשות
כדי לגשת למשאבי Spanner, צריך להקצות לחשבון ראשי את תפקיד מסד הנתונים הנדרש באמצעות אחת מהאפשרויות הבאות:
המסוף
בדף Overview של מסד הנתונים, לוחצים על SHOW INFO PANEL אם חלונית המידע עדיין לא פתוחה.
לוחצים על הוספת גורם ראשי.
בקטע Add principals, בשדה New principals, מזינים חשבון משתמש אחד או יותר.
בקטע Assign roles, בתפריט Select a role, בוחרים באפשרות Cloud Spanner > Cloud Spanner Fine-grained Access User.
צריך להקצות את התפקיד הזה לכל ישות מורשית רק פעם אחת. היא הופכת את הגורם המורשה למשתמש עם בקרת גישה פרטנית.
לוחצים על הוספת תפקיד נוסף.
ברשימת התפקידים Select a role בוחרים באפשרות Cloud Spanner > Cloud Spanner Database Role User.
כדי ליצור את תנאי ה-IAM שמציין את התפקידים להענקה:
לצד התפקיד Cloud Spanner Database Role User, לוחצים על ADD IAM CONDITION (הוספת תנאי IAM).
בחלונית Add condition מזינים שם ותיאור אופציונלי של התנאי.
אם מעניקים תפקיד יחיד במסד נתונים, בדרך כלל כוללים את שם התפקיד בכותרת התנאי. אם מעניקים כמה תפקידים, אפשר לציין משהו לגבי קבוצת התפקידים.
לוחצים על כלי התנאים.
בשדה Expression, מזינים את הקוד הבא:
resource.type == "spanner.googleapis.com/DatabaseRole" && resource.name.endsWith("/ROLE")
מחליפים את
ROLEבשם התפקיד.כדי לתת יותר מתפקיד אחד לחשבון הראשי, מוסיפים עוד תנאים עם האופרטור or (
||), כמו בדוגמה הבאה:resource.type == "spanner.googleapis.com/DatabaseRole" && (resource.name.endsWith("/ROLE1") || resource.name.endsWith("/ROLE2"))
הקוד הזה מעניק שני תפקידים. מחליפים את
ROLE1ואתROLE2בשמות התפקידים. כדי להקצות יותר משני תפקידים, מוסיפים עוד תנאי או.אפשר להשתמש בכל ביטוי תנאי שנתמך על ידי IAM. מידע נוסף זמין במאמר סקירה כללית על תנאים ב-IAM.
לוחצים על Save.
מוודאים שהתנאי מופיע בעמודה IAM Condition לצד השדה Role.
לוחצים על Save.
בחזרה לחלונית המידע, בקטע תפקיד/גורם ראשי, שימו לב שהתפקיד משתמש בתפקיד מסד נתונים ב-Cloud Spanner מופיע לכל תנאי מוגדר.
המספר בסוגריים לצד התנאי מציין את מספר החשבונות הראשיים שקיבלו את תפקיד מסד הנתונים באמצעות התנאי הזה. אפשר ללחוץ על החץ להרחבה כדי לראות את רשימת חשבונות המשתמשים.
כדי לתקן שגיאות בשמות של תפקידים במסד נתונים או בתנאים, או כדי להוסיף תפקידים נוספים במסד נתונים עבור חשבון משתמש, פועלים לפי השלבים הבאים:
מרחיבים את הערך Cloud Spanner Database Role User שבו מפורט התנאי הרצוי.
לוחצים על סמל העריכה (עיפרון) לצד הגורם המרכזי.
בחלונית גישת עריכה ל- database_name, מבצעים אחת מהפעולות הבאות:
לוחצים על הוספת תפקיד נוסף.
כדי לערוך את התנאי, לוחצים על סמל העריכה (עיפרון) לצד שם התנאי. לאחר מכן, בדף Edit condition, לוחצים על Condition editor, מבצעים את התיקונים ולוחצים על Save פעמיים.
gcloud
מפעילים בקרת גישה פרטנית עבור הגורם הראשי באמצעות הפקודה
gcloud spanner databases add-iam-policy-bindingבאופן הבא:gcloud spanner databases add-iam-policy-binding DATABASE_NAME \ --instance=INSTANCE_NAME \ --role=roles/spanner.fineGrainedAccessUser \ --member=MEMBER_NAME \ --condition=None
MEMBER_NAMEהוא המזהה של החשבון הראשי. צריך להשתמש באחד מסוגי התחביר הבאים:user|group|serviceAccount:emailאוdomain:domain.הפקודה הזו הופכת את הגורם העיקרי למשתמש עם בקרת גישה ברמת דיוק גבוהה. צריך לשלוח את הפקודה הזו רק פעם אחת לכל גורם מרכזי.
אם הפקודה מסתיימת בלי שגיאות, היא מחזירה את כל המדיניות של מסד הנתונים.
כדי להעניק הרשאה להשתמש בתפקיד אחד או יותר במסד נתונים, משתמשים בפקודה
gcloud spanner databases add-iam-policy-bindingבאופן הבא:gcloud spanner databases add-iam-policy-binding DATABASE_NAME \ --instance=INSTANCE_NAME \ --role=roles/spanner.databaseRoleUser \ --member=MEMBER_NAME \ --condition=CONDITION
MEMBER_NAMEהוא המזהה של החשבון הראשי. צריך להשתמש באחד מסוגי התחביר הבאים:user|group|serviceAccount:emailאוdomain:domain.
CONDITIONהוא ביטוי של תנאי IAM שמציין את התפקידים שיוקצו לישות המורשית.הפורמט של
CONDITIONהוא:--condition='expression=(resource.type == "spanner.googleapis.com/DatabaseRole" && resource.name.endsWith("/ROLE1")),title=TITLE,description=DESCRIPTION'
לחלופין, כדי לתת לחשבון הראשי גישה ליותר מתפקיד אחד, מוסיפים עוד תנאים עם האופרטור or (
||), כמו בדוגמה הבאה:--condition='expression=(resource.type == "spanner.googleapis.com/DatabaseRole" && (resource.name.endsWith("/ROLE1") || resource.name.endsWith("/ROLE2"))),title=TITLE,description=DESCRIPTION'
הקוד הזה מעניק שני תפקידים. מחליפים את
ROLE1ואתROLE2בשמות התפקידים. כדי להעניק יותר משני תפקידים, מוסיפים עוד תנאי or עם האופרטור||.אפשר להשתמש בכל ביטוי תנאי שנתמך על ידי IAM. מידע נוסף זמין במאמר סקירה כללית על תנאים ב-IAM.
אם הפקודה מסתיימת בלי שגיאות, היא מחזירה את כל המדיניות של מסד הנתונים.
בדוגמה הבאה מוקצים תפקידי מסד הנתונים
hr_repו-hr_managerלחשבון המשתמשjsmith@example.com.gcloud spanner databases add-iam-policy-binding myDatabase \ --instance=myInstance \ --role=roles/spanner.databaseRoleUser \ --member=user:jsmith@example.com \ --condition='expression=(resource.type == "spanner.googleapis.com/DatabaseRole" && (resource.name.endsWith("/hr_rep") || resource.name.endsWith("/hr_manager"))),title=HR roles,description=Grant permissions on HR roles'
ספריות לקוח
C++
C#
Go
Java
Node.js
PHP
Python
Ruby
הודעה למשתמשים ולמפתחים להתחיל להשתמש בתפקידים במסד הנתונים
אחרי שמסיימים את ההגדרה הראשונית של בקרת גישה ברמת דיוק גבוהה, צריך להודיע למשתמשים ולמפתחי האפליקציות שהם צריכים להתחיל להשתמש בתפקידים במסד הנתונים.
משתמשים עם בקרת גישה ברמת דיוק גבוהה צריכים להתחיל לציין תפקיד במסד נתונים כשהם ניגשים למסדי נתונים של Spanner דרך מסוף Google Cloud או דרך Google Cloud CLI.
אפליקציות שמשתמשות בבקרת גישה ברמת גרנולריות גבוהה צריכות לציין תפקיד במסד הנתונים כשניגשים למסד הנתונים.
מידע נוסף זמין במאמר בנושא גישה למסד נתונים עם בקרת גישה מפורטת.
העברת ישות מורשית לבקרת גישה פרטנית
כדי להעביר ישות מורשית מבקרת גישה ברמת מסד הנתונים לבקרת גישה ברמת הגרנולריות, פועלים לפי השלבים הבאים:
מפעילים בקרת גישה פרטנית לחשבון המשתמש ומעניקים גישה לכל תפקידי מסד הנתונים הנדרשים, כמו שמתואר במאמר הענקת תפקידי מסד נתונים לחשבונות משתמש.
מעדכנים את כל האפליקציות שפועלות כמשתמש הראשי הזה. מציינים את תפקידי מסד הנתונים המתאימים בקריאות לשיטות של ספריית הלקוח.
מבטלים את כל התפקידים ב-IAM ברמת מסד הנתונים מהחשבון הראשי. כך, הגישה של המנהל/ת כפופה לשיטה אחת בלבד.
יוצא מן הכלל: כדי ליצור אינטראקציה עם משאבי Spanner בGoogle Cloud מסוף, כל המשתמשים צריכים לקבל את תפקיד IAM
roles/spanner.viewer.כדי לבטל תפקידים ברמת מסד הנתונים ב-IAM, פועלים לפי ההוראות במאמר בנושא הסרת הרשאות ברמת מסד הנתונים.
הצגת רשימת תפקידים במסד נתונים
אפשר לראות את רשימת התפקידים במסד הנתונים שמשויכים למסד נתונים.
המסוף
כדי להציג רשימה של תפקידים במסד נתונים, מזינים את השאילתה הבאה בדף Spanner Studio של מסד הנתונים:
GoogleSQL
SELECT * FROM INFORMATION_SCHEMA.ROLES;
PostgreSQL
SELECT * FROM information_schema.enabled_roles;
התשובה כוללת את התפקיד הנוכחי ואת התפקידים שההרשאות שלהם יכולות לשמש את התפקיד הנוכחי באמצעות ירושה. כדי לאחזר את כל התפקידים, משתמשים בפקודה של ה-CLI של gcloud.
gcloud
כדי לקבל רשימה לא מסוננת של תפקידים במסד הנתונים, מזינים את הפקודה הבאה.
נדרשת ההרשאה spanner.databaseRoles.list.
gcloud spanner databases roles list --database=DATABASE_NAME --instance=INSTANCE_NAME
ספריות לקוח
C++
C#
Go
Java
Node.js
PHP
Python
Ruby
הצגת ההרשאות שניתנו לתפקיד במסד נתונים
כדי לראות את ההרשאות שניתנו לתפקיד, מריצים את השאילתות הבאות:
GoogleSQL
SELECT * FROM INFORMATION_SCHEMA.TABLE_PRIVILEGES WHERE grantee = 'ROLE_NAME'; SELECT * FROM INFORMATION_SCHEMA.COLUMN_PRIVILEGES WHERE grantee = 'ROLE_NAME'; SELECT * FROM INFORMATION_SCHEMA.CHANGE_STREAM_PRIVILEGES WHERE grantee = 'ROLE_NAME';
INFORMATION_SCHEMA.TABLE_PRIVILEGES מחזירה הרשאות גם בטבלאות וגם בתצוגות. הרשאות SELECT, INSERT ו-UPDATE ב-TABLE_PRIVILEGES
מוצגות גם ב-COLUMN_PRIVILEGES.
PostgreSQL
SELECT * FROM information_schema.table_privileges WHERE grantee = 'ROLE_NAME'; SELECT * FROM information_schema.column_privileges WHERE grantee = 'ROLE_NAME'; SELECT * FROM information_schema.change_stream_privileges WHERE grantee = 'ROLE_NAME';
information_schema.table_privileges מחזירה הרשאות גם בטבלאות וגם בתצוגות.
הרשאות SELECT, INSERT וUPDATE ב-table_privileges מוצגות גם ב-column_privileges.
הצגת משתמשים עם בקרת גישה פרטנית
כדי להציג רשימה של גורמים שהם משתמשים בבקרת גישה ברמת דיוק גבוהה, מריצים את הפקודה הבאה. כדי להריץ את הפקודה, צריך להפעיל את Cloud Asset API בפרויקט וצריכה להיות לכם הרשאת IAM cloudasset.assets.searchAllIamPolicies.
gcloud asset search-all-iam-policies \ --scope=projects/PROJECT_NAME \ --query='roles=roles/spanner.fineGrainedAccessUser AND resource=//spanner.googleapis.com/projects/PROJECT_NAME/instances/INSTANCE_NAME/databases/DATABASE_NAME' \ --flatten=policy.bindings[].members[] \ --format='table(policy.bindings.members)'
הפלט אמור להיראות כך:
MEMBERS user:222larabrown@gmail.com user:baklavainthebalkans@gmail.com serviceAccount:cs-fgac-sa-1@cloud-spanner-demo.google.com.iam.gserviceaccount.com serviceAccount:cs-fgac-sa-2@cloud-spanner-demo.google.com.iam.gserviceaccount.com
מידע נוסף מופיע במאמר הפעלת API בפרויקט Google Cloud .
הצגת ישויות עם גישה למסד הנתונים
כדי לראות רשימה של חשבונות משתמשים שקיבלו גישה למסד נתונים מסוים, מריצים את הפקודות הבאות. כדי להריץ את הפקודות האלה, צריך להפעיל את Cloud Asset API בפרויקט, וצריכה להיות לכם הרשאת IAM cloudasset.assets.searchAllIamPolicies.
gcloud asset search-all-iam-policies \ --scope=projects/PROJECT_NAME \ --query='roles=roles/spanner.databaseRoleUser AND policy:"resource.name" AND policy:/ROLE_NAME AND resource=//spanner.googleapis.com/projects/PROJECT_NAME/instances/INSTANCE_NAME/databases/DATABASE_NAME' \ --flatten=policy.bindings[].members[] \ --format='table(policy.bindings.members)'
הפלט אמור להיראות כך:
MEMBERS 222larabrown@gmail.com
צפייה בתנאי ה-IAM של גורם ראשי
כדי לראות רשימה של תנאי IAM שצוינו כשניתן לאנטיתי תפקיד משתמש בתפקיד מסד נתונים ב-Cloud Spanner, מריצים את הפקודה הבאה:
gcloud asset search-all-iam-policies \ --scope=projects/PROJECT_NAME \ --query='roles=roles/spanner.databaseRoleUser AND policy:resource.name AND policy:"PRINCIPAL_IDENTIFIER" AND resource=//spanner.googleapis.com/projects/PROJECT_NAME/instances/INSTANCE_NAME/databases/DATABASE_NAME' \ --flatten=policy.bindings[] \ --format='table(policy.bindings.condition.expression)'
כאשר PRINCIPAL_IDENTIFIER הוא:
{ user:user-account-name | serviceAccount:service-account-name }
PRINCIPAL_IDENTIFIER דוגמאות:
user:222larabrown@gmail.com serviceAccount:cs-fgac-sa-1@cloud-spanner-demo.google.com.iam.gserviceaccount.com
בדוגמה הבאה של פלט מוצגים שני ביטויי תנאים.
EXPRESSION
resource.type == "spanner.googleapis.com/DatabaseRole" &&
resource.name.endsWith("/hr_analyst")
resource.type == "spanner.googleapis.com/DatabaseRole" &&
resource.name.endsWith("/hr_manager")
בדיקת תנאים חסרים של תפקידי מסד נתונים במדיניות IAM
אחרי שנותנים לחשבונות משתמשים גישה לתפקידים במסד הנתונים, מומלץ לוודא שלכל ישות ב-IAM יש תנאי שצוין.
כדי לבצע את הבדיקה הזו, מריצים את הפקודה הבאה:
gcloud asset search-all-iam-policies \ --scope=projects/PROJECT_NAME \ --query='roles:roles/spanner.databaseRoleUser AND resource=//spanner.googleapis.com/projects/PROJECT_NAME/instances/INSTANCE_NAME/databases/DATABASE_NAME' --flatten=policy.bindings[].members[]
הפלט אמור להיראות כך:
ROLE MEMBERS EXPRESSION roles/spanner.databaseRoleUser serviceAccount:cs-fgac-sa-1@... roles/spanner.databaseRoleUser serviceAccount:cs-fgac-sa-2@... resource.type == "spanner…"
שימו לב שבתוצאה הראשונה חסר תנאי, ולכן לחשבונות המשתמש בקישור הזה יש גישה לכל התפקידים במסד הנתונים.
הסרת תפקיד במסד נתונים
ביטול של תפקיד במסד נתונים מבטל אוטומטית את החברות של תפקידים אחרים בתפקיד, ואת החברות של התפקיד בתפקידים אחרים.
כדי לבטל הקצאה של תפקיד במסד נתונים, קודם צריך לבצע את הפעולות הבאות:
- ביטול כל ההרשאות של בקרת גישה פרטנית מהתפקיד.
- מסירים את כל הקישורים למדיניות IAM שמפנים לתפקיד הזה, כדי שתפקיד מסד נתונים שייווצר בהמשך עם אותו שם לא יירש את הקישורים האלה.
המסוף
כדי לבטל הקצאה של תפקיד במסד נתונים, פועלים לפי השלבים הבאים:
בדף Overview של מסד הנתונים, לוחצים על Spanner Studio.
כדי לבטל הרשאות מהתפקיד, מזינים הצהרת
REVOKE.GoogleSQL
פרטים על התחביר של הצהרת
REVOKEזמינים במאמר בנושא שפת הגדרת נתונים ב-GoogleSQL. מידע על הרשאות זמין במאמר הרשאות של בקרת גישה ברמת פירוט גבוהה.לדוגמה, כדי לבטל את ההרשאות של
SELECT, שלINSERTושלUPDATEבטבלאותemployeesו-contractorsמהתפקידhr_managerבמסד הנתונים, מזינים את ההצהרה הבאה:REVOKE SELECT, INSERT, UPDATE ON TABLE employees, contractors FROM ROLE hr_manager;PostgreSQL
לפרטים על התחביר של ההצהרה
REVOKE, אפשר לעיין בשפת הגדרת הנתונים של PostgreSQL. מידע על הרשאות זמין במאמר הרשאות של בקרת גישה ברמת פירוט גבוהה.לדוגמה, כדי לבטל את ההרשאות
SELECT,INSERTו-UPDATEבטבלאותemployeesו-contractorsמהתפקיד במסד הנתוניםhr_manager, מזינים את ההצהרה הבאה:REVOKE SELECT, INSERT, UPDATE ON TABLE employees, contractors FROM hr_manager;אפשר להשתמש בתבנית DDL עבור הצהרת
REVOKE. בחלונית Explorer, עוברים לתפקיד שרוצים לבטל את ההרשאה שלו. לוחצים על הצגת פעולות ובוחרים את סוג ההרשאה שרוצים לבטל את הגישה אליו עבור התפקיד הזה. התבניתREVOKEמאוכלסת בכרטיסייה חדשה של כלי העריכה.מוחקים את תנאי ה-IAM שמשויכים לתפקיד.
ברשימת התפקידים בחלונית המידע, מאתרים את התפקיד Cloud Spanner Database Role User עם שם התנאי הרלוונטי שמופיע לידו, ואז מרחיבים את התפקיד כדי לראות את חשבונות המשתמשים שיש להם גישה לתפקיד.
לוחצים על סמל עריכת הגורם המורשה (עיפרון) של אחד מהגורמים המורשים.
בדף Edit access (עריכת הגישה), לוחצים על סמל מחיקת התפקיד (פח האשפה) לצד התפקיד Cloud Spanner Database Role User.
לוחצים על Save.
חוזרים על שלושת השלבים הקודמים עבור שאר הגורמים המורשים שמופיעים בקטע של התנאי.
כדי לבטל את התפקיד, עוברים לדף Spanner Studio ומזינים את ההצהרה הבאה:
DROP ROLE ROLE_NAME;
לוחצים על שליחה.
gcloud
כדי לבטל את כל ההרשאות של תפקיד מסוים ואז להסיר את התפקיד, משתמשים בפקודה
gcloud spanner databases ddl updateבאופן הבא:GoogleSQL
gcloud spanner databases ddl update DATABASE_NAME \ --instance=INSTANCE_NAME \ --ddl='REVOKE PERMISSIONS ON TABLE TABLE_NAME FROM ROLE ROLE_NAME; DROP ROLE ROLE_NAME;'
PostgreSQL
gcloud spanner databases ddl update DATABASE_NAME \ --instance=INSTANCE_NAME \ --ddl='REVOKE PERMISSIONS ON TABLE TABLE_NAME FROM ROLE_NAME; DROP ROLE ROLE_NAME;'
הערכים התקפים של
PERMISSIONSהםSELECT,INSERT,UPDATEו-DELETE.כדי למחוק תנאים קשורים של IAM, משתמשים בפקודה
gcloud spanner databases remove-iam-policy-bindingבאופן הבא:gcloud spanner databases remove-iam-policy-binding DATABASE_NAME \ --instance=INSTANCE_NAME \ --role=ROLE_NAME \ --member=MEMBER_NAME \ --condition=CONDITION
MEMBER_NAMEהוא המזהה של החשבון הראשי. הערך צריך להיות בפורמטuser|group|serviceAccount:emailאוdomain:domain.
CONDITIONהוא ביטוי של תנאי IAM שמציין את התפקידים שיוקצו לישות המורשית.הפורמט של
CONDITIONהוא:--condition='expression=(resource.type == "spanner.googleapis.com/DatabaseRole" && (resource.name.endsWith("/ROLE1") || resource.name.endsWith("/ROLE2"))),title=TITLE,description=DESCRIPTION'
כל התנאים שצוינו חייבים להיות זהים לתנאים שצוינו בפקודה שבה ניתנה ההרשאה, כולל השם והתיאור.
ספריות לקוח
שתי דוגמאות הקוד האלה יוצרות תפקיד במסד נתונים ומבטלות אותו.
C++
C#
Go
Java
Node.js
PHP
Python
Ruby
מידע נוסף
- מידע על בקרת גישה פרטנית
- בקרת גישה פרטנית לסנכרון שינויים בזרמי נתונים
- הרשאות בקרת גישה מפורטות
- חומרי עזר בנושא GoogleSQL DDL
- ביצוע עדכונים בסכימה