content top
התחברות ל- Azure SQL Database באמצעות Azure AD

התחברות ל- Azure SQL Database באמצעות Azure AD

בשעה טובה, מעתה ניתן להתחבר ל SQL Azure עם מנגנון האותנטיקציה של Azure Active Directory.

כעת האפשרות הזו עדיין מוגדרת כאפשרות Preview כך שהפרטים הטכניים עשויים להשתנות.

Azure AD, מאפשר לנו לנהל בצורה טובה ומרוכזת יותר את המשתמשים המורשים להתחבר ל SQL Azure, ומפשט את כל נושא ניהול ההרשאות.

יתרונות נוספים לשימוש בAAD להתחברות ל SQL Azure:

  • נותן חלופה לשימוש במנגנון ה SQL Authentication, כך שהסיסמאות אינן נשמרות בשרת ה-SQL.
  • ניהול הסיסמאות במקום אחד, כולל האפשרות להגדיר Policy באמצעות Powershell
  • מאפשר שימוש בקבוצות משתמשים במקום משתמשים בודדים
  • יצירת משתמשים ב Contained Database הממופים למשתמשים ב Azure AD.

לצורך יצירת התחברות מוצלחת עם Azure AD, תחילה אנו צריכים להבין מנגנון זה.

מבנה ה Trust

הדיאגרמה הבאה מסכמת את הארכיטקטורה לשימוש Azure AD עם SQL Azure:

Trust

מבנה האדמיניסטרטור

התחברות עם Azure AD ל SQL Azure מצריך שני משתמשי Administrator, האחד הוא המשתמש SQL המקורי, והשני הוא משתמש ה Azure AD. משתמשי ה Azure AD חייבים להיווצר כ- Contained Database Users.

רק משתמש אדמין מסוג Azure AD רשאי ליצור את ה הראשון עבור משתמשי Azure AD.

משתמש האדמין של Azure AD יכול להיות משתמש בודד או קבוצת משתמשים, דבר שמפשט את הניהול של המשתמשים עם הרשאות אדמין לשרת.

יכול להיות רק Azure AD Administrator אחד (כבודד או כקבוצה).

להלן ההבדלים בין Azure AD Administrator לבין SQL Server Administrator:

Administrator

הרשאות

על מנת ליצור משתמשים חדשים, יש צורך בהרשאת ALTER ANY USER בבסיס הנתונים, שמצויה כבר למי שיש הרשאת Server Administrator, או הרשאות ברמת בסיס הנתונים CONTROL ON DATABASE  או  ALTER ON DATABASE, או כמובן db_owner.

לצורך יצירת משתמש Contained Database, יש צורך בשימוש במשתמש Azure AD. בשלבים הבאים נלמד איך יוצרים אותו.

שיקולים נוספים

  • לצורך ניהול נכון ויעיל יותר, מומלץ להקים קבוצת Azure Active Directory ייעודית שתשמש כ Administrator.
  • ניתן להגדיר רק Azure AD Administrator אחד, שיכול להיות משתמש בודד או קבוצה.
  • רק משתמש Azure AD Administrator יכול לבצע את ההתחברות הראשונית באמצעות חשבון ה Azure AD, לאחר מכן הוא יכול להוסיף משתמשי Azure AD נוספים לבסיס הנתונים.
  • חלק מכלי הBI ו-Excel לא נתמכים.
  • התחברות באמצעותAzure AD תומכת רק ב- .NET Framework Data Provider for SqlServer שזה לפחות בגרסת .Net Framework 4.6 לכן SSMS 2016, DAC  ו- .backpac נתמכים.exe אינו נתמך מכיוון שמשתמש ב ODBC.
  • Two-factor authentication אינה נתמכת.

שלבים ליצירת ההתחברות

יצירת Azure Active Directory עם המשתמשים והקבוצות הנדרשות
  • יצירת Azure AD managed domain
  • קישור on-premises Active Directory Domain Service עם ה Azure Active Directory.

מידע נוסף כאן:

Add your own domain name to Azure AD

Windows Azure now supports federation with Windows Server Active Directory

Administering your Azure AD directory

Manage Azure AD using Windows PowerShell.

יש לוודא שה- Azure SQL Database  הוא בגרסת V12

ניתן לוודא זאת ע"י הרצת השאילתה Select @@Version. במידה ובסיס הנתונים אינו בגרסה 12, אז יש צורך בשדרוג.
פרטים על שדרוג:  Plan and prepare to upgrade to SQL Database V12

יצירת Azure AD Administrator לטובת ה Azure SQL Server

כל Azure SQL database נוצר עם משתמש אדמין אחד בעת היצירה. יש צורך ביצירת משתמש אדמין נוסף, אשר יהיה חשבון Azure AD. ניתן ליישם זאת ע"י יצירת Contained database user בתוך ה master db.

  1. מתוך ה Portal Azure החדש, יש להיכנס להגדרות של ה SQL Azure:
    SQL Azure 1
  2. לאחר מכן, יש ללחוץ על Active Directory admin (preview) ולהסכים לתנאי ה preview.
  3. לאחר מכן, יש ללחוץ על Set Admin ולחפש את המשתמש או קבוצה שישמשו כ Administrator:
    SQL Azure 2

תהליך זה יכול להימשך כמספר דקות.

הגדרת ה- Client Computers

