最新的Azure SQL資料庫已經可以與Azure AD帳號整合,透過Azure AD來驗證使用者的登入。再搭配Azure SQL資料庫的Auditing功能,基本上已經可以達到資料庫存取稽核的需求。
· 要設定Azure SQL資料庫的Azure AD驗證,首先我們需要到Portal上啟用並設定Admin。
· 啟用後,接著我們需要透過工具已Azure AD身分連線到資料庫;連線使用的電腦必須要滿足以下的條件:
o 安裝了.Net Framework 4.6 - https://msdn.microsoft.com/library/5a4x27ek.aspx.
o 安裝了 Microsoft Active Directory Authentication Library for Microsoft SQL Server.
· 工具方面可以使用SQL 2016 Management Studio、 SQL Server Data Tools for Visual Studio 2015或是Visual Studio 2015;在這裡我使用SQL Server Data Tools for Visual Studio 2015
· 開啟工具後,選擇透過Azure AD Integration方式登入
· 連線到master資料庫,執行以下的指令在SQL Azure資料庫的上建立要登入資料庫的Azure AD使用者
o CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
· 或是可以建立整個Azure AD群組
o CREATE USER [Group Name] FROM EXTERNAL PROVIDER;
· 接著,將剛剛建立的使用者加入相對應的Database Role,如此使用者才能夠存取該資料庫
o EXEC sp_addrolemember 'dbmanager', 'abc@contoso.com';
· 在程式中使用以下的Connection String
string ConnectionString =
@"Data Source=xxxxxx.database.windows.net; Authentication=Active Directory Password; UID=bob@contoso.onmicrosoft.com; PWD=PASSWORD";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.Open();
· 如果執行時出現"Invalid object name"的錯誤,請在程式中的SQL語法加上schema name,例如:
o Select * from [dbo].[myTable]