מידע על משתמשי SQL Server

בדף הזה מוסבר איך 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 CONNECTION
  • ALTER ANY LOGIN
  • ALTER ANY SERVER ROLE
  • ALTER SERVER STATE
  • ALTER TRACE
  • CONNECT SQL
  • CREATE ANY DATABASE
  • CREATE SERVER ROLE
  • VIEW ANY DATABASE
  • VIEW ANY DEFINITION
  • VIEW 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'

המאמרים הבאים