בכל המכונות אשר ישמשו להתחברות ל SQL Azure באמצעות Azure AD יש להתקין את התוכנות הבאות:

.NET Framework 4.6 or later

Azure Active Directory Authentication Library for SQL Server

כלים תומכים נוספים:

SQL Server 2016 Management Studio

SQL Server Data Tools for Visual Studio 2015

יצירת Contained Database users בבסיס הנתונים הממופים ל Azure AD

מידע על Contained databasae users: התחברות באמצעות Azure AD דורשת שימוש Contained Database users. למשתמשים מסוג זה אין login ב master db. מידע נוסף:  Contained Database Users- Making Your Database Portable.

התחברות באמצעות SQL Server Management Studio עם Integrated Authentication:

SSMS1

  1. בחלון ההתחברות יש לבחור Active Directory Integrated Authentication. אין צורך בהקלדת סיסמא מכיוון ומדובר על Integrated Authentication.
  2. ללחוץ על Options ובתוך הדף של Connection Properties יש לבחור את שם בסיס הנתונים הנכון ב Connect to database. מומלץ להגדיל את ה Timeout ל-30 שניות.

SSMS2

התחברות באמצעות SQL Server Management Studio עם Azure AD Principal Name and Password.

ניתן להשתמש באפשרות הזו במידה ומשתמשים במשתמש Azure AD באמצעות ה Azure AD Managed domain, או כאשר מתחברים מתוך Windows עם דומיין שאינו מקושר ל Azure AD.

 

SSMS3

  1. בחלון ההתחברות יש לבחור Active Directory Password Authentication.
  2. יש להקליד את שם המשתמש של Azure AD לפי הפורמט הבא: username@domain.com. זה חייב להיות חשבון של Azure AD או חשבון של דומיין המקושר ל Azure AD.
  3. יש להקליד את הסיסמא של החשבון הנ"ל.
  4. יש ללחוץ על Options ובתוך הדף של Connection Properties יש לבחור את שם בסיס הנתונים הנכון ב Connect to database. מומלץ גם להגדיל את ה Timeout ל-30 שניות.

ליצירת משתמש Contained database user נוסף אשר אינו Administrator יש להשתמש בסקריפטים הבאים:

CREATE USER Azure_AD_principal_name
FROM EXTERNAL PROVIDER;

 

לדוגמא יצירת משתמש AD:

CREATE USER [ReadOnlyUser@contactvalinorco.onmicrosoft.com]
FROM EXTERNAL PROVIDER;

 

נוכל ליצור משתמשים רק מאותו הדומיין של האדמין שהגדרנו קודם לכן. לא נוכל ליצור משתמשים מדומיין שונה לדומיין של האדמין.

בדוגמא הזו, אנו יוצרים משתמש אשר מייצג קבוצה בדומיין:

הקבוצה תזוהה מכיוון שההוספה תתבצע עם המשתמש Admin של אותו הדומיין.

CREATE USER [SQLAdmin] FROM EXTERNAL PROVIDER;

 

SSMS4

כעת ניתן להוסיף אל ה Azure AD באמצעות הפורטל משתמשי AD חדשים או קבוצות AD חדשות ואז להוסיף אותם כ- Contained Database users.

התחברות ל Azure SQL Server באמצעות Azure AD

ישנן שתי דרכים להתחבר:

  1. באמצעות Integrated Windows authentication:

    לצורך כך, הדומיין שאיתו אתם רוצים להתחבר צריך להיות מקושר (federated) ל Azure AD ולהשתמש ב Connection String הבא:

    string ConnectionString = @"Data Source= valinorsrv.database.windows.net;
    Authentication=Active Directory Integrated;"
    ;SqlConnection conn = new SqlConnection(ConnectionString);conn.Open();

     

  2. באמצעות Azure AD principal name and password, לצורך כך, יש להשתמש ב Connection String הבא:

    string ConnectionString = @"Data Source= valinorsrv.database.windows.net;
    Authentication=Active Directory Password; UID= Guyd@contactvalinorco.onmicrosoft.com;
    PWD=xxxxxxx";SqlConnection conn = new SqlConnection(ConnectionString); conn.Open();

    בהצלחה!


3 תגובות על “התחברות ל- Azure SQL Database באמצעות Azure AD”

  1. מאת Pini Krisher:

    תודה רבה על המאמר המפורט. כל הכבוד.
    2 הערות:
    1. בהגדרות בפורטל – זה דרך SQL Servers כלומר רמת האישור היא דרך שרת ולא דרך בסיס נתונים.
    2. כתבת ובצדק שההתחברות – השלב השני הוא
    "קישור on-premises Active Directory Domain Service עם ה Azure Active Directory."

    אצלינו באירגון לא קיבלו אישור מאבטחת המיידע לקשר בין ה AD המקומי לזה שבענן – וכך נכשל הניסיון :-)

  2. מאת גיא דבח:

    תודה רבה על התגובה!

    תודה על ההערה הראשונה, הממשק יכול קצת לבלבל שם :)
    לגבי ההערה השניה, אני מסכים, לא הרבה ארגונים ששים לחבר את הAD לענן, אך למי שכן מסכים, זו קפיצה משמעותית בכל מה שקשור לניהול ההתחברויות.

  3. מאת אלה ווסרמן:

    איזה יופי שיש לך בלוג..

כתיבת תגובה

האימייל לא יוצג באתר. (*) שדות חובה מסומנים

fourteen − two =