בדף הזה מוסבר איך ליצור סכימות עם שמות, להשתמש בהן ולבטל אותן, ואיך להחיל בקרת גישה ברמת פירוט גבוהה על אובייקטים בסכימות עם שמות. מידע כללי על סכימות עם שמות זמין במאמר סכימות עם שמות.
לפני שמתחילים
כדי לבצע את הפעולות שמתוארות בדף הזה, אתם צריכים:
- התפקיד Database Admin roles/spanner.databaseAdmin בחשבון המשתמש.
- איך פועלת בקרת גישה פרטנית
יצירת סכימה עם שם
הפקודה CREATE SCHEMA (GoogleSQL ו-PostgreSQL)
משמשת ליצירת סכימה עם שם.
במסוף Google Cloud , פותחים את הדף Spanner.
בוחרים מופע מהרשימה.
בוחרים מסד נתונים.
בתפריט הניווט, לוחצים על Spanner Studio.
פותחים כרטיסייה חדשה בלחיצה על New SQL editor tab או על New tab.
בכרטיסייה עורך, מזינים את ה-DDL.
GoogleSQL
מריצים את ההצהרה
CREATE SCHEMAכדי ליצור את הסכימה עם השם. לדוגמה:CREATE SCHEMA sch1;מוסיפים אובייקטים של מסד נתונים בסכימה שצוין השם שלה, לדוגמה:
CREATE SEQUENCE sch1.sequence OPTIONS ( sequence_kind = 'bit_reversed_positive' ); CREATE TABLE Singers ( SingerId INT64 NOT NULL, FirstName STRING(1024), LastName STRING(1024), SingerInfo BYTES(MAX), ) PRIMARY KEY(SingerId); CREATE INDEX indexOnSingers ON Singers(FirstName); CREATE TABLE Albums ( SingerId INT64 NOT NULL, AlbumId INT64 NOT NULL, AlbumTitle STRING(MAX), ) PRIMARY KEY(SingerId, AlbumId), INTERLEAVE IN PARENT Singers ON DELETE CASCADE; CREATE TABLE Songs ( SingerId INT64 NOT NULL, AlbumId INT64 NOT NULL, TrackId INT64 NOT NULL, SongName STRING(MAX), ) PRIMARY KEY(SingerId, AlbumId, TrackId), INTERLEAVE IN PARENT Albums ON DELETE CASCADE; CREATE TABLE sch1.Singers ( SingerId INT64 NOT NULL, FirstName STRING(1024), LastName STRING(1024), SingerInfo BYTES(MAX), ) PRIMARY KEY(SingerId); CREATE INDEX sch1.indexOnSingers ON sch1.Singers(FirstName); CREATE TABLE sch1.Albums ( SingerId INT64 NOT NULL, AlbumId INT64 NOT NULL, AlbumTitle STRING(MAX), ) PRIMARY KEY(SingerId, AlbumId), INTERLEAVE IN PARENT sch1.Singers ON DELETE CASCADE; CREATE TABLE sch1.Songs ( SingerId INT64 NOT NULL, AlbumId INT64 NOT NULL, TrackId INT64 NOT NULL, SongName STRING(MAX), ) PRIMARY KEY(SingerId, AlbumId, TrackId), INTERLEAVE IN PARENT sch1.Albums ON DELETE CASCADE; CREATE VIEW sch1.SingerView SQL SECURITY INVOKER AS Select s.FirstName, s.LastName, s.SingerInfo FROM sch1.Singers AS s WHERE s.SingerId = 123456; CREATE VIEW SingerView SQL SECURITY INVOKER AS Select s.FirstName, s.LastName, s.SingerInfo FROM Singers AS s WHERE s.SingerId = 123456;ב-Spanner אפשר ליצור רק אינדקס שמשתמש באותה סכימה כמו הטבלה שמשתמשת באינדקס. אנחנו צריכים לוודא ששמות הסכימה של האינדקס והטבלה זהים.
PostgreSQL
מריצים את ההצהרה
CREATE SCHEMAכדי ליצור את הסכימה עם השם. לדוגמה:CREATE SCHEMA sch1;מוסיפים אובייקטים של מסד נתונים בסכימה שצוין השם שלה, לדוגמה:
CREATE SEQUENCE sch1.sequence BIT_REVERSED_POSITIVE CREATE TABLE sch1.singers( singer_id bigint primary key, album_id bigint default(nextval('sch1.sequence'))) CREATE TABLE sch1.albums(k bigint default(nextval('sch1.sequence'))primary key, album_id bigint) CREATE VIEW sch1.singer_view SQL SECURITY INVOKER AS SELECT * FROM sch1.singers CREATE INDEX index_singers ON TABLE sch1.singers(album_id)ב-Spanner אפשר ליצור אינדקס רק באותה סכימה. ב-Spanner, הצהרות PostgreSQL עושות זאת כברירת מחדל. אין צורך להשתמש בשמות מלאים כדי ליצור אינדקסים בסכימות בעלות שם.
אפשר לראות את הסכימות עם השמות והאובייקטים הקשורים בחלונית Explorer.
הוספת בקרת גישה פרטנית לסכימה עם שם
הצהרות ה-DDL הבאות מוסיפות בקרת גישה פרטנית לסכימה עם שם:
- ההרשאה
USAGEמעניקה הרשאות לאובייקט הסכימה. הרשאתUSAGEמוענקת כברירת מחדל לסכימה שמוגדרת כברירת מחדל. עם זאת, אפשר לבטל את ההרשאהUSAGEבסכימת ברירת המחדל. חשוב להיזהר כשמבטלים גישה, כי משתמשים ותפקידים שהגישה שלהם בוטלה מאבדים את כל הגישה לאובייקטים בסכימה שמוגדרת כברירת מחדל. - ההצהרה
ALLמבצעת הענקת הרשאות בכמות גדולה על כל האובייקטים מסוג מסוים בסכימה. - מילת המפתח
DEFAULTמתייחסת לסכימה שמוגדרת כברירת מחדל בהצהרות FGAC DDL.
כדי לגשת לאובייקט בסכימה עם שם, צריכה להיות לכם הרשאת שימוש בסכימה עם השם והרשאות מתאימות באובייקטים של מסד הנתונים שמשתמשים בסכימה הזו. לדוגמה, ההצהרות הבאות מעניקות הרשאות לקריאה מטבלה:
-
GRANT SELECT ON TABLE TABLE_NAME IN SCHEMA SCHEMA_NAME TO ROLE ROLE_NAME(GoogleSQL ו-PostgreSQL) מעניקה לתפקיד הרשאה לקרוא מטבלה ספציפית בסכימה. לחלופין, אפשר להעניק לתפקיד הרשאה לקרוא מכל הטבלאות בסכימה באמצעות מילת המפתחALL. לדוגמה,GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO ROLE ROLE_NAME. ההצהרהALLשלמעלה חלה רק על טבלאות שקיימות בזמן הביצוע של ההצהרה. -
GRANT USAGE ON SCHEMA SCHEMA_NAME TO ROLE ROLE_NAME(GoogleSQL ו-PostgreSQL) מעניקה לתפקיד הרשאה לגשת לאובייקטים שנכללים בסכימה, אם גם ההרשאות של האובייקט שנכלל מתאימות. לדוגמה, כדי לקרוא מטבלה בסכימה, צריך הרשאת USAGE בסכימה והרשאת SELECT בטבלה.
במסוף Google Cloud , פותחים את הדף Spanner.
בוחרים מופע מהרשימה.
בוחרים מסד נתונים.
בתפריט הניווט, לוחצים על Spanner Studio.
פותחים כרטיסייה חדשה בלחיצה על New SQL editor tab או על New tab.
בכרטיסייה עורך, מזינים את ה-DDL.
GoogleSQL
יוצרים את התפקיד בהתאמה אישית לסכימה עם השם. בדוגמה הבאה, אנחנו משתמשים ב-
role1וב-role2.CREATE ROLE role1 CREATE ROLE role2נותנים את התפקיד לטבלאות שמשתמשות בסכימה עם שם באמצעות
GRANT ALL. בדוגמה הבאה, אנחנו משתמשים ב-sch1בשביל הסכימה עם השם וב-role1בשביל התפקיד.GRANT SELECT ON ALL TABLES IN SCHEMA sch1 TO ROLE role1נותנים הרשאת שימוש בסכימה לתפקידים שיצרתם. בדוגמה הבאה, אנחנו מעניקים הרשאת שימוש ב-
sch1ל-role1ול-role2.GRANT USAGE ON SCHEMA sch1 TO ROLE role1, role2PostgreSQL
יוצרים את התפקיד בהתאמה אישית לסכימה עם השם. בדוגמה הבאה, אנחנו משתמשים ב-
role1וב-role2.CREATE ROLE role1 CREATE ROLE role2נותנים את התפקיד לטבלאות שמשתמשות בסכימה עם שם באמצעות
GRANT ALL. בדוגמה הבאה, אנחנו משתמשים ב-sch1בשביל הסכימה עם השם וב-role1בשביל התפקיד.GRANT SELECT ON ALL TABLES IN SCHEMA sch1 TO role1נותנים הרשאת שימוש בסכימה לתפקידים שיצרתם. בדוגמה הבאה, אנחנו מעניקים הרשאת שימוש ב-
sch1ל-role1ול-role2.GRANT USAGE ON SCHEMA sch1 TO role1, role2
הוספה וביטול של בקרת גישה פרטנית לסכימה שמוגדרת כברירת מחדל
כשנותנים שמות לסכימות, סכימת ברירת המחדל נקראת default. כשמוסיפים או מבטלים בקרת גישה ברמת דיוק גבוהה, צריך להשתמש בשם הסכימה default.
הוספת בקרת גישה פרטנית לסכימה שמוגדרת כברירת מחדל
כברירת מחדל, לכל המשתמשים והתפקידים יש את ההרשאה USAGE בסכימה שמוגדרת כברירת מחדל.
במסוף Google Cloud , פותחים את הדף Spanner.
בוחרים מופע מהרשימה.
בוחרים מסד נתונים.
בתפריט הניווט, לוחצים על Spanner Studio.
פותחים כרטיסייה חדשה בלחיצה על New SQL editor tab או על New tab.
בכרטיסייה עורך, מזינים את ה-DDL.
GoogleSQL
בדוגמה הבאה, אנחנו מעניקים גישה לכל הטבלאות ל-
role1.GRANT SELECT ON ALL TABLES IN SCHEMA default TO ROLE role1PostgreSQL
בדוגמה הבאה, אנחנו מעניקים גישה לכל הטבלאות ל-
role1.GRANT SELECT ON ALL TABLES IN SCHEMA default TO role1
ביטול בקרת גישה פרטנית לסכימה שמוגדרת כברירת מחדל
אפשר לבטל את הרשאות ברירת המחדל של בקרת גישה מדויקת בסכימה של ברירת המחדל באמצעות הפקודה REVOKE USAGE.
במסוף Google Cloud , פותחים את הדף Spanner.
בוחרים מופע מהרשימה.
בוחרים מסד נתונים.
בתפריט הניווט, לוחצים על Spanner Studio.
פותחים כרטיסייה חדשה בלחיצה על New SQL editor tab או על New tab.
בכרטיסייה עורך, מזינים את ה-DDL.
GoogleSQL
REVOKE USAGE ON SCHEMA DEFAULT FROM ROLE publicPostgreSQL
REVOKE USAGE ON SCHEMA public FROM publicאחרי שמריצים את הפקודה הקודמת, צריך להעניק הרשאות באופן מפורש לתפקידים שנדרשת להם גישה לסכימה שמוגדרת כברירת מחדל. בדוגמה הבאה, אנחנו מעניקים הרשאות ל-
role1.GoogleSQL
בדוגמה הבאה, אנחנו מעניקים גישה לסכימה שמוגדרת כברירת מחדל ל-
role1.GRANT USAGE ON SCHEMA default to ROLE role1PostgreSQL
בדוגמה הבאה, אנחנו מעניקים גישה לסכימה שמוגדרת כברירת מחדל ל-
role1.GRANT USAGE ON SCHEMA public To role1
צפייה בסכימות עם שמות
- בוחרים מופע מהרשימה.
- בוחרים מסד נתונים.
- בתפריט הניווט, לוחצים על Spanner Studio.
- בחלונית Explorer, לוחצים על המתג כדי להרחיב את התפריט הנפתח Schemas.
אפשר גם להשתמש ב-SQL כדי להציג את כל הסכימות בטבלה information_schema.schemata.
בדוגמה הבאה מוצגות סכימות של שמות תצוגות והבעלים שלהן:
SELECT schema_name, schema_owner
FROM information_schema.schemata
ORDER BY schema_owner
בהצהרה הזו מופיעה רשימה של סכימות ובעלים, בדומה לרשימה הבאה:
public spanner_admin
products spanner_admin
analytics spanner_admin
logs spanner_admin
pg_catalog spanner_system
information_schema spanner_system
spanner_sys spanner_system
מחיקת סכימה עם שם
הפקודה DROP SCHEMA (GoogleSQL
ו-PostgreSQL)
משמשת להסרת סכימה עם שם.
במסוף Google Cloud , פותחים את הדף Spanner.
בוחרים מופע מהרשימה.
בוחרים מסד נתונים.
בתפריט הניווט, לוחצים על Spanner Studio.
פותחים כרטיסייה חדשה בלחיצה על New SQL editor tab או על New tab.
בכרטיסייה עורך, מזינים את ה-DDL.
GoogleSQL
בדוגמה הבאה, אנחנו משמיטים את
sch1.DROP SCHEMA IF EXISTS sch1;PostgreSQL
בדוגמה הבאה, אנחנו משמיטים את
sch1.DROP SCHEMA IF EXISTS sch1;