בדף הזה מוסבר איך 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'