מידע על משתמשי 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'

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