【Azure Policy】添加策略用于审计Azure 网络安全组(NSG)规则 -- 只能特定的IP地址允许3389/22端口访问

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
性能测试 PTS,5000VUM额度
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 为了确保Azure虚拟机资源的安全管理,只有指定IP地址才能通过RDP/SSH远程访问。解决方案包括使用Azure Policy服务扫描所有网络安全组(NSG),检查入站规则中的3389和22端口,并验证源地址是否在允许的IP列表中。不符合条件的NSG规则将被标记为非合规。通过编写特定的Policy Rule并定义允许的IP地址参数,实现集中管控和合规性检查。

问题描述

对Azure上的虚拟机资源,需要进行安全管理。只有指定的IP地址才能够通过RDP/SSH远程到虚拟机上, 有如下几点考虑:

1) 使用Azure Policy服务,扫描订阅中全部的网络安全组(NSG: Network Security Group) 资源

2) 判断入站规则,判断是否是3389, 22端口

3) 判断源地址是否是被允许的IP

4) 对不满足条件的 NSG规则进行审计。提示不合规( Non-compliant )

需要满足以上要求的规则,如何来编写呢?

 

问题解答

使用Azure Policy可以完成对Azure资源的集中管制,以满足合规需求。为满足以上需求:

第一步:检查NSG资源,查看Inbound , port, source 值对应的属性名

在NSG的Overview页面,点击右上角的“JSON View”链接,查看资源的JSON内容,其中securityRules的内容为:


{

   "name": "RDP",

   "id": "/subscriptions/x-x-x-x/resourceGroups/xxxx/providers/Microsoft.Network/networkSecurityGroups/xxxx-xxx/securityRules/RDP",

   "etag": "W/\"xxxxxxx\"",

   "type": "Microsoft.Network/networkSecurityGroups/securityRules",

   "properties": {

       "provisioningState": "Succeeded",

       "protocol": "TCP",

       "sourcePortRange": "*",

       "destinationPortRange": "3389",

       "sourceAddressPrefix": "167.220.0.0/16",

       "destinationAddressPrefix": "*",

       "access": "Allow",

       "priority": 300,

       "direction": "Inbound",

       "sourcePortRanges": [],

       "destinationPortRanges": [],

       "sourceAddressPrefixes": [],

       "destinationAddressPrefixes": []

   }

}


其中:

  1. 资源类型为 type = Microsoft.Network/networkSecurityGroups/securityRules
  2. inbound的属性名为 direction
  3. 3389端口的属性名为destinationPortRange
  4. 而IP地址属性名为sourceAddressPrefix

它们,就是组成Policy Rule的内容

 

第二步:编写 Policy Rule

Policy的总体框架是:


{

 "mode": "All",

 "policyRule": {

   "if": {

      // 需要进行审计的条件

      //1: 资源的类型是 Microsoft.Network/networkSecurityGroups/securityRules

      //2: 入站规则 Inbound

      //3: 端口是3389 或 22

      //4: 如果不在允许的IP地址列表里,则需要审计

   },

   "then": {

     "effect": "audit"

   }

 },

 "parameters": {

    //输入参数,本例中是允许的IP地址列表

 }

}

第一个条件:扫描资源的类型为网络安全组的安全规则

"type": "Microsoft.Network/networkSecurityGroups/securityRules"

转换为Policy语句:

{

 "field": "type",

 "equals": "Microsoft.Network/networkSecurityGroups/securityRules"

}

第二个条件:判断规则的方向为入站方向

"direction": "Inbound"

转换为Policy语句:

    {

           "field": "Microsoft.Network/networkSecurityGroups/securityRules/direction",

           "equals": "Inbound"

    }

第三个条件:判断端口为3389 或 22

"destinationPortRange": "3389"  或 "destinationPortRange": "22"

转换为Policy语句:

       {

         "anyOf": [

           {

             "field": "Microsoft.Network/networkSecurityGroups/securityRules/destinationPortRange",

             "equals": "22"

           },

           {

             "field": "Microsoft.Network/networkSecurityGroups/securityRules/destinationPortRange",

             "equals": "3389"

           }

         ]

       }

