使用 Azure 防火牆原則來定義規則階層

安全性系統管理員必須管理防火牆,並確保跨內部部署和雲端部署的合規性。 關鍵元件是能夠讓應用程式小組彈性實作 CI/CD 管線,以自動化方式建立防火牆規則。

Azure 防火牆原則可讓您定義規則階層並強制執行合規性:

  • 提供階層式結構,在子應用程式小組原則之上重疊中央基本原則。 基本原則的優先順序較高,可在子原則之前執行。
  • 使用 Azure 自訂角色定義來防止意外移除基本原則,並提供訂用帳戶或資源群組中規則集合群組的選擇性存取權。

解決方案概觀

此範例的高階步驟如下:

  1. 在安全性小組資源群組中建立基本防火牆原則。
  2. 在基本原則中定義 IT 安全性特定規則。 這會新增一組通用規則以允許/拒絕流量。
  3. 建立繼承基本原則的應用程式小組原則。
  4. 在原則中定義應用程式小組特定規則。 您也可以從預先存在的防火牆移轉規則。
  5. 建立 Azure Active Directory 自訂角色,以提供規則集合群組的精細存取權,並在防火牆原則範圍新增角色。 在下列範例中,銷售小組成員可以編輯銷售小組防火牆原則的規則集合群組。 這同樣適用於資料庫和工程小組。
  6. 在原則與對應的防火牆之間建立關聯性。 Azure 防火牆只能有一個指派的原則。 這需要每個應用程式小組都有自己的防火牆。

小組和需求

建立防火牆原則

  • 基本防火牆原則。

為每個應用程式小組建立原則:

  • 銷售防火牆原則。 銷售防火牆原則會繼承基本防火牆原則。
  • 資料庫防火牆原則。 資料庫防火牆原則會繼承基本防火牆原則。
  • 工程防火牆原則。 工程防火牆原則也會繼承基本防火牆原則。

原則階層

建立自訂角色以存取規則集合群組

每個應用程式小組都會定義自訂角色。 角色會定義作業和範圍。 允許應用程式小組為各自的應用程式編輯規則集合群組。

使用下列高階程序來定義自訂角色:

  1. 取得訂用帳戶:

    Select-AzSubscription -SubscriptionId xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx

  2. 執行以下命令:

    Get-AzProviderOperation "Microsoft.Support/*" | FT Operation, Description -AutoSize

  3. 使用 Get-AzRoleDefinition 命令來輸出 JSON 格式的讀者角色。

    Get-AzRoleDefinition -Name "Reader" | ConvertTo-Json | Out-File C:\CustomRoles\ReaderSupportRole.json

  4. 在編輯器中開啟 ReaderSupportRole.json 檔案。

    下圖顯示了 JSON 輸出。 如需不同屬性的相關資訊,請參閱 Azure 自訂角色

   {
     "Name": "Reader",
     "Id": "acdd72a7-3385-48ef-bd42-f606fba81ae7",
     "IsCustom": false,
     "Description": "Lets you view everything, but not make any changes.",
     "Actions": [
      "*/read"
     ],
     "NotActions": [],
     "DataActions": [],
     "NotDataActions": [],
     "AssignableScopes": [
       "/"
     ]
   }
  1. 編輯 JSON 檔案以新增

    */read", "Microsoft.Network/*/read", "Microsoft.Network/firewallPolicies/ruleCollectionGroups/write

    作業至 Actions 屬性。 請務必在讀取作業之後包含逗號。 此動作可讓使用者建立和更新規則集合群組。

  2. AssignableScopes 中,新增下列格式的訂用帳戶識別碼:

    /subscriptions/xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx

    您必須新增明確的訂用帳戶識別碼,否則無法將角色匯入您的訂用帳戶。

  3. 刪除 Id 屬性行,並將 IsCustom 屬性變更為 true。

  4. NameDescription 屬性變更為 AZFM規則集合群組作者這個角色的使用者可以編輯防火牆原則規則集合群組

您的 JSON 檔案類似下列範例:

{

    "Name":  "AZFM Rule Collection Group Author",
    "IsCustom":  true,
    "Description":  "Users in this role can edit Firewall Policy rule collection groups",
    "Actions":  [
                    "*/read",
                    "Microsoft.Network/*/read",
                     "Microsoft.Network/firewallPolicies/ruleCollectionGroups/write"
                ],
    "NotActions":  [
                   ],
    "DataActions":  [
                    ],
    "NotDataActions":  [
                       ],
    "AssignableScopes":  [
                             "/subscriptions/xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx"]
}
  1. 若要建立新的自訂角色,請使用 New-AzRoleDefinition 命令並指定 JSON 角色定義檔案。

    New-AzRoleDefinition -InputFile "C:\CustomRoles\RuleCollectionGroupRole.json

列出自訂角色

若要列出所有自訂角色,您可以使用 Get-AzRoleDefinition 命令:

Get-AzRoleDefinition | ? {$_.IsCustom -eq $true} | FT Name, IsCustom

您也可以在 Azure 入口網站中看見自訂角色。 移至您的訂用帳戶,選取 [存取控制 (IAM)]、[角色]。

SalesAppPolicy

SalesAppPolicy 讀取權限

如需詳細資訊,請參閱教學課程:使用 Azure PowerShell 建立 Azure 自訂角色

將使用者新增至自訂角色

在入口網站中,您可以將使用者新增至 AZFM 規則集合群組作者角色,並提供防火牆原則的存取權。

  1. 從入口網站,選取應用程式小組防火牆原則 (例如,SalesAppPolicy)。
  2. 選取 [存取控制]。
  3. 選取 [新增角色指派]。
  4. 將使用者/使用者群組 (例如,銷售小組) 新增至角色。

針對其他防火牆原則,重複此程序。

摘要

具有自訂角色的防火牆原則現在可提供防火牆原則規則集合群組的選擇性存取權。

使用者無權:

  • 刪除 Azure 防火牆或防火牆原則。
  • 更新防火牆原則階層或 DNS 設定或威脅情報。
  • 更新不是 AZFM 規則集合群組作者群組成員的防火牆原則。

安全性系統管理員可以使用基本原則來強制執行防護措施,並在企業需要時封鎖特定類型的流量 (例如 ICMP)。

後續步驟

深入了解 Azure 防火牆原則