最後更新:2014-12-24
來源:互聯網
上載者:User
關鍵字
規則
Azure
防火牆
Azure
資料庫訪問
今天的文章來自于我們使用者體驗團隊的技術作家Kumar Vivek。 這篇文章對Windows HTTP://www.aliyun.com/zixun/aggregation/13357.html">Azure SQL資料庫中新推出的資料庫級防火牆規則進行了簡要概括。
Windows Azure SQL資料庫防火牆能夠阻止他人對你SQL資料庫的訪問,以助你保護資料。 你能夠指定防火牆規則,如限定允許訪問的IP位址範圍,來控制對資料庫的訪問。 然而,這些規則定義在伺服器層級,允許被授權的終端訪問你的整個SQL資料庫伺服器,也就是該邏輯伺服器上的所有資料庫。 那如果你想控制伺服器上的某個特定資料庫(包含安全資訊)的存取權限,該怎麼辦呢? 你可能就要費些腦筋了。
那麼現在,你能夠做到了! 現介紹Windows Azure SQL資料庫中的資料庫層級防火牆規則! 除已有的伺服器層級防火牆規則,你現在能夠為SQL資料庫伺服器中的每個資料庫定義防火牆規則,來限制特定終端的存取權限。 要實現這一功能,你必須創建資料庫層級防火牆規則,確保發出請求用戶端的IP位址在伺服器層級防火牆規則之外、資料庫層級防火牆規則之內。
下面說明了來自用戶端的一個連接請求是如何通過Windows Azure SQL資料庫防火牆規則的:
•如果請求的IP位址在伺服器層級防火牆規則指定的範圍內,則授予SQL資料庫伺服器連接許可權。 •如果請求的IP位址不在伺服器層級防火牆規則指定的範圍內,則檢查資料庫層級防火牆規則。 如果請求的IP位址在後者指定的範圍內,則只授予相應資料庫的連接許可權。 •如果請求的IP位址不在任何伺服器層級或資料庫層級防火牆規則指定的範圍內,則連接請求失敗。
管理資料庫層級防火牆規則 不像伺服器層級的防火牆規則,資料庫層級的防火牆規則是針對每個資料庫而建立的,並儲存在獨立的資料庫中(包括master)。 每個資料庫中的sys.database_firewall_rules視圖顯示在當前資料庫層級防火牆規則中。 而且,你能用 每個資料庫中的sp_set_database_firewall_rule 和sp_delete_database_firewall_rule預存程序來新建或者刪除資料庫層級防火牆規則。
Microsoft Windows Azure SQL Database 通過使用 SQL Database 防火牆阻止對 SQL Database 伺服器的訪問。 您可以為 SQL Database 伺服器中的 master 或使用者資料庫定義資料庫級防火牆設置,以有選擇地允許對資料庫的訪問。 必須連接到資料庫來創建或編輯資料庫的資料庫級防火牆規則。 有關資料庫級防火牆規則的詳細資訊,請參閱 Windows Azure SQL Database 防火牆。
注意:在首次連接 SQL Database 伺服器時,必須使用監管中心通過防火牆啟用連接。
配置 master 和使用者資料庫的資料庫級防火牆設置
1、使用監管中心確認存在允許您的電腦嘗試連接 SQL Database 伺服器的伺服器級防火牆設置。 您電腦的 IP 位址必須位於其中一個伺服器級防火牆設置的 IP 位址範圍之內。 有關詳細資訊,請參閱 Windows Azure SQL Database 防火牆。
2、連接到要創建資料庫級防火牆規則的資料庫。
3、使用 sp_set_database_firewall_rule 預存程序創建資料庫級防火牆規則。 通過在 sp_set_database_firewall_rule 預存程序的 name 參數中指定唯一名稱,為基於 Internet 的連接添加新的防火牆設置。 使用 start_ip_address 參數指定所需的該範圍中的最低 IP 位址,使用 end_ip_address 參數指定所需的該範圍中的最高 IP 位址。 name 參數的資料類型為 Nvarchar,start_ip_address 和 end_ip_address 參數的資料類型為 Varchar。
同樣,您可以通過使用 sp_set_database_firewall_rule 預存程序(其中的參數 start_ip_address 和 end_ip_address 等於 0.0.0.0),啟用從 Windows Azure 進行的連接嘗試。
4、通過執行以下查詢查看資料庫的資料庫級防火牆設置:select * from sys.database_firewall_rules。 此視圖在 SQL Database 伺服器的每個資料庫中都存在,它返回資料庫的所有資料庫級規則的清單。
5、通過在 sp_set_database_firewall_rule 預存程序的 name 參數中指定現有名稱,更新基於 Internet 的連接的現有資料庫級防火牆設置。 使用 start_ip_address 和 end_ip_address 參數指定新的 IP 位址範圍。
6、通過在 sp_delete_database_firewall_rule 預存程序的 name 參數中指定不需要的防火牆設置的名稱,刪除該資料庫級防火牆設置。
示例
本示例演示如何使用 Transact-SQL 設定資料庫級防火牆設置。 要查看 SQL Database 伺服器中某資料庫的資料庫級防火牆設置,請連接到該資料庫,然後運行以下查詢:
-- view database-level firewall settings select * from sys.database_firewall_rules
可以使用 sp_set_database_firewall_rule 預存程序添加或更改防火牆設置。 以下代碼僅為 IP 位址 0.0.0.4 創建了名為 Example DB Setting 1 的資料庫級防火牆設置。 然後,再次調用了 sp_set_database_firewall_rule 預存程序,允許該防火牆設置中的另一個 IP 位址 0.0.0.5 訪問。
-- create new database-level firewall setting for only IP 0.0.0.4 exec sp_set_database_firewall_rule N'Example DB Setting 1','0.0.0.4','0.0.0.4'
-- update database-level firewall setting to also allow IP 0.0.0.5 exec sp_set_database_firewall_rule N'Example DB Setting 1','0.0.0.4','0.0.0.5'
若要刪除防火牆設置,請使用 sp_delete_database_firewall_rule 預存程序,如下面的代碼所示。
-- Remove database-level firewall setting exec sp_delete_database_firewall_rule N'Example DB Setting 1'