第四个条件:判断IP地址,是否不在允许的列表中

"sourceAddressPrefix": "167.220.0.0/16"

转换为Policy语句:

{

  "field": "Microsoft.Network/networkSecurityGroups/securityRules/sourceAddressPrefix",

   "notIn": "[parameters('allowedIPs')]"

}

 

第三步:准备参数(允许的IP地址作为输入参数)

因为被允许的IP地址应该是多个,所以准备为一个Array对象, 参数名称为:allowedIPs。

结构如下:

"parameters": {

     "allowedIPs": {

       "type": "Array",

       "metadata": {

         "displayName": "Allowed IPs",

         "description": "The list of allowed IPs for resources."

       },

       "defaultValue": [

         "192.168.1.1","x.x.x.x"

       ]

     }

   }

完整的Policy示例:

{
    "mode": "All",
    "policyRule": {
        "if": {
            "allOf": [
                {
                    "field": "type",
                    "equals": "Microsoft.Network/networkSecurityGroups/securityRules"
                },
                {
                    "field": "Microsoft.Network/networkSecurityGroups/securityRules/direction",
                    "equals": "Inbound"
                },
                {
                    "anyOf": [
                        {
                            "field": "Microsoft.Network/networkSecurityGroups/securityRules/destinationPortRange",
                            "equals": "22"
                        },
                        {
                            "field": "Microsoft.Network/networkSecurityGroups/securityRules/destinationPortRange",
                            "equals": "3389"
                        }
                    ]
                },
                {
                    "field": "Microsoft.Network/networkSecurityGroups/securityRules/sourceAddressPrefix",
                    "notIn": "[parameters('allowedIPs')]"
                }
            ]
        },
        "then": {
            "effect": "audit"
        }
    },
    "parameters": {
        "allowedIPs": {
            "type": "Array",
            "metadata": {
                "displayName": "Allowed IPs",
                "description": "The list of allowed IPs for resources."
            },
            "defaultValue": [
                "192.168.1.1","x.x.x.x"
            ]
        }
    }
}


最终效果:

 

 

参考资料

Using arrays in conditions: https://learn.microsoft.com/en-us/azure/governance/policy/how-to/author-policies-for-arrays#using-arrays-in-conditions

deny-nsg-inbound-allow-all: https://github.com/Azure/azure-policy/blob/master/samples/Network/deny-nsg-inbound-allow-all/azurepolicy.json

Azure Policy definitions audit effect: https://learn.microsoft.com/en-us/azure/governance/policy/concepts/effect-audit

 



当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!

