במאמר הזה מוסבר איך לייצא פרטי כניסה ל-SQL Server, מזהי אבטחה (SID) וגיבובי סיסמאות ממכונה של Cloud SQL ל-SQL Server באמצעות הפרוצדורה המאוחסנת sp_help_revlogin.
כשמעבירים מסדי נתונים, מגדירים סנכרון של מסדי נתונים או מתחזקים עותקים לקריאה בלבד ועותקים לתוכנית התאוששות מאסון (DR), צריך ליצור מחדש את פרטי הכניסה של המשתמשים במכונה המיועדת עם מזהי SID וגיבובי סיסמאות תואמים. כך אפשר לוודא שמשתמשי מסד הנתונים נשארים ממופים לפרטי הכניסה המתאימים לשרת, ושומרים על ההרשאות שלהם.
ב-Cloud SQL ל-SQL Server יש את הפרוצדורה המאוחסנת sp_help_revlogin במסד הנתונים msdb, שמאפשרת ליצור סקריפטים של Transact-SQL (T-SQL) כדי ליצור מחדש את פרטי ההתחברות של המשתמשים.
לפני שמתחילים
התפקידים הנדרשים
כדי לקבל את ההרשאה שדרושה להגדרת דגלים לניהול מסד נתונים, בקשו מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:
- Cloud SQL Admin (
roles/cloudsql.admin) - עריכה ב-Cloud SQL (
roles/cloudsql.editor)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
התפקיד המוגדר מראש הזה כולל את ההרשאה cloudsql.instances.update, שנדרשת כדי להגדיר דגלים לניהול מסד נתונים.
יכול להיות שתוכלו לקבל את ההרשאה הזו גם בתפקידים בהתאמה אישית או בתפקידים מוגדרים מראש.
הרשאות למסד הנתונים
מוודאים שיש לכם גישה לתפקיד המשתמש שמוגדר כברירת מחדל ב-sqlserver SQL Server.
הפעלת הדגל לניהול מסד הנתונים
כדי להתקין את הפרוצדורה המאוחסנת sp_help_revlogin במסד הנתונים msdb, צריך להפעיל את הדגל לניהול מסד הנתונים cloud sql enable sp_help_revlogin במכונה.
מסוףGoogle Cloud
- נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- לוחצים על שם המכונה כדי לפתוח את הדף Overview שלה.
- לוחצים על Edit.
- בקטע Customize your instance, מרחיבים את Flags.
- לוחצים על הוספת דיווח.
- בוחרים באפשרות cloud sql enable sp_help_revlogin מרשימת הדגלים הזמינים.
- מגדירים את ערך הדגל ל-on.
- לוחצים על Save.
CLI של gcloud
מפעילים את הדגל באמצעות ה-CLI של gcloud:
gcloud sql instances patch INSTANCE_NAME \ --database-flags="cloud sql enable sp_help_revlogin=on"
מחליפים את INSTANCE_NAME בשם של מכונת Cloud SQL.
התחברות באמצעות כלי לקוח נתמך
הפרוצדורה המאוחסנת sp_help_revlogin מפיקה סקריפטים של CREATE LOGIN באמצעות הצהרות PRINT ב-T-SQL (הודעות מידע) במקום קבוצות של תוצאות בטבלה (הצהרות SELECT).
מתחברים למכונה של Cloud SQL באמצעות אחד מהכלים הבאים:
- SQL Server Management Studio (SSMS): מתחברים למכונה, מריצים את הפרוצדורה וצופים בסקריפטים שנוצרו בכרטיסייה Messages. לחלופין, אפשר ללחוץ על Control+T כדי להחליף את מצב הפלט של הביצוע ל-Results to Text לפני הרצת השאילתה.
- Visual Studio Code: מתחברים באמצעות התוסף MSSQL, מריצים את הפרוצדורה וצופים בסקריפטים שנוצרו בכרטיסייה Messages.
sqlcmd utility: מתחברים למכונה ומייצאים את הסקריפטים שנוצרו ישירות לקובץ SQL:
sqlcmd -S INSTANCE_IP \ -U USERNAME \ -P PASSWORD -d msdb \ -Q "EXEC dbo.sp_help_revlogin" -o output_logins.sqlמחליפים את מה שכתוב בשדות הבאים:
-
INSTANCE_IP: כתובת ה-IP של המכונה ב-Cloud SQL. -
USERNAME: שם המשתמש של מסד הנתונים הניהולי (למשלsqlserver). -
PASSWORD: הסיסמה של המשתמש במסד הנתונים.
-
ייצוא פרטי כניסה באמצעות sp_help_revlogin
מתחברים למסד הנתונים msdb ומריצים את הפרוצדורה המאוחסנת sp_help_revlogin.
כדי לייצא את כל פרטי ההתחברות של הלקוחות:
EXEC msdb.dbo.sp_help_revlogin;כדי לייצא פרטי התחברות ספציפיים:
EXEC msdb.dbo.sp_help_revlogin @login_name = 'LOGIN_NAME';מחליפים את
LOGIN_NAMEבשם של פרטי הכניסה שרוצים לייצא.
יצירה מחדש של פרטי הכניסה במכונה המיועדת
- מעתיקים את הצהרות ה-
CREATE LOGINשנוצרו מפלט השאילתה. - מתחברים למכונה של SQL Server ביעד.
- מריצים את ההצהרות שנוצרו בחלון שאילתה או באמצעות
sqlcmd.
ההצהרות שנוצרו יוצרות את פרטי הכניסה במכונה של היעד עם מזהי ה-SID המקוריים, מסדי הנתונים שמוגדרים כברירת מחדל וגיבובי הסיסמאות. למידע נוסף על שיקולים בהעברת פרטי כניסה בין מכונות, קראו את המאמר העברת פרטי כניסה וסיסמאות בין מכונות של SQL Server במסמכי התיעוד של Microsoft.
סנכרון פרטי כניסה עם עותקים לקריאה בלבד
כש-Cloud SQL יוצר רפליקה לקריאה בלבד או רפליקה של תוכנית התאוששות מאסון (DR), הוא מעתיק את פרטי הכניסה הקיימים מהמכונה הראשית. עם זאת, פרטי כניסה שנוצרו במכונה הראשית אחרי יצירת הרפליקה לא משוכפלים באופן אוטומטי.
למרות שמסדי הנתונים של המשתמשים ברפליקה לקריאה בלבד הם לקריאה בלבד, אתם יכולים להתחבר לרפליקה לקריאה בלבד ולהריץ את הצהרות ה-CREATE LOGIN שנוצרו על ידי sp_help_revlogin במסד הנתונים master של הרפליקה.
מומלץ לייצא באופן קבוע פרטי כניסה חדשים מהמכונה הראשית וליצור אותם מחדש ברפליקות לקריאה בלבד וברפליקות ל-DR. סנכרון שגרתי מבטיח שהמשתמשים יוכלו לבצע אימות מול עותקי ה-Read Replica, ושהאפליקציות יוכלו להתחבר מחדש מיד אחרי העברה, יתירות כשל של עותק Replica או קידום של עותק Replica.
מגבלות והתחברויות שלא נכללות
sp_help_revlogin מחריגה באופן אוטומטי את סוגי ההתחברויות הבאים מהייצוא:
- Google Cloud חשבונות שירות וחשבונות ניהול פנימיים.
- חשבונות מערכת פנימיים של SQL Server (פרטי כניסה עם הקידומת
##). - פרטי כניסה שהוקצו לתפקיד השרת הקבוע
sysadmin. - פרטי כניסה שהוקצו לתפקידי אדמין מוגבלים בשרת.
השבתת הדגל לניהול מסד הנתונים
אם אתם לא צריכים יותר את הפרוצדורה המאוחסנת, אתם יכולים להגדיר את הדגל לערך off (או להסיר את הדגל מהמכונה):
מסוףGoogle Cloud
- נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- לוחצים על שם המכונה כדי לפתוח את הדף Overview שלה.
- לוחצים על Edit.
- בקטע Customize your instance, מרחיבים את Flags.
- מחפשים את cloud sql enable sp_help_revlogin ומגדירים את הערך שלו ל-off (או לוחצים על Delete כדי להסיר את הדגל).
- לוחצים על Save.
CLI של gcloud
gcloud sql instances patch INSTANCE_NAME \ --database-flags="cloud sql enable sp_help_revlogin=off"
אם מגדירים את הערך off או מסירים אותו, Cloud SQL מסיר באופן אוטומטי את dbo.sp_help_revlogin ממסד הנתונים msdb.
המאמרים הבאים
- מידע נוסף על משתמשי SQL Server זמין במאמר משתמשי SQL Server.
- מידע נוסף על הגדרת דגלים לניהול מסדי נתונים זמין במאמר הגדרת דגלים לניהול מסדי נתונים.
- מידע נוסף על תהליכים מאוחסנים נתמכים זמין במאמר תהליכים מאוחסנים ב-SQL Server.
- מידע נוסף על העברת פרטי כניסה וסיסמאות זמין במאמר העברת פרטי כניסה וסיסמאות בין מכונות של SQL Server.