前言

本篇文章我們將簡單介紹 Azure SQL Database 安全管理防火牆設置。在防火牆層級部分,可以分成伺服器層級與資料庫層級,再搭配 Azure AD 部分,您可以擁有更多元的應用與權限規劃。在資料庫層級方面,因為與 SQL Server 相似,故僅提供連結參考,就不在贅述。本篇文章若有錯誤會任何建議,請各位先進不吝提出,謝謝。

Azure Portal 上的 查詢編輯器功能,讓您更方便進行資料操作


介紹

關於 Azure SQL Database 安全管理具有下列特色:
  1. 細部權限管理
    → 控制操作安全原則:包含欄位、表單、檢視、預存程序。
  2. 允許臨時和安全的權限提升
  3. 列層級安全 (Row level scurity)
    → 限制資料列透過安全原則進行存取
  4. 資料遮罩 (Data Masking)
    → 避免敏感資料曝光
  5. 預存程序
    → 限制預存程序使用
  6. 加密
    → 確保資料安全
如下圖所示,Azure SQL Database 可以分成三個層級:Server、Database 與 Schema 和 Object,我們將對於下圖中某些項目做一些講解:


Server-level firewall rule
  1. 啟用或停用整個 Azure SQL (全部資料庫在相同的邏輯伺服器)
  2. 可以透過 Azure Portal、Azure Powershell、REST API 或 T-SQL 進行設定
  3. 存取規則儲存在 master 資料庫
  4. 使用情境:administrator 或 多個資料庫有相同存取需求


Database-level firewall rule
  1. 啟用或停用存取個別資料庫
  2. 規則儲存在個別資料庫
  3. 可以透過 T-SQL 進行設定
  4. 盡可能使用 database-level firewall rule
  5. 強化安全細節且讓資料庫具有可攜性


Schema and object-level security features
在這個層級,SQL Database 與 SQL Server 使用相同的權限的模組。您可以透過 GRANT,REVOKE和 DENY 指令為資料庫庫中的用戶和角色分配資料庫物件權限。

Master  Database Role
Azure SQL 資料庫在 master 資料庫中提供兩個角色。您可以將使用者分指定角色,以便為其授予伺服器級權限。資料庫角色:
loginmanager : 具有創建和管理登入的權限
dbmanager : 具有創建和管理資料庫的權限

使用者
與 SQL Server 一樣,SQL資料庫要求將登入對應到它們需要訪問的每個資料庫中使用者。 首次配置伺服器時,您創建的系統管理員會自動映射到所有資料庫中的 dbo 使用者。

資料庫角色
SQL 資料庫提供與SQL Server 2016 中的資料庫中相同的角色。您可以參考 Database-level Roles 並進行設定。



防火牆設置

伺服器防火牆規則
你可以透過 Azure Portal 設定 SQL Database 伺服器防火牆規則,設定方式有三種:
1. 允許存取 Azure 服務
2. 允許當前客戶 IP:允許你目前訪問 Azure Portal 的 public IP Address
3. 允許一個或多個防火牆規則:每個規則擁有唯一名稱、起始 IP 與結束IP 所組成的範圍

Step 1. 在 Azure Portal 上點選您的 SQL Database → 防火牆設定


Step 2. 您可以點選 加入用戶端 IP 直接新增規則;也能開啟允許存取 Azure 服務 ;理所當然,您也能直接在下方輸入規則名稱與IP範圍進行設定。



資料庫防火牆規則
要管理資料庫防火牆規則,可以在想要設定防火牆規則的資料庫庫中使用 sp_set_database_firewall_rule sp_delete_database_firewall_rule 系統預存程序。您也可以使用 Azure REST API 或 Windows PowerShell 實現相同的功能。
若要查看特定資料庫中的資料庫防火牆規則,可以查詢 sys.database_firewall_rules 系統檢視。
透過 sys.database_firewall_rules 查詢資料庫防火牆設定


參考資料