בדף הזה מוסבר איך Cloud SQL פועל עם משתמשים ותפקידים של SQL Server. תפקידים ב-SQL Server מאפשרים לכם לשלוט בגישה וביכולות של משתמשים שניגשים למופע של SQL Server.
מידע על יצירה וניהול של משתמשי Cloud SQL זמין במאמר יצירה וניהול של משתמשים.
תפקידים ומשתמשים ב-SQL Server
תפקידים ב-SQL Server יכולים להיות תפקיד יחיד, או שהם יכולים לתפקד כקבוצת תפקידים.
משתמש הוא תפקיד עם אפשרות להתחבר (לתפקיד יש את ההרשאה LOGIN). לכל התפקידים שנוצרו על ידי Cloud SQL יש את ההרשאה LOGIN, ולכן ב-Cloud SQL משתמשים במונחים 'תפקיד' ו'משתמש' לסירוגין. עם זאת, אם תיצרו תפקיד באמצעות כלי לקוח כלשהו שתואם ל-SQL Server, התפקיד לא יקבל בהכרח את ההרשאה LOGIN.
ב-Cloud SQL ל-SQL Server, הגישה מוגבלת לתפקידי שרת מסוימים שמעניקים הרשאות מתקדמות. דוגמאות לתפקידים כאלה: DbRootRole, serveradmin, securityadmin, setupadmin, diskadmin ו-dbcreator.
לכל משתמשי SQL Server צריכה להיות סיסמה. לכן, אי אפשר להיכנס לחשבון של משתמש בלי סיסמה.
משתמשי-על ותהליכים מאוחסנים במערכת
Cloud SQL ל-SQL Server הוא שירות מנוהל, ולכן הוא מגביל את הגישה לטבלאות ולהליכים מאוחסנים מסוימים במערכת שנדרשות בשבילם הרשאות מתקדמות. ב-Cloud SQL, אי אפשר ליצור משתמשים עם הרשאות סופר-משתמש או לקבל גישה אליהם.
משתמשי ברירת מחדל ב-SQL Server
כשיוצרים מופע חדש של Cloud SQL ל-SQL Server, משתמש ברירת המחדל sqlserver כבר נוצר בשבילכם, אבל אתם צריכים להגדיר את הסיסמה שלו.
המשתמש sqlserver הוא חלק מהתפקיד CustomerDbRootRole, וההרשאות שלו כוללות את הפעולות הבאות:
ALTER ANY CONNECTIONALTER ANY LOGINALTER ANY SERVER ROLEALTER SERVER STATEALTER TRACECONNECT SQLCREATE ANY DATABASECREATE SERVER ROLEVIEW ANY DATABASEVIEW ANY DEFINITIONVIEW SERVER STATE
אפשר גם להוסיף cloudsql enable linked servers
למופע אם רוצים להשתמש בו עם שרתים מקושרים. הדגל הזה מעניק לשרת את ההרשאות הבאות:
ALTER ANY LINKED SERVER
מתן הרשאות לשרת
כשמעניקים הרשאות באמצעות פקודת GRANT, צריך להעביר את CustomerDbRootRole כערך של grantor_principal, למשל.
הדוגמה הבאה של GRANT ALTER ANY LOGIN היא תקינה:
GRANT ALTER ANY LOGIN TO [Account] AS CustomerDbRootRole
הדוגמה הבאה של GRANT ALTER ANY LOGIN היא לא תקינה:
GRANT ALTER ANY LOGIN TO [Account]
משתמשי SQL Server אחרים
אפשר ליצור משתמשים או תפקידים אחרים ב-SQL Server. לכל המשתמשים שיוצרים באמצעות Cloud SQL מוקצות אותן הרשאות למסד הנתונים כמו למשתמש sqlserver login. עם זאת, אם משתמש נוצר בתהליך אחר (ולא באמצעות Cloud SQL), לא יהיו לו את אותן הרשאות כמו לחשבונות האדמין של הלקוח או למשתמש sqlserver. לדוגמה, אם משתמשים בתהליך create
login ומוסיפים את פרטי הכניסה לתפקיד השרת CustomerDbRootRole, למשתמש לא יהיו אותן הרשאות כמו לחשבונות האדמין של הלקוח או למשתמש sqlserver. לכן, אתם יכולים להשתמש ב-Cloud SQL כדי ליצור משתמש אם אתם רוצים שלמשתמש יהיו אותן הרשאות למסד הנתונים כמו לפרטי ההתחברות sqlserver.
כדי לאמת את ההבדל בהרשאות בין שני חשבונות, אפשר להשתמש בפונקציה הבאה:
sys.fn_my_permissions.
ייבוא מסד נתונים: הרשאות בעלים
כשמייבאים מסד נתונים, הטיפול בבעלים משתנה בהתאם לסוג הבעלים:
- אם יש פרטי התחברות קיימים שלא שייכים ל-
sa: Cloud SQL שומר את הבעלים ויוצר משתמש בשםsqlserverשממופה לפרטי ההתחברותsqlserver. Cloud SQL מעניק את ההרשאותCONTROLו-ALTER ANY USERלמשתמשsqlserver. - לפרטי התחברות לא ידועים או לפרטי התחברות שנוצרו על ידי המערכת: Cloud SQL מעביר את הבעלות על מסד הנתונים לפרטי ההתחברות
sqlserver.
שינוי הרשאות של משתמשים
הפקודה ALTER ROLE זמינה לשינוי הרשאות משתמש. אם יוצרים משתמש חדש עם לקוח, אפשר לשייך אותו לתפקיד אחר או לספק הרשאות שונות.
פתרון בעיות
שגיאה בגישה למסד הנתונים
כשמנסים לגשת למסד נתונים שיצרתם, בתור משתמש שיצרתם, מופיעה השגיאה הבאה:
The server principal USERNAME is not able to access the database DATABASE_NAME under the current security context.
יכול להיות שהבעיה היא
המשתמש לא חבר במסד הנתונים.
דברים שכדאי לנסות
מתחברים למסד הנתונים כמשתמש sqlserver ומוסיפים את המשתמש החדש,
ואז
נותנים למשתמש החדש את התפקיד db_owner במסד הנתונים. לדוגמה:
EXEC sp_adduser 'user'; EXEC sp_addrolemember 'db_owner', 'user'