ייצוא של התחברויות ל-SQL Server

במאמר הזה מוסבר איך לייצא פרטי כניסה ל-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 הבאים בפרויקט:

להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

התפקיד המוגדר מראש הזה כולל את ההרשאה cloudsql.instances.update, שנדרשת כדי להגדיר דגלים לניהול מסד נתונים.

יכול להיות שתוכלו לקבל את ההרשאה הזו גם בתפקידים בהתאמה אישית או בתפקידים מוגדרים מראש.

הרשאות למסד הנתונים

מוודאים שיש לכם גישה לתפקיד המשתמש שמוגדר כברירת מחדל ב-sqlserver SQL Server.

הפעלת הדגל לניהול מסד הנתונים

כדי להתקין את הפרוצדורה המאוחסנת sp_help_revlogin במסד הנתונים msdb, צריך להפעיל את הדגל לניהול מסד הנתונים cloud sql enable sp_help_revlogin במכונה.

מסוףGoogle Cloud

  1. נכנסים לדף Cloud SQL Instances במסוף Google Cloud .

    כניסה למכונות של Cloud SQL

  2. לוחצים על שם המכונה כדי לפתוח את הדף Overview שלה.
  3. לוחצים על Edit.
  4. בקטע Customize your instance, מרחיבים את Flags.
  5. לוחצים על הוספת דיווח.
  6. בוחרים באפשרות cloud sql enable sp_help_revlogin מרשימת הדגלים הזמינים.
  7. מגדירים את ערך הדגל ל-on.
  8. לוחצים על 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 בשם של פרטי הכניסה שרוצים לייצא.

יצירה מחדש של פרטי הכניסה במכונה המיועדת

  1. מעתיקים את הצהרות ה-CREATE LOGIN שנוצרו מפלט השאילתה.
  2. מתחברים למכונה של SQL Server ביעד.
  3. מריצים את ההצהרות שנוצרו בחלון שאילתה או באמצעות 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

  1. נכנסים לדף Cloud SQL Instances במסוף Google Cloud .

    כניסה למכונות של Cloud SQL

  2. לוחצים על שם המכונה כדי לפתוח את הדף Overview שלה.
  3. לוחצים על Edit.
  4. בקטע Customize your instance, מרחיבים את Flags.
  5. מחפשים את cloud sql enable sp_help_revlogin ומגדירים את הערך שלו ל-off (או לוחצים על Delete כדי להסיר את הדגל).
  6. לוחצים על 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.

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