相关文章
|
7天前
|
存储 安全 网络安全
云计算与网络安全的博弈:云服务的安全挑战与应对策略
【8月更文挑战第37天】在云计算日益成为企业和个人数据存储与处理的首选平台的今天,网络安全问题也随之凸显。本文将深入探讨云计算环境中的网络安全挑战,包括数据泄露、服务中断和恶意攻击等,并提供相应的安全策略和技术解决方案。通过实际代码示例,展示如何在云环境中实施有效的安全措施,以保护数据安全和确保服务的连续性。
124 67
|
3天前
|
云安全 安全 网络安全
云上防线:云计算时代的网络安全新策略
在数字化浪潮的推动下,云计算技术已成为企业信息技术架构的核心。然而,随之而来的网络安全挑战也日益严峻。本文旨在探讨云计算环境下的网络安全问题,并提出相应的安全策略。我们将从基础的云服务安全措施出发,深入到高级的信息保护技术,最后讨论如何通过合理的策略规划和人员培训,构建一道坚固的“云上防线”。
|
3天前
|
SQL 监控 安全
数字堡垒之下:网络安全的现代挑战与防御策略
在这个数字信息日益增长的时代,网络安全已成为保护个人隐私和企业资产的关键战场。本文将深入探讨网络安全中常见的漏洞、先进的加密技术以及提升安全意识的重要性。通过分析最新的网络攻击案例和防御措施,我们旨在为读者提供一套实用的网络安全知识框架,帮助大众构建更为坚固的数字防线。
20 7
|
2天前
|
监控 安全 网络安全
云端的守护者:云计算中的网络安全挑战与策略
在数字时代的浪潮中,云计算以其灵活性和可扩展性成为了企业信息技术架构的核心。然而,随之而来的网络安全问题也日益凸显。本文将探讨云计算环境下的网络安全挑战,分析云服务模型的安全考量,并提出有效的安全防御措施。通过深入浅出的方式,旨在为读者提供一套清晰的云计算网络安全指南,确保数据的安全与隐私保护,同时促进企业的健康发展。
|
2天前
|
安全 网络安全 量子技术
数字堡垒之下:网络安全与信息保护的现代策略
在数字化浪潮中,网络安全成为守护个人隐私与企业资产的关键盾牌。本文将深入探讨网络安全漏洞的成因与对策,加密技术的最新进展,以及提升安全意识的重要性。从网络攻击的演变到防御机制的升级,我们将一同穿梭于这场看不见硝烟的战争中,揭示保护信息安全的现代策略。
8 1
|
4天前
|
存储 安全 网络安全
云端防御:云计算时代的网络安全新策略
【8月更文挑战第40天】随着云计算技术的飞速发展,企业与个人越来越依赖于云服务来处理数据和运行应用程序。然而,这种依赖也带来了新的安全挑战。本文将探讨在云计算环境中维护网络安全的重要性,并介绍如何通过实施先进的安全策略和技术来保护云基础设施免受网络威胁。我们将从基础的云服务安全措施谈起,逐步深入到更复杂的信息安全实践,最后通过一个简单的代码示例说明如何在云环境中部署一个安全的Web应用程序。
|
7天前
|
云安全 安全 网络安全
云计算环境下的网络安全策略与实践
【9月更文挑战第6天】在数字化浪潮中,云计算已成为企业转型和创新的强大引擎。随之而来的网络安全挑战亦日益突出,成为制约云服务发展的关键因素。本文深入探讨了云计算环境中的安全风险,并提出了一系列切实可行的网络安全策略。从基础的数据加密到高级的身份验证机制,再到细致的访问控制和入侵检测系统的应用,我们细致勾勒出一幅全面的云计算安全蓝图。通过实例分析,文章揭示了安全策略在实际场景中的应用效果,并对未来云计算安全的发展趋势进行了前瞻性的预测。旨在为云计算服务提供商和用户双方提供指导,共同构筑更为坚固的网络安全防线。
|
9天前
|
存储 安全 网络安全
云计算时代下的网络安全挑战与策略
在数字化浪潮的推动下,云计算已成为企业信息技术架构的核心。然而,随着云服务的广泛应用,网络安全问题亦日益凸显。本文将探讨云计算环境下的主要安全挑战,并分析如何通过策略和技术手段加强网络安全防护,以保障数据安全和业务连续性。
|
11天前
|
存储 安全 网络安全
云计算与网络安全的协同演进:探索云服务中的信息安全策略
【9月更文挑战第2天】随着云计算技术的飞速发展,企业和用户越来越依赖于云服务来存储和处理数据。然而,这种依赖也带来了新的安全挑战,尤其是在数据保护和隐私方面。本文将探讨云计算环境中的网络安全问题,并提出一些有效的信息安全策略。我们将从基本的云服务模型出发,分析潜在的安全风险,进而介绍如何通过技术手段和管理措施来加强安全防护。最后,文章将讨论如何通过持续的安全评估和员工培训来提升整体的安全意识。
|
10天前
|
安全 网络安全 云计算
云计算时代下的网络安全挑战与应对策略
在数字化转型的浪潮中,云计算已成为推动企业成长的强大引擎。然而,随之而来的网络安全问题也日益凸显,成为制约云服务发展的关键因素。本文将深入探讨云计算环境下的网络安全挑战,并提出相应的应对策略,旨在为企业构建一个更加安全、可靠的云